Composables

Android Navigation 3

Community

HoangNguyen0403

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"

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>.
  • NavDisplay renders 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:

  1. Replace string routes with data objects/classes.
  2. Replace NavHost with NavDisplay.
  3. Replace NavController.navigate() with direct list manipulation.
  4. Replace navArgument with 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>.
  • NavDisplay handles all routes in entryProvider.
  • ./gradlew build succeeds.

Anti-Patterns

  • No string-based routes: Use Kotlin data objects/classes for type safety.
  • No NavController for new projects: Use NavDisplay with 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.

You're subscribed

The next lesson lands in on Wednesday.