~/talk

Nav2, Nav3… Or Roll Your Own? — Building to Understand Nav3’s Design Intent

TalkinJapaneseat DroidKaigi 2026 · 2026-09-01..09-03· [android, frontend-architecture]
links:none on file
slides:none on file

Shows how to build a Compose navigation system starting from mutableStateListOf<Route>() and evolving it through six versions to address seven concrete problems: back stack history, surviving process death using rememberSaveable with Kotlin serialization, scoping per-route ViewModels via composition locals, and creating a responsive two-pane layout with a SceneStrategy. Compares each homemade implementation to Nav3 internals (NavBackStack, NavEntryDecorator, NavKeySerializer), discusses multi-module serializer decisions, and demonstrates a working prototype while noting Nav3 still handles animations and lifecycle edge cases the simple version does not.

AI-written summary · about

  1. 0:00Introduction
  2. 1:15Nav3 challenges DIY
  3. 2:21Simple screen transitions
  4. 3:05Back stack intro
  5. 5:54Screen rotation state
  6. 6:38Home button serialization
  7. 8:25Serializer usage
  8. 9:09Nav3 back stack
  9. 11:45Search box state loss
  10. 13:30Screen state saving
  11. 15:40Nav3 state saving
  12. 17:31ViewModel scope
  13. 21:06Nav3 ViewModel lifecycle
  14. 22:30Tablet 2-pane layout
  15. 29:05Nav3 scenes strategies
  16. 29:46Multi-module challenges
  17. 31:55Multi-module implementation
  18. 35:54Nav3 multi-module
  19. 38:08Nav3 strengths limits
  20. 39:16Migration summary
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.