Novedades sobre productos

La versión 3 de Jetpack Navigation es estable

Lectura de 3 min
Don Turner
Ingeniera de Relaciones con Desarrolladores

La versión 1.0 de Jetpack Navigation 3 es estable 🎉. Úsala en tus apps de producción hoy mismo. JetBrains ya la usa en su app de KotlinConf.

Navigation 3 es una nueva biblioteca de navegación creada desde cero para adoptar el estado de Jetpack Compose. Te brinda control total sobre la pila de actividades, te ayuda a conservar el estado de navegación y te permite crear diseños adaptativos con facilidad (como el de lista-detalles). Incluso hay una versión multiplataforma de JetBrains.

¿Por qué una biblioteca nueva?

La biblioteca original de Jetpack Navigation (ahora Nav2) se diseñó hace 7 años y, si bien cumple bien con sus objetivos originales y se ha mejorado de forma iterativa, la forma en que se compilan las apps ahora cambió fundamentalmente. 

La programación reactiva con una IU declarativa ahora es la norma. Nav3 adopta este enfoque. Por ejemplo, NavDisplay (el componente de IU de Nav3 que muestra tus pantallas) simplemente observa una lista de claves (cada una representa una pantalla) respaldada por el estado de Compose y actualiza su IU cuando cambia esa lista.

nav-display.png

Nav2 también puede dificultar tener una única fuente de información para tu estado de navegación, ya que tiene su propio estado interno. Con Nav3, proporcionas tu propio estado, lo que te brinda control total.

Por último, solicitaste más flexibilidad y personalización. En lugar de tener una sola API monolítica, Nav3 proporciona APIs más pequeñas y desacopladas (o "bloques de compilación") que se pueden combinar para crear funcionalidades complejas. Nav3 usa estos componentes básicos para proporcionar valores predeterminados razonables para casos de uso de navegación bien definidos. 

Este enfoque te permite hacer lo siguiente: 

Obtén más información sobre su diseño y sus funciones en el blog de lanzamiento

Migración desde Navigation 2

Si ya usas Nav2, específicamente Navigation Compose, deberías considerar migrar a Nav3. Para ayudarte con esto, hay una guía de migración. Los pasos clave son los siguientes: 

  1. Agrega las dependencias de Navigation 3.
  2. Actualiza tus rutas de navegación para implementar NavKey. Tus rutas no tienen que implementar esta interfaz para usar Nav3, pero, si lo hacen, puedes aprovechar la función rememberNavBackStack de Nav3 para crear una pila de actividades persistente.
  3. Crea clases para mantener y modificar tu estado de navegación, que es donde se almacenan tus pilas de historial.
  4. Reemplaza NavController por estas clases.
  5. Mueve tus destinos del NavGraph de NavHost a un entryProvider.
  6. Reemplaza NavHost por NavDisplay.

Experimentamos con la migración de agentes de IA

Te recomendamos que experimentes con el uso de un agente de IA para leer la guía de migración y realizar los pasos en tu proyecto. Para probar esta función con el modo agente de Gemini en Android Studio, haz lo siguiente:

  • Guarda esta versión de Markdown de la guía en tu proyecto.
  • Pega esta instrucción en el agente (pero no presiones Intro): "Migra este proyecto a Navigation 3 con ".
  • Escribe @migration-guide.md. Esto proporcionará la guía como contexto al agente. 

Como siempre, asegúrate de revisar cuidadosamente los cambios que realice el agente de IA, ya que puede cometer errores. 

Nos encantaría saber cómo se desempeñaron tú o tu agente. Envía tus comentarios aquí.

Recetas de navegación útiles para situaciones comunes

Para los casos de uso comunes, pero con matices, tenemos un repositorio de recetas. En este ejemplo, se muestra cómo combinar las APIs de Nav3 de una manera particular, lo que te permite elegir o modificar la receta según tus necesidades específicas. Si una receta resulta ser popular, consideraremos "graduar" las partes no matizadas de la receta a la biblioteca principal de Nav3 o a las bibliotecas de complementos. 

code-recipes.png

Actualmente, hay 19 recetas, incluidas las siguientes: 

Actualmente, estamos trabajando en una receta de vínculos directos, además de una integración de Koin, y tenemos muchas otras planificadas. Un ingeniero de JetBrains también publicó una versión multiplataforma de Compose de las recetas.

Si tienes un caso de uso común para el que te gustaría ver una receta, envía una solicitud de receta

Resumen

Para comenzar a usar Nav3, consulta la documentación y las recetas. Además, no te pierdas una semana completa de contenido técnico, que incluye lo siguiente: 

  • Un video detallado sobre la API que abarca la modularización, las animaciones y los diseños adaptables.
  • Una sesión de Pregúntame lo que sea (AMA) en vivo con los ingenieros que crearon Nav3

La Semana de Destacados de Nav3 comienza el 1 de diciembre de 2025. 


Como siempre, si encuentras algún problema, infórmalo aquí

Escrito por:

Seguir leyendo