Implement common use cases with Jetpack Navigation 3
See the codeJetpack Navigation 3 is a library for app navigation. This repository contains recipes for how to use its APIs to implement common navigation use cases. Each recipe introduces a single concept. Instead of making existing recipes more complex, there should be a new recipe for that particular concept.
Every Navigation 3 release will be an opportunity for patterns you see in recipes to "graduate" and become (optional) helpers in the library itself. Then we'll update the recipe to use that prebuilt helper, thus ensuring that the recipes continue to be a good way to approach these kinds of problems.
Recipes on the main branch use the latest (which may be an alpha or snapshot) version of Nav3. For recipes that use stable versions, check the releases page.
These are the recipes and what they demonstrate.
Parcelable routes.LocalLifecycleOwner within entry content.Read the guide to deeplinking.
UriDeepLinkMatcher.UriDeepLinkMatcher.DeepLinkMatcher.withBackStack and correct "Up" navigation behavior.DeepLinkMatcher to parse deep links from DeepLinkRequest extras.DeepLinkSerializer for URI deep link keys with non-primitive arguments.DeepLinkMatcher.Filter instances using infix functions (and, or).DeepLinkKey interface.Scene and SceneStrategy (see video of UI behavior below).Examples showing how to use the layouts provided by the Compose Material3 Adaptive Navigation3 library
Note: If you find a bug or have a feature request for Material3 Adaptive Scenes please file it here. Don't file an issue on this repository.
DialogSceneDecoratorStrategy to display a scene in a dialog.viewModel()hiltViewModel()koinViewModel()assistedMetroViewModel()ViewModel between different screens (entries) in Navigation 3 using a custom NavEntryDecorator.retain to persist values as their UI is hidden while on the back stack, and how to implement a custom NavEntryDecoratorThe most upvoted recipe requests will be considered for implementation. Don't see your recipe? File a request for one here
The following is a screen recording showing the navigation behavior of a custom, list-detail Scene.

Clone this repository and open the root folder in Android Studio. Each recipe is contained in its own package with its own Activity.
If the issue is directly related to this project, as in, it's reproducible without modifying this project's source code, then please file an issue on github. If you've found an issue with the Jetpack Navigation 3 library, please file an issue on the issue tracker.
We'd love to accept your contributions. Please follow these instructions.
CMP recipes can be found here.
Copyright 2025 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
739 followers · starred May 2025
1,043 followers · starred Nov 2025
125 followers · starred Nov 2025
273 followers · starred May 2025
Implement common use cases with Jetpack Navigation 3
See the codeJetpack Navigation 3 is a library for app navigation. This repository contains recipes for how to use its APIs to implement common navigation use cases. Each recipe introduces a single concept. Instead of making existing recipes more complex, there should be a new recipe for that particular concept.
Every Navigation 3 release will be an opportunity for patterns you see in recipes to "graduate" and become (optional) helpers in the library itself. Then we'll update the recipe to use that prebuilt helper, thus ensuring that the recipes continue to be a good way to approach these kinds of problems.
Recipes on the main branch use the latest (which may be an alpha or snapshot) version of Nav3. For recipes that use stable versions, check the releases page.
These are the recipes and what they demonstrate.
Parcelable routes.LocalLifecycleOwner within entry content.Read the guide to deeplinking.
UriDeepLinkMatcher.UriDeepLinkMatcher.DeepLinkMatcher.withBackStack and correct "Up" navigation behavior.DeepLinkMatcher to parse deep links from DeepLinkRequest extras.DeepLinkSerializer for URI deep link keys with non-primitive arguments.DeepLinkMatcher.Filter instances using infix functions (and, or).DeepLinkKey interface.Scene and SceneStrategy (see video of UI behavior below).Examples showing how to use the layouts provided by the Compose Material3 Adaptive Navigation3 library
Note: If you find a bug or have a feature request for Material3 Adaptive Scenes please file it here. Don't file an issue on this repository.
DialogSceneDecoratorStrategy to display a scene in a dialog.viewModel()hiltViewModel()koinViewModel()assistedMetroViewModel()ViewModel between different screens (entries) in Navigation 3 using a custom NavEntryDecorator.retain to persist values as their UI is hidden while on the back stack, and how to implement a custom NavEntryDecoratorThe most upvoted recipe requests will be considered for implementation. Don't see your recipe? File a request for one here
The following is a screen recording showing the navigation behavior of a custom, list-detail Scene.

Clone this repository and open the root folder in Android Studio. Each recipe is contained in its own package with its own Activity.
If the issue is directly related to this project, as in, it's reproducible without modifying this project's source code, then please file an issue on github. If you've found an issue with the Jetpack Navigation 3 library, please file an issue on the issue tracker.
We'd love to accept your contributions. Please follow these instructions.
CMP recipes can be found here.
Copyright 2025 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
739 followers · starred May 2025
1,043 followers · starred Nov 2025
125 followers · starred Nov 2025
273 followers · starred May 2025