Navigation 3
Organizationandroid
Learn how to install and migrate to Jetpack Navigation 3, and how to implement features and patterns such as deep links, multiple backstacks, scenes (dialogs, bottom sheets, list-detail, two-pane, supporting pane), conditional navigation (such as logged-in navigation versus anonymous), returning results from flows, integration with Hilt, ViewModel, Kotlin, and view interoperability.
Overview
- Repository
- android/skills
- Publisher
- android
- Stars
- 10.5K
- Forks
- 695
- Bundled files
- 27
- License
- Apache-2.0
- Updated
- Nov 11, 2026
Installation
tmp=$(mktemp -d)
git clone --depth 1 https://github.com/android/skills.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/navigation/navigation-3" ~/.claude/skills/navigation-3
rm -rf "$tmp"tmp=$(mktemp -d)
git clone --depth 1 https://github.com/android/skills.git "$tmp"
mkdir -p ~/.codex/skills
cp -R "$tmp/navigation/navigation-3" ~/.codex/skills/navigation-3
rm -rf "$tmp"Install the Navigation 3 agent skill from https://github.com/android/skills/tree/main/navigation/navigation-3 into this project's skills folder.Instructions
Migration guide
- Navigation 2 to Navigation 3 migration guide: Step-by-step guide to migrate an Android application from Navigation 2 to Navigation 3, covering dependency updates, route changes, state management, and UI component replacements.
Requirements
- Guide: Migrate to type-safe navigation in Compose : Step-by-step guide to migrating an Android application from string-based navigation to Type-Safe Navigation in Jetpack Compose using Jetpack Navigation 2.
Developer documentation
- Navigation 3. Search documentation for more information on basics, saving and managing navigation state, modularizing navigation code, creating custom layouts using Scenes, animating between destinations, or applying logic or wrappers to destinations.
Recipes
Code examples showcasing common patterns.
Basic API usage
- Basic: Shows most basic API usage.
- Saveable back stack: Shows basic API usage with a persistent back stack.
- Entry provider DSL: Shows basic API usage using the entryProvider DSL.
Common UI
- Common UI: Demonstrates how to implement a common navigation UI pattern with a bottom navigation bar and multiple back stacks, where each tab in the navigation bar has its own navigation history.
Deep links
- Static URI: Shows how to handle simple static URI deep links.
- URI with Arguments: Shows how to parse path and query arguments from a deep link.
- Synthetic BackStack: Shows how to handle deep links with a synthetic back stack.
- Custom Matcher: Shows how to implement custom deep link matching logic.
Scenes
Use built-in Scenes
- Dialog: Shows how to create a Dialog.
Create custom Scenes
- BottomSheet: Shows how to create a BottomSheet destination.
- List-Detail Scene: Demonstrates how to implement adaptive list-detail layouts using the Navigation 3 Scenes API.
- Two pane Scene: Demonstrates how to implement adaptive two-pane layouts using the Navigation 3 Scenes API.
Material Adaptive
- Material List-Detail: Demonstrates how to implement an adaptive list-detail layout using Material 3 Adaptive.
- Material Supporting Pane: Demonstrates how to implement an adaptive supporting pane layout using Material 3 Adaptive.
Animations
- Animations: Shows how to override the default animations for all destinations and a single destination.
- Conditional Transitions: Shows how to implement conditional transition animations.
Common back stack behavior
- Multiple back stacks: Shows how to create multiple top level routes, each with its own back stack. Top level routes are displayed in a navigation bar allowing users to switch between them. State is retained for each top level route, and the navigation state persists config changes and process death.
Conditional navigation
- Conditional navigation: Switch to a different navigation flow when a condition is met. For example, for authentication or first-time user onboarding.
Lifecycle
- Lifecycle Owner: Shows how to use and observe Lifecycle in Navigation 3.
Architecture
- Modularized navigation code (Hilt): Demonstrates how to decouple navigation code into separate modules using Hilt or Dagger for DI.
- Modularized navigation code (Koin): Demonstrates how to decouple navigation code into separate modules using Koin for DI.
Working with ViewModel
Passing navigation arguments
- Basic ViewModel : Navigation arguments are passed to a
ViewModelconstructed usingviewModel()
Returning results
- Returning Results as Events : Returning results as events to content in another
NavEntry - Returning Results as State : Returning results as state stored in a
CompositionLocal
Bundled files
references/android/guide/navigation/navigation-3/index.md4 KBreferences/android/guide/navigation/navigation-3/migration-guide.md27 KBreferences/android/guide/navigation/navigation-3/recipes/animations.md7 KBreferences/android/guide/navigation/navigation-3/recipes/basic.md4 KBreferences/android/guide/navigation/navigation-3/recipes/basicdsl.md4 KBreferences/android/guide/navigation/navigation-3/recipes/basicsaveable.md4 KBreferences/android/guide/navigation/navigation-3/recipes/bottomsheet.md8 KBreferences/android/guide/navigation/navigation-3/recipes/common-ui.md9 KBreferences/android/guide/navigation/navigation-3/recipes/conditional-transitions.md9 KBreferences/android/guide/navigation/navigation-3/recipes/conditional.md10 KBreferences/android/guide/navigation/navigation-3/recipes/deeplinks-custommatcher.md8 KBreferences/android/guide/navigation/navigation-3/recipes/deeplinks-staticuri.md6 KBreferences/android/guide/navigation/navigation-3/recipes/deeplinks-syntheticbackstack.md8 KBreferences/android/guide/navigation/navigation-3/recipes/deeplinks-uriarguments.md16 KBreferences/android/guide/navigation/navigation-3/recipes/dialog.md5 KBreferences/android/guide/navigation/navigation-3/recipes/lifecycle-owner.md9 KBreferences/android/guide/navigation/navigation-3/recipes/material-listdetail.md7 KBreferences/android/guide/navigation/navigation-3/recipes/material-supportingpane.md7 KBreferences/android/guide/navigation/navigation-3/recipes/modular-hilt.md13 KBreferences/android/guide/navigation/navigation-3/recipes/modular-koin.md14 KBreferences/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md17 KBreferences/android/guide/navigation/navigation-3/recipes/passingarguments.md17 KBreferences/android/guide/navigation/navigation-3/recipes/results-event.md10 KBreferences/android/guide/navigation/navigation-3/recipes/results-state.md10 KBreferences/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md16 KBreferences/android/guide/navigation/navigation-3/recipes/scenes-twopane.md10 KBreferences/android/guide/navigation/type-safe-destinations.md5 KB
FAQ
What does Navigation 3 do?
Learn how to install and migrate to Jetpack Navigation 3, and how to implement features and patterns such as deep links, multiple backstacks, scenes (dialogs, bottom sheets, list-detail, two-pane, supporting pane), conditional navigation (such as logged-in navigation versus anonymous), returning results from flows, integration with Hilt, ViewModel, Kotlin, and view interoperability.
Who made Navigation 3?
android (an organization) publishes it in the android/skills repository on GitHub.
Is Navigation 3 free?
Yes. Navigation 3 is open source, published by android under the Apache-2.0 license.
What comes with Navigation 3?
Its instructions and 27 files the agent reads only when a task needs them, such as references, examples or scripts.
Which agents can use 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.