Android Navigation at scale
summary
Jetpack Navigation proves inadequate in a large multi-module app, so a custom navigation engine is built: single-source state-of-stacks model with renderer, actions/reducer and a router that dispatches navigation; it preserves fragment lifecycle, supports saving/restoring stacks, and avoids fragile per-feature hacks. Deep links are handled by generated registries + bytecode patching via колонист, plus a tree-based deeplink matcher that validates conflicts and reduces matching from full-graph scans; the implementation is already migrating real features and shows measurable performance and correctness gains.
AI-written summary · about
chapters (19)
- 0:00Introduction
- 2:53Navigation problems in large projects
- 4:39Jetpack Navigation limitations
- 7:28Fragment issues and solutions
- 10:34Custom navigation library
- 12:00New library architecture
- 15:14Fragment management
- 18:09Root Render and stack handling
- 21:51Actions and reducers in navigation
- 23:18Entry point: controller and host
- 27:22Deep link implementation
- 29:40Deep link targets and components
- 33:55Deep link code generation
- 37:27Handling default parameters
- 40:36Deep link to graph mapping
- 44:08Regex issues
- 45:34Optimization with trees
- 48:05Summary and library adoption
- 48:51Q&A
related talks
41mBottom Navigation Headache
39mDynamic Navigation in Modularized Apps
33mAdventures in Navigation
28mJetpack Navigation
27mManaging In-App Navigation with the Navigation Architecture Component
38mAdventures in Navigation
34mAndroid Jetpack: Manage UI navigation with navigation controller
36mNavigation and the Single Activity: Learnings from a Skeptic
