Jetpack Navigation 3
SkillAI & modelsInstall and migrate to Jetpack Navigation 3. Use when implementing Navigation 3 patterns including NavDisplay, NavKey routes, deep links, multiple backstacks, scenes (dialogs, bottom sheets), or migrating from Navigation 2.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Jetpack Navigation 3 skill
What this skill tells your AI
The instructions your AI receives, as published by hoangnguyen0403/agent-skills-standard in skills/android/android-navigation-3/SKILL.md and read by ahel’s review.
Priority: P1 (HIGH)
Guide for implementing and migrating to Navigation 3 in Jetpack Compose.
Core concepts
Navigation 3 replaces the previous NavHost/NavController pattern with a simpler, state-driven approach:
- Routes are Kotlin data objects/classes (not strings).
- Back stack is a plain
mutableStateListOf<Any>. NavDisplayrenders the current route based on a lambda.
Basic usage
val backStack = remember { mutableStateListOf<Any>(RouteHome) }
NavDisplay(
backStack = backStack,
onBack = { backStack.removeLastOrNull() },
entryProvider = { key ->
when (key) {
is RouteHome -> NavEntry(key) { HomeScreen(onNavigate = { backStack.add(it) }) }
is RouteDetail -> NavEntry(key) { DetailScreen(key.id) }
else -> error("Unknown route: $key")
}
}
)
Migration from Navigation 2
See migration guide for step-by-step conversion from NavHost/NavController to NavDisplay.
Key changes:
- Replace string routes with data objects/classes.
- Replace
NavHostwithNavDisplay. - Replace
NavController.navigate()with direct list manipulation. - Replace
navArgumentwith data class properties.
Common patterns
See recipes for code examples:
- Basic navigation with arguments
- Bottom navigation with multiple backstacks
- Deep links (basic and with synthetic backstack)
- Dialogs and bottom sheets
- Conditional navigation (auth flows)
- Returning results between screens
- Modularized navigation with Hilt or Koin
Verification
- Routes are data objects/classes, no string-based routing.
- Back stack is a
mutableStateListOf<Any>. -
NavDisplayhandles all routes inentryProvider. -
./gradlew buildsucceeds.
Anti-Patterns
- No string-based routes: Use Kotlin data objects/classes for type safety.
- No NavController for new projects: Use
NavDisplaywith a state list. - No
remember { navController() }: Navigation 3 doesn't use NavController.
References
Signals
- GitHub stars
- 565
- Forks
- 163
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
android-navigation-3- Source
- github.com/hoangnguyen0403/agent-skills-standard