What problem does it solve?
Jetpack Navigation 3 can be difficult to adopt because routes, back stack modeling, and UI display concepts change significantly from Navigation 2, especially when you need deep links, multiple back stacks, dialogs/bottom sheets, and result passing.
Core Features & Use Cases
- Migration from Navigation 2 to Navigation 3: Update dependencies and rework navigation primitives into Navigation 3’s
NavKey, NavDisplay, and entry-provider architecture.
- Type-safe Compose destinations: Replace string routes with serializable Kotlin types for safer argument handling.
- Real-world Navigation patterns: Implement deep links, multiple back stacks, conditional flows (e.g., logged-in vs anonymous), Scenes (dialogs, bottom sheets, list-detail, two-pane/supporting pane), and return results from flows using events or state.
- Integration readiness: Apply patterns alongside Hilt and ViewModels and ensure Compose interoperability where needed.
Quick Start
Migrate your app from Navigation 2 to Navigation 3 by following the Navigation 3 migration guide, then convert your routes to NavKey, move destinations into an entryProvider, and render them with NavDisplay.