Jetpack Navigation 3 : La Révolution Stable pour Compose est Arrivée !

Le monde du développement Android est en effervescence ! Google vient d’annoncer la version stable de Jetpack Navigation 3, une refonte complète de sa bibliothèque de navigation. Conçue pour épouser parfaitement l’approche déclarative de Jetpack Compose, cette nouvelle mouture promet une flexibilité et un contrôle inédits pour les développeurs exigeants.

Article rédigé par Don Turner, Ingénieur en Relations Développeurs.

Attendue de pied ferme par la communauté, la version 1.0 de Jetpack Navigation 3 est désormais stable. C’est le signal pour tous les artisans du code : vous pouvez l’intégrer dès aujourd’hui dans vos applications de production ! Les équipes de JetBrains ont déjà sauté le pas, l’utilisant avec succès dans leur application KotlinConf, preuve de sa robustesse.

Nav3 n’est pas une simple mise à jour, c’est une réécriture complète pensée pour embrasser pleinement le modèle d’état de Jetpack Compose. Elle offre un contrôle total sur votre pile de retour (back stack), facilite la persistance de l’état de navigation et ouvre la porte à la création aisée de layouts adaptatifs, comme les fameux affichages liste-détail. Cerise sur le gâteau pour les développeurs multiplateformes, il existe même une version cross-platform signée JetBrains.

Pourquoi une nouvelle approche était-elle nécessaire ?

L’ancienne bibliothèque Jetpack Navigation (désormais Nav2), conçue il y a 7 ans, a bien servi son objectif initial, mais le paysage du développement a radicalement changé. L’heure est à la programmation réactive et aux interfaces utilisateur déclaratives. Nav3 s’inscrit dans cette vision.

Par exemple, le composant UI de Nav3, NavDisplay, observe simplement une liste de « clés » (chacune représentant un écran) adossée à l’état de Compose, et met à jour son interface lorsque cette liste évolue. C’est une danse fluide et réactive entre l’état et l’affichage, comme on peut le voir dans le schéma ci-dessous.

Figure 1. NavDisplay observe les changements d’une liste adossée à l’état de Compose.

Nav2 pouvait parfois compliquer l’établissement d’une source unique de vérité pour l’état de navigation, car il gérait son propre état interne. Avec Nav3, vous fournissez votre propre état, vous donnant un contrôle absolu – une véritable bénédiction pour les architectures robustes.

Enfin, les développeurs ont clamé plus de flexibilité et de personnalisation. Plutôt qu’une API monolithique, Nav3 propose des APIs plus petites et découplées, de véritables « briques de construction » qui peuvent être assemblées pour créer des fonctionnalités complexes. Nav3 utilise lui-même ces briques pour offrir des comportements par défaut intelligents pour les cas d’usage courants.

Cette approche modulaire vous permet de :

Pour en savoir plus sur sa conception et ses fonctionnalités, lisez l’article de lancement original.

Migration vers Nav3 : Le guide du routard développeur

Si vous utilisez déjà Nav2, en particulier Navigation Compose, une migration vers Nav3 est fortement recommandée. Pour vous accompagner dans cette quête, un guide de migration détaillé est à votre disposition. Les étapes clés sont les suivantes :

  1. Ajoutez les dépendances de Navigation 3.

  2. Mettez à jour vos routes de navigation pour implémenter NavKey. Ce n’est pas obligatoire, mais cela vous permettra de profiter de la fonction rememberNavBackStack de Nav3 pour une pile de retour persistante.

  3. Créez des classes pour gérer et modifier votre état de navigation – c’est là que vos piles de retour seront conservées.

  4. Remplacez NavController par ces nouvelles classes d’état.

  5. Déplacez vos destinations du NavGraph de NavHost vers un entryProvider.

  6. Remplacez NavHost par NavDisplay.

Expérimentez la migration assistée par IA

Pour les plus aventureux, pourquoi ne pas laisser un agent IA se charger de la migration ? Vous pouvez tenter l’expérience avec Gemini en mode Agent d’Android Studio :

  • Sauvegardez cette version Markdown du guide dans votre projet.

  • Collez cette invite à l’agent (sans appuyer sur Entrée) : « Migrate this project to Navigation 3 using « .

  • Tapez @migration-guide.md – cela fournira le guide comme contexte à l’agent.

Comme toujours, examinez attentivement les modifications apportées par l’IA – elle peut faire des erreurs ! Nous sommes curieux de savoir comment vous ou votre agent avez performé, n’hésitez pas à nous envoyer vos retours ici.

Des « recettes » pour maîtriser tous les scénarios

Pour les cas d’usage courants mais nuancés, un dépôt de « recettes » est à votre disposition. Ces guides montrent comment combiner les APIs de Nav3 de manière spécifique, vous permettant de choisir ou d’adapter la recette à vos besoins. Si une recette s’avère populaire, ses parties non nuancées pourraient être intégrées à la bibliothèque Nav3 principale ou à des bibliothèques complémentaires. C’est l’intelligence collective à l’œuvre !

Figure 2. Les recettes de code utiles peuvent être intégrées à une bibliothèque.

Actuellement, 19 recettes sont déjà disponibles, couvrant des sujets comme :

Nous travaillons activement sur une recette pour les deeplinks et une intégration Koin, avec de nombreuses autres en préparation. Un ingénieur de JetBrains a même publié une version Compose Multiplatform des recettes. Si vous avez un cas d’usage courant pour lequel vous aimeriez une recette, n’hésitez pas à déposer une demande !

En Bref : Plongez dans l’univers Nav3 !

Pour bien démarrer avec Nav3, consultez la documentation officielle et explorez le dépôt de recettes. Gardez également un œil sur une semaine complète de contenu technique à venir, avec au programme :

  • Une vidéo « deep dive » sur l’API, couvrant la modularisation, les animations et les layouts adaptatifs.

  • Une session « Ask Me Anything » (AMA) en direct avec les ingénieurs qui ont conçu Nav3.

La « Nav3 Spotlight Week » débutera le 1er décembre 2025. Comme toujours, si vous rencontrez des problèmes, n’hésitez pas à les signaler ici. Bonne navigation !

Mots-clés : Jetpack Navigation 3, Android, Jetpack Compose, Développement Mobile, Kotlin, Navigation, API, Gemini, JetBrains, Reactive Programming

Source : Article original

Retour en haut