Unusable or Undebuggable? Rebelling against best practices
summary
Compose LazyColumn drops to 5–10 frames per second in debug on Wear OS devices like the Samsung Galaxy Watch 4, so a drop‑in replacement is implemented that is LazyColumn backed by RecyclerView using a ComposeView per item, a RecyclerView adapter, and submitList diffs to get item animations and preserved input/inertia. Rotary crown and focus issues are solved by forwarding generic motion events to the focused view. The hack runs and makes debug-mode scrolling usable enough to develop before switching to release builds.
AI-written summary · about
chapters (10)
- 0:00Best practices rebellion
- 1:33LazyColumn animations
- 2:55Performance on Galaxy Watch 4
- 4:43Unusable or undebuggable
- 6:52LazyColumn vs RecyclerView
- 9:38Hacking RecyclerView-backed LazyColumn
- 13:13State-aware LazyColumn scope
- 16:26Rotary input focus issues
- 18:15R8 performance optimization
- 19:41Debugging workflow & final thoughts
related talks
06mAround a watch: Handling rotary input in Wear OS
06mAround a watch: Handling rotary input in Wear OS
28mCreate beautiful, power-efficient apps for Wear OS
32mDeveloping Wear OS Apps with Jetpack Compose
37mUsing Performance Management Tools: Firebase Performance Monitoring and Macrobenchm…
39mView performance deep dive
39mLazy and amazy – Lazy layouts in Compose
33mLive: Debugging Recycler View Performance using Systrace/Perfetto
