[Product News](https://developer.android.com/blog/categories/product-news.md.txt)

# Jetpack Navigation 3 is stable

3 min read ![](https://developer.android.com/static/blog/assets/jetpack_navigation_d1257f9ca2_Z16ze9q.webp) 19 Nov 2025 [![View Don Turner's profile](https://developer.android.com/static/blog/assets/don_bccb8c3f75_Z1p9Cc7.webp)](https://developer.android.com/blog/authors/don-turner.md.txt) [Don Turner](https://developer.android.com/blog/authors/don-turner.md.txt) Developer Relations Engineer [Jetpack Navigation 3](https://developer.android.com/guide/navigation/navigation-3.md.txt) version 1.0 is stable 🎉. Go ahead and use it in your production apps today. JetBrains are [already using it in their KotlinConf app](https://github.com/JetBrains/kotlinconf-app/pull/504).

Navigation 3 is a new navigation library built from the ground up to embrace Jetpack Compose [state](https://developer.android.com/develop/ui/compose/state.md.txt#state-in-composables). It gives you full control over your back stack, helps you retain navigation state, and allows you to easily create adaptive layouts (like list-detail). [There's even a cross-platform version from JetBrains](https://kotlinlang.org/docs/multiplatform/whats-new-compose-110.html#support-for-navigation-3).

**Why a new library?**

The original Jetpack Navigation library (now Nav2) was designed 7 years ago and, while it serves its original goals well and has been improved iteratively, the way apps are now built has fundamentally changed.

Reactive programming with a declarative UI is now the norm. Nav3 embraces this approach. For example, NavDisplay (the Nav3 UI component that [displays your screens](https://developer.android.com/guide/navigation/navigation-3/basics.md.txt#display-back)) simply observes a list of keys (each one representing a screen) backed by Compose state and updates its UI when that list changes.
![nav-display.png](https://developer.android.com/static/blog/assets/nav_display_6244a3347c_2rGTvN.webp)

Nav2 can also make it difficult to have a [single source of truth](https://developer.android.com/topic/architecture.md.txt#single-source-of-truth) for your navigation state because it has its own internal state. With Nav3, you supply your own state, which gives you complete control.

Lastly, you asked for more flexibility and customizability. Rather than having a single, monolithic API, Nav3 provides smaller, decoupled APIs (or "building blocks") that can be combined together to create complex functionality. Nav3 itself uses these building blocks to provide sensible defaults for well-defined navigation use cases.

This approach allows you to:

- [Customize screen animations](https://developer.android.com/guide/navigation/navigation-3/animate-destinations.md.txt) at both a global and individual level
- Display multiple panes at the same time, and [create flexible layouts using the Scenes API](https://developer.android.com/guide/navigation/navigation-3/custom-layouts)
- Easily replace Nav3 components with your own implementations if you want custom behavior

Read more about its design and features in the [launch blog](https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html).

**Migrating from Navigation 2**

If you're already using Nav2, specifically [Navigation Compose](https://developer.android.com/develop/ui/compose/navigation), you should consider migrating to Nav3. To assist you with this, there is a [migration guide](https://developer.android.com/guide/navigation/navigation-3/migration-guide.md.txt). The key steps are:

1. Add the [navigation 3 dependencies](https://developer.android.com/guide/navigation/navigation-3/get-started.md.txt).
2. Update your navigation routes to implement NavKey. Your routes don't have to implement this interface to use Nav3, but if they do, you can take advantage of Nav3's rememberNavBackStack function to create a persistent back stack.
3. Create classes to hold and modify your navigation state - this is where your back stacks are held.
4. Replace NavController with these classes.
5. Move your destinations from NavHost's NavGraph into an entryProvider.
6. Replace NavHost with NavDisplay.

*Experimenting with AI agent migration*

You may want to experiment with using an AI agent to read the migration guide and perform the steps on your project. To try this with [Gemini in Android Studio's Agent Mode](https://developer.android.com/studio/gemini/agent-mode.md.txt):

- Save [this markdown version of the guide](https://raw.githubusercontent.com/android/nav3-recipes/refs/heads/main/docs/migration-guide.md) into your project.
- Paste this prompt to the agent (but don't hit enter): "Migrate this project to Navigation 3 using ".
- Type @migration-guide.md - this will supply the guide as context to the agent.

As always, make sure you carefully review the changes made by the AI agent - it can make mistakes!

We'd love to hear how you or your agent performed, please [send your feedback here](https://issuetracker.google.com/issues/new?component=1750212&template=2102223&title=%5BMigration%5D).

**Tasty navigation recipes for common scenarios**

For common but nuanced use cases, we have [a recipes repository](https://github.com/android/nav3-recipes). This shows how to combine the Nav3 APIs in a particular way, allowing you to choose or modify the recipe to your particular needs. If a recipe turns out to be popular, we'll consider "graduating" the non-nuanced parts of it into the core Nav3 library or add-on libraries.
![code-recipes.png](https://developer.android.com/static/blog/assets/code_recipes_fba1048f97_Z1V9YB1.webp)

There are currently 19 recipes, including for:

- [Multiple back stacks](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/multiplestacks)
- [Modularization and dependency injection](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/modular/hilt)
- [Passing navigation arguments to ViewModels](https://github.com/android/nav3-recipes?tab=readme-ov-file#passing-navigation-arguments-to-viewmodels) (including using Koin)
- [Returning results from screens](https://github.com/android/nav3-recipes?tab=readme-ov-file#returning-results) by events and by shared state

We're [currently working on a deeplinks recipe](https://github.com/android/nav3-recipes/pull/97), plus a [Koin integration](https://github.com/android/nav3-recipes/pull/118), and have plenty of others planned. An [engineer from JetBrains](https://github.com/terrakok) has also published a [Compose Multiplatform version of the recipes](https://github.com/terrakok/nav3-recipes).

If you have a common use case that you'd like to see a recipe for, please [file a recipe request](https://github.com/android/nav3-recipes/issues/new?title=%5BRecipe+request%5D).

**Summary**

To get started with Nav3, check out [the docs](https://developer.android.com/guide/navigation/navigation-3.md.txt) and [the recipes](https://github.com/android/nav3-recipes). Plus, keep an eye out for a whole week of technical content including:

- A deep dive video on the API covering modularization, animations and adaptive layouts.
- A live Ask Me Anything (AMA) with the engineers who built Nav3.

Nav3 Spotlight Week starts Dec 1st 2025.

<br />

As always, if you find any issues, please [file them here](https://issuetracker.google.com/issues/new?component=1750212&template=2102223).
- [#Nav3](https://developer.android.com/blog/topics/nav3.md.txt)
- [#Jetpack Navigation](https://developer.android.com/blog/topics/jetpack-navigation.md.txt)
Written by:

-

  ## [Don Turner](https://developer.android.com/blog/authors/don-turner.md.txt)

  ###### Developer Relations Engineer

  [read_more
  View profile](https://developer.android.com/blog/authors/don-turner) ![View Don Turner's profile](https://developer.android.com/static/blog/assets/don_bccb8c3f75_Z1p9Cc7.webp) ![View Don Turner's profile](https://developer.android.com/static/blog/assets/don_bccb8c3f75_Z1p9Cc7.webp)
Continue reading
- [![View Fahd Imtiaz's profile](https://developer.android.com/static/blog/assets/Fahd_Imtiaz_259fcb7c47_Z2vO4ST.webp)](https://developer.android.com/blog/authors/fahd-imtiaz.md.txt) 19 Dec 2025 19 Dec 2025 ![](https://developer.android.com/static/blog/assets/Android_adaptives_festivity_01_blog_f70d48134f_Z103sxP.webp) [Product News](https://developer.android.com/blog/categories/product-news.md.txt)

  ## [Goodbye Mobile Only, Hello Adaptive: Three essential updates from 2025 for building adaptive apps](https://developer.android.com/blog/posts/goodbye-mobile-only-hello-adaptive.md.txt)

  [arrow_forward](https://developer.android.com/blog/posts/goodbye-mobile-only-hello-adaptive.md.txt) In 2025 the Android ecosystem has grown far beyond the phone. Today, developers have the opportunity to reach over 500 million active devices, including foldables, tablets, XR, Chromebooks, and compatible cars.
  [Fahd Imtiaz](https://developer.android.com/blog/authors/fahd-imtiaz.md.txt) • 2 min read
  - [#Jetpack Navigation](https://developer.android.com/blog/topics/jetpack-navigation.md.txt)
  - [#Adaptive apps](https://developer.android.com/blog/topics/adaptive-apps.md.txt)
  - [#Compose](https://developer.android.com/blog/topics/compose.md.txt)
  - [#Android 16](https://developer.android.com/blog/topics/android-16.md.txt)
  - +2 ↩
- [![View Michelle Martin's profile](https://developer.android.com/static/blog/assets/unnamed_29_8358471ffe_MSkhy.webp)](https://developer.android.com/blog/authors/michelle-martin.md.txt) 10 Nov 2026 10 Nov 2026 ![](https://developer.android.com/static/blog/assets/ABL_Sign_in_with_Google_Plugin_for_Unity_Gaming_DESIGN_Header_and_metadata_V01_26433b75fe_Z260GOa.webp) [Product News](https://developer.android.com/blog/categories/product-news.md.txt)

  ## [Powering Seamless Player Sign-In: Introducing the Open-Source Sign in with Google Plugin for Unity](https://developer.android.com/blog/posts/open-source-google-sign-in-unity.md.txt)

  [arrow_forward](https://developer.android.com/blog/posts/open-source-google-sign-in-unity.md.txt) With Unity powering over half of all mobile titles worldwide, first impressions matter. For game developers, a smooth, reliable player onboarding experience is essential to driving day-one retention and long-term engagement.
  [Michelle Martin](https://developer.android.com/blog/authors/michelle-martin.md.txt) • 1 min read
- [![View Amy Zeppenfeld's profile](https://developer.android.com/static/blog/assets/Amyzeppenfeld_50a8b9e7f8_Z17af4b.webp)](https://developer.android.com/blog/authors/amy-zeppenfeld.md.txt)[![View Vinny DaSilva's profile](https://developer.android.com/static/blog/assets/unnamed_5_cdab7ecfba_Z1iwWr5.webp)](https://developer.android.com/blog/authors/vinny-da-silva.md.txt) 06 Nov 2026 06 Nov 2026 ![](https://developer.android.com/static/blog/assets/ABL_149_Strapi_A2_B_8fa837edce_1zewyL.webp) [Product News](https://developer.android.com/blog/categories/product-news.md.txt)

  ## [Build for an expanding lineup of Android XR devices with production-ready tools from Android Developer Summit](https://developer.android.com/blog/posts/build-android-xr-devices-tools.md.txt)

  [arrow_forward](https://developer.android.com/blog/posts/build-android-xr-devices-tools.md.txt) From full immersion at home to glanceable experiences on the go, building on Android XR lets you meet users at any moment across the entire spectrum of spatial applications. At Android Developer Summit, we marked an exciting milestone with the launch of XREAL AURA.
  [Amy Zeppenfeld](https://developer.android.com/blog/authors/amy-zeppenfeld.md.txt), [Vinny DaSilva](https://developer.android.com/blog/authors/vinny-da-silva.md.txt) • 3 min read
  - [#Android XR](https://developer.android.com/blog/topics/android-xr.md.txt)
Stay in the loop


Get the latest Android development insights delivered to your inbox
weekly.
[mail
Subscribe](https://developer.android.com/subscribe) ![A 3D illustration of the Android mascot, wearing a jetpack that's emitting a large cloud of bubbles](https://developer.android.com/static/blog/assets/rocket-android.CVJQZOf1_1zVtXW.webp)