navigation-3

Migrate Android Jetpack Compose apps from Navigation 2 to Navigation 3 with NavDisplay and typed NavKey routes.

6.6k|388|Updated Mar 16, 2026
One-click install
npx skills add https://github.com/android/skills --skill navigation-3-android
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: navigation-3
Source: https://github.com/android/skills/tree/main/navigation/navigation-3
Command: npx skills add https://github.com/android/skills --skill navigation-3-android

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Navigation 3 migration turns app navigation code into a new model with custom back stack control, Scenes, and typed routes, which commonly causes regressions when teams rely on Navigation 2 patterns like string routes and NavHost graphs.

Core Features & Use Cases

  • Navigation 2 to Navigation 3 migration guidance: update dependencies, replace routes with NavKey implementations, rebuild navigation state, and swap NavHost for NavDisplay.
  • Type-safe navigation and route modeling: migrate from string-based destinations to serializable Kotlin types that provide compile-time safety for arguments.
  • Advanced Navigation 3 patterns: deep links (including deep link recipes), conditional navigation flows, multiple back stacks (top-level tabs), Scenes (dialogs, bottom sheets, list-detail, two-pane), Hilt/Kotlin architecture integration, ViewModel argument passing, and returning results as events or state.

Quick Start

Ask the AI agent to generate a step-by-step migration plan for moving your Jetpack Compose app from Jetpack Navigation 2 to Navigation 3, including deep links, multiple back stacks, Scenes, Hilt integration, and returning results.

Frequently Asked Questions about navigation-3

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I migrate my Jetpack Compose app from Navigation 2 to Navigation 3?

Migrate to Navigation 3 by replacing NavController and NavHost patterns with NavDisplay, updating routes to typed NavKey implementations, and moving destinations into an entryProvider. You must also rebuild your back stack and state model to align with the new architecture.

How does typed navigation work in Jetpack Navigation 3?

Typed navigation in Navigation 3 replaces string-based destinations with serializable Kotlin types implementing NavKey. This provides compile-time safety for navigation arguments and requires configuring an entryProvider to map destinations to the new typed routes.

Can I use Hilt and ViewModels with Navigation 3 Scenes?

Yes, Navigation 3 supports Hilt and Kotlin architecture integration. You can handle navigation arguments in ViewModels and configure adaptive Scenes like dialogs, bottom sheets, list-detail, and two-pane layouts alongside your Hilt dependency injection setup.

What is the best way to handle deep links and multiple back stacks in Navigation 3?

Navigation 3 handles deep links and multiple back stacks by utilizing custom back stack control and scene strategies. You configure metadata for top-level tabs and use deep link recipes to manage conditional navigation flows within the NavDisplay component.

How do I pass results between destinations in Jetpack Navigation 3?

Pass results between destinations in Navigation 3 by using event or state approaches. You configure your typed NavKey routes and ViewModel argument passing to return and observe results without relying on the older Navigation 2 saved state handle patterns.