navigation3

  
Navigation 3 est une nouvelle bibliothèque de navigation conçue pour fonctionner avec Compose.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
8 octobre 2025 - - - 1.0.0-alpha11

Déclarer des dépendances

Pour ajouter une dépendance à navigation3, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :

Groovy

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.0.0-alpha11"
    implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha11"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11")
    implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11")
}

Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Aucune note de version pour cet artefact.

Version 1.0

Version 1.0.0-alpha11

8 octobre 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha11. La version 1.0.0-alpha11 contient ces commits.

Modifications apportées à l'API

  • La méthode calculateScene sur SceneStrategy n'est plus @Composable. Au lieu de cela, envisagez de déplacer ce travail vers la construction de votre méthode SceneStrategy (c'est-à-dire dans une méthode rememberMySceneStrategy()) qui vous permet de définir entièrement la durée de vie de toutes les valeurs rememberSaveable ou des instructions clés remember à partir des valeurs correctes. (If1733, b/448709506)
  • Le paramètre onBack pour SceneStrategy.calculateScene a été déplacé dans le nouveau champ de récepteur SceneStrategyScope afin d'indiquer plus clairement qu'il s'agit d'un paramètre facultatif et de fournir un point d'extension pour les futures fonctionnalités Navigation3. (I3aea3, b/448460407)
  • Le lambda onBack transmis à NavDisplay et à votre SceneStrategy ne fournit plus de paramètre count: Int pour indiquer quand plusieurs entrées doivent être supprimées. Au lieu de cela, le lambda () -> Unit sera désormais appelé plusieurs fois de suite dans le rare cas où votre scène demande l'affichage de plusieurs entrées. (Idedb5, b/446989346)
  • Supprimez la classe NavEntryWrapper et remplacez sa fonctionnalité par une classe NavEntry finale avec un nouveau constructeur secondaire qui accepte un NavEntry avec un nouveau contenu. Cela permettra de continuer à prendre en charge l'encapsulation d'une entrée avec du nouveau contenu. (I7da2a, b/444447130)
  • La fonction navEntryDecorator, qui crée et renvoie un NavEntryDecorator, a été supprimée et remplacée par la classe NavEntryDecorator, qui est désormais publique et ouverte à la sous-classe. (If81f8, b/444447434, b/447381176)
  • SavedStateNavEntryDecorator a été renommé SaveableStateHolderNavEntryDecorator, car il décore les entrées avec un SaveableStateHolder. Le décorateur a également été refactorisé d'une fonction à une classe, car il s'agit fonctionnellement d'une fabrique pour NavEntryDecorator. (Ie6013, b/447381176)
  • Les affichages personnalisés utilisant SceneState comme alternative à NavDisplay ne sont plus tenus d'utiliser le local de composition LocalEntriesToRenderInCurrentScene, qui est désormais interne. (Ic40ef, b/414668196)
  • Suppression de SceneSetupNavEntryDecorator et rememberSceneSetupNavEntryDecorator() de la surface de l'API publique. Cette fonctionnalité est désormais incluse par défaut, sans que vous ayez besoin de l'inclure manuellement. (Ieae42, b/444479133)
  • NavEntry, DialogScene, SinglePaneScene et SceneState implémentent désormais "equals". (I96121)
  • L'interface de scène comporte un nouveau champ de métadonnées permettant d'associer des métadonnées spécifiques à la scène pour NavDisplay. Cela permet à une scène de remplacer les métadonnées sur le NavDisplay, par exemple avec des transitions. (I1fd96, b/443955625)
  • Simplifiez la signature rememberNavBackStack en supprimant le paramètre de type générique redondant. La fonction accepte désormais vararg elements: NavKey. (I03e45)
  • Les animations par défaut pour NavDisplay font désormais partie de l'API commune, ce qui permet de les appeler depuis toutes les plates-formes. (I71af9, b/447147159)
  • Renommez EntryProviderBuilder en EntryProviderScope pour refléter précisément que la classe est un DSL Kotlin fournissant un champ d'application pour créer NavEntries. (Ia7465)

Correction de bugs

  • rememberNavBackStack() applique désormais la sérialisation polymorphe pour NavKey et nécessite un SavedStateConfiguration personnalisé configuré pour assurer la restauration correcte de l'état. La documentation KDoc a été mise à jour pour refléter l'exigence selon laquelle tous les sous-types NavKey doivent être enregistrés dans le module SerializersModule fourni. (I6de37,I782f2, b/446664383)

Version 1.0.0-alpha10

24 septembre 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha10. La version 1.0.0-alpha10 contient ces commits.

Modifications apportées à l'API

  • Ajoutez une nouvelle surcharge NavDisplay qui accepte une liste de NavEntry<T> décorée par rememberDecoratedNavEntries. (I4025b, b/441940314)
  • Déplacement de DialogScene vers un nouveau package. (Ia5840)
  • Suppression de l'API publique DecorateNavEntry. Utilisez plutôt rememberDecoratedNavEntries pour encapsuler une NavEntry avec une liste de décorateurs. (Id8c09)
  • L'UI Navigation3 fournit désormais de nouvelles propriétés transitionSpec par défaut. (Ibcabd)
  • Ajout d'un nouvel objet SceneState pour faciliter la gestion des scènes. Cela fournit également une nouvelle surcharge NavDisplay qui accepte SceneState et NavigationEventState. (Idfb46, b/444479133)
  • NavDisplay vous permet désormais de personnaliser les transitions en fonction de la destination et de la source de Scene en examinant les currentState et targetState de Transition. (I906cc, b/443872322)
  • NavigationEventInfo est désormais un abstract class au lieu d'un interface. Mettez à jour toutes les implémentations personnalisées pour qu'elles héritent de la classe (par exemple, data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)
  • Les API du gestionnaire navigationevent-compose sont mises à jour. NavigationEventHandler et NavigationBackHandler (et leurs variantes) sont désormais compatibles avec une nouvelle surcharge qui accepte les NavigationEventState hissés. Les surcharges simples (prenant currentInfo) sont conservées et utilisent désormais ce nouveau modèle d'état en interne. (Ic3251, b/444734264)
  • Toutes les API Scene ont été déplacées de navigation3-ui vers navigation3-runtime. Cela signifie qu'elles sont désormais disponibles sur toutes les plates-formes compatibles avec navigation3-runtime. (I431d0, b/444449993)
  • Ajout d'une nouvelle surcharge rememberDecoratedNavEntries qui accepte une liste de NavEntry à décorer. Les entrées d'entrée peuvent déjà être décorées avec d'autres décorateurs d'entrée. (I5a034, b/444230270)
  • Supprimer les paramètres de type générique navigation3 (I02540)
  • Amélioration de la gestion des génériques pour le DSL entryProvider. Si vous importiez androidx.navigation3.runtime.entry auparavant, vous n'avez plus à le faire. (I299fc)
  • Limitez la surcharge NavBackStackSerializer basée sur la réflexion à Android. Cela empêche les échecs de sérialisation d'exécution implicites sur les plates-formes non Android en imposant l'utilisation de la surcharge SavedStateConfiguration explicite dans le code multiplate-forme. (I73313, b/420443609)
  • Fais de NavigationEvent swipeEdge un @IntDef (Icee54, b/443950342)
  • Limitez la sérialisation NavBackStack à Android. Cela évite les échecs d'exécution sur les plates-formes non Android. Pour enregistrer l'état multiplate-forme, utilisez la surcharge rememberNavBackStack avec un SavedStateConfiguration explicite. (I1e418, b/420443609)

Correction de bugs

  • Correction d'un plantage lors de la prévisualisation du retour en arrière lorsqu'un NavDisplay imbriqué ne comporte qu'une seule entrée enfant. (I2cdc0, b/441933162)

Version 1.0.0-alpha09

10 septembre 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha09. La version 1.0.0-alpha09 contient ces commits.

Modifications apportées à l'API

  • DecoratedNavEntryProvider a été remplacé par rememberDecoratedNavEntries, qui crée et renvoie des NavEntries décorés avec la liste des décorateurs fournis (I0fe1c, b/441328236).
  • NavBackStack est désormais générique sur le type NavKey. Cela permet aux applications et aux bibliothèques de définir des types de clés personnalisés pour leurs piles de retour, au lieu d'être limitées à NavKey. (I4d190,Iad2f4, b/420443609)
  • NavBackStack est désormais @kotlinx.serialization.Serializable, ce qui permet d'enregistrer et de restaurer l'état de navigation en cas de fin du processus et de modification de la configuration sans code passe-partout supplémentaire. (I2c3cf, b/420443609)
  • RememberNavBackStack a été déplacé vers commonMain pour s'assurer qu'il est fourni sur toutes les cibles de plate-forme. (Id69e7, b/420443609)

Correction de bugs

  • NavDisplay déplace désormais correctement chaque NavEntry individuel vers le Lifecycle.State approprié. (I30aac, b/440145700)
  • Correction d'un problème qui empêchait NavDisplay d'ignorer les NavigationEventDispatcherOwner imbriqués définis via LocalNavigationEventDispatcherOwner de la bibliothèque NavigationEvent. (I6224a)

Modifications de la dépendance

Version 1.0.0-alpha08

27 août 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha08. La version 1.0.0-alpha08 contient ces commits.

Nouvelles fonctionnalités

  • Ajout de nouvelles cibles Kotlin Multiplatform (KMP) aux artefacts Navigation3 Runtime. Navigation3 Runtime est désormais compatible avec les plates-formes suivantes : JVM (Android et Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) et Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Remarque : Cela ne fournit pas de cibles KMP pour l'artefact Navigation3 UI. Sur d'autres plates-formes, vous devrez implémenter votre propre NavDisplay personnalisé. Si vous souhaitez que cette fonctionnalité soit prise en charge, veuillez voter pour le problème Jetbrains ici et suivre sa progression pour obtenir de l'aide supplémentaire.
  • L'objet NavDisplayInfo est désormais public et peut être utilisé pour récupérer la liste des entrées visibles à partir de NavDisplay. (Ibc91f)

Modifications apportées à l'API

  • Ajout d'un nouveau NavBackStackSerializer à utiliser conjointement avec rememberNavBackStack pour effectuer la restauration de l'état. rememberNavBackStack() accepte désormais également un SavedStateConfiguration qui peut être utilisé pour fournir votre propre configuration. (I2f4d2, I4cd58, b/420443609)

Correction de bugs

  • Correction d'un problème qui entraînait le déclenchement d'événements de cycle de vie incorrects lors de la navigation. (I8bf6d, b/425901162, b/434109022)

Problèmes connus

  • Un bug introduit par I8bf6d a fait que les cycles de vie étaient basés sur des scènes au lieu d'entrées individuelles, ce qui a cassé le cycle de vie pour tous les cas où le key fourni au NavEntry n'est pas un String ou votre NavEntry n'a pas remplacé le contentKey et ne l'a pas défini comme égal au key (notez que cela impose que votre clé puisse être enregistrée dans un Bundle). Ce problème a été résolu pour la prochaine version. (b/440145700)

Version 1.0.0-alpha07

13 août 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha07. La version 1.0.0-alpha07 contient ces commits.

Mise à jour de MinSdk

Modifications apportées à l'API

  • SavedStateNavEntryDecorator utilise désormais SaveableStateRegistry intégré à SaveableStateProvider pour enregistrer et restaurer les états. (If8d9a)
  • Le predictivePopTransitionSpec fournit désormais le bord de balayage en tant que paramètre, ce qui vous permet de personnaliser la transition en fonction du bord à partir duquel l'utilisateur a commencé le geste de prévisualisation du Retour. (I753a8)

Correction de bugs

  • Correction d'un problème qui entraînait le recalcul infini des scènes personnalisées, car la scène la plus récente n'était pas mémorisée. (I7ba84, b/418153031)

Mise à jour de la dépendance

Version 1.0.0-alpha06

30 juillet 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha06. La version 1.0.0-alpha06 contient ces commits.

Mise à jour de la dépendance

Version 1.0.0-alpha05

2 juillet 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha05. La version 1.0.0-alpha05 contient ces commits.

Nouveaux comportements

  • L'état de NavEntry est désormais strictement basé sur la liste actuelle des décorateurs transmis à NavDisplay. Cela signifie que les décorateurs doivent être échangés le long de vos piles "Retour" en cas de piles "Retour" multiples afin de préserver l'état des NavEntries sur la pile "Retour". Sinon, les états seront effacés comme si les entrées avaient été supprimées (au lieu d'être inversées). (I7a759, b/428033667)

Version 1.0.0-alpha04

18 juin 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha04. La version 1.0.0-alpha04 contient ces commits.

Modifications apportées à l'API

  • NavEntry.content est désormais privé. Pour appeler le contenu NavEntry, appelez la nouvelle API NavEntry.Content(), qui ne nécessite plus de paramètre key pour l'appel. (Icd0fd, b/420991203)
  • NavEntry.key est désormais un champ privé. NavEntry et ses états associés doivent être identifiés par le nouveau champ contentKey, qui est généré à partir du nouveau lambda contentKeyFactory et qui est défini par défaut sur un hachage enregistrable généré à partir de NavEntry.key. (I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812)

Modifications de la dépendance

  • Navigation3 dépend désormais du nouvel artefact androidx.navigationevent.compose.

Version 1.0.0-alpha03

4 juin 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha03. La version 1.0.0-alpha03 contient ces commits.

Correction de bugs

  • Navigation3 n'effacera plus les états de décorateur pour les backStacks qui ont été remplacés par une autre instance backStack. (I28a42, b/415076044)

Version 1.0.0-alpha02

23 mai 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha02. La version 1.0.0-alpha02 contient ces commits.

Correction de bugs

  • Correction d'un problème lié à SavedStateNavEntryDecorator qui entraînait des collisions pour différentes classes de données avec les mêmes valeurs de propriété. (b/418070648, Iff4775)
  • Correction d'un problème de classe manquante qui entraînait des plantages lors de l'exécution sans déclaration de dépendances explicites. (b/419049149, I4b4ed)

Version 1.0.0-alpha01

20 mai 2025

Publication d'androidx.navigation3:navigation3-*:1.0.0-alpha01. La version 1.0.0-alpha01 contient ces commits.

Nouvelles fonctionnalités

Navigation3 est une nouvelle bibliothèque de navigation conçue spécifiquement pour gérer la navigation dans les applications Jetpack Compose. L'artefact androidx.navigation3.runtime fournit les blocs de construction, tandis que l'artefact androidx.navigation3.ui fournit la couche UI via l'API NavDisplay. Les développeurs peuvent fournir leur propre état directement à la fonction composable NavDisplay, qui modifie le contenu en fonction des changements d'état du développeur.

@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey

val backStack = rememberNavBackStack(Home)

NavDisplay(backStack, entryProvider = entryProvider {
  entry<Home> {
    Column {
      Text(Home)
      Button(onClick = { backStack.add(Chat) } ) {
        Text(Go to Chat)
      } 
    }
  }
  entry<Chat> { /* My Composable Content */ }
})

Pour en savoir plus, consultez le guide Navigation3.