Android Navigation 3
CommunityHoangNguyen0403
Install 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.
Overview
- Repository
- HoangNguyen0403/agent-skills-standard
- Publisher
- HoangNguyen0403
- Stars
- 585
- Forks
- 163
- Bundled files
- 3
- License
- MIT
- Updated
- Nov 14, 2026
Installation
tmp=$(mktemp -d)
git clone --depth 1 https://github.com/HoangNguyen0403/agent-skills-standard.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/skills/android/android-navigation-3" ~/.claude/skills/android-navigation-3
rm -rf "$tmp"tmp=$(mktemp -d)
git clone --depth 1 https://github.com/HoangNguyen0403/agent-skills-standard.git "$tmp"
mkdir -p ~/.codex/skills
cp -R "$tmp/skills/android/android-navigation-3" ~/.codex/skills/android-navigation-3
rm -rf "$tmp"Install the Android Navigation 3 agent skill from https://github.com/HoangNguyen0403/agent-skills-standard/tree/develop/skills/android/android-navigation-3 into this project's skills folder.Instructions
Jetpack Navigation 3
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
Bundled files
FAQ
What does Android Navigation 3 do?
Install 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.
Who made Android Navigation 3?
HoangNguyen0403 (a community member) publishes it in the HoangNguyen0403/agent-skills-standard repository on GitHub.
Is Android Navigation 3 free?
Yes. Android Navigation 3 is open source, published by HoangNguyen0403 under the MIT license.
What comes with Android Navigation 3?
Its instructions and 3 files the agent reads only when a task needs them, such as references, examples or scripts.
Which agents can use Android Navigation 3?
Any coding agent that reads SKILL.md files, including Claude Code, Codex, Cursor, GitHub Copilot and Gemini CLI. The agent loads the skill when a task matches its description.
What are agent skills?
An agent skill is a folder with a SKILL.md file: instructions that teach a coding agent how to do one kind of task, and optionally files it can read while it works. The agent keeps only the skill's name and description in mind and reads the rest when a task calls for it.
How are agent skills different from MCP servers?
An MCP server gives an agent new tools to call, code that runs somewhere and returns results. A skill gives it knowledge: how to approach a task with the tools it already has. Many agents use both.
How can my agent test my Android app?
Robomori lets coding agents create, start and control Android emulators and devices from one command, so they can install your app, take screenshots and check dark mode, font sizes and languages.