navigation3

  
Navigation 3 es una nueva biblioteca de navegación diseñada para funcionar con Compose.
Actualización más reciente Versión estable Versión potencial Versión beta Versión alfa
8 de octubre de 2025 - - - 1.0.0-alpha11

Cómo declarar dependencias

Para agregar una dependencia en navigation3, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio de Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

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")
}

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

No hay notas de la versión para este artefacto.

Versión 1.0

Versión 1.0.0-alpha11

8 de octubre de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha11. La versión 1.0.0-alpha11 contiene estas confirmaciones.

Cambios en la API

  • El método calculateScene en SceneStrategy ya no es @Composable. En cambio, considera trasladar este trabajo a la construcción de tu método SceneStrategy (es decir, en un método rememberMySceneStrategy()) que te permita definir por completo la vida útil de cualquier valor de rememberSaveable o de las instrucciones clave de remember a partir de los valores correctos. (If1733, b/448709506)
  • El parámetro onBack para SceneStrategy.calculateScene se movió al nuevo alcance del receptor de SceneStrategyScope para dejar más claro que este es un parámetro opcional y proporcionar un punto de extensión para futuras funciones de Navigation3. (I3aea3, b/448460407)
  • La expresión lambda onBack que se pasa a NavDisplay y a tu SceneStrategy ya no proporciona un parámetro count: Int para indicar cuándo se deben quitar varias entradas. En cambio, la lambda () -> Unit ahora se llamará varias veces seguidas en el caso poco frecuente en el que tu escena solicite que aparezcan varias entradas. (Idedb5, b/446989346)
  • Quita la clase NavEntryWrapper y reemplaza su funcionalidad por una clase NavEntry final con un nuevo constructor secundario que tome un NavEntry con contenido nuevo. Esto permitirá seguir admitiendo el ajuste de una entrada con contenido nuevo. (I7da2a, b/444447130)
  • Se quitó la función navEntryDecorator, que crea y devuelve un NavEntryDecorator, y se reemplazó por la clase NavEntryDecorator, que ahora es pública y está abierta para la creación de subclases. (If81f8, b/444447434, b/447381176)
  • Se cambió el nombre de SavedStateNavEntryDecorator por SaveableStateHolderNavEntryDecorator, ya que decora las entradas con un SaveableStateHolder. El decorador también se refactorizó de una función a una clase, ya que, funcionalmente, es una fábrica para NavEntryDecorator. (Ie6013, b/447381176)
  • Las pantallas personalizadas que usan SceneState como alternativa a NavDisplay ya no requieren usar el elemento LocalEntriesToRenderInCurrentScene de composición local, que ahora es interno. (Ic40ef, b/414668196)
  • Se quitaron SceneSetupNavEntryDecorator y rememberSceneSetupNavEntryDecorator() de la superficie de la API pública. Esta funcionalidad ahora se incluye de forma predeterminada sin necesidad de que la incluyas manualmente. (Ieae42, b/444479133)
  • NavEntry, DialogScene, SinglePaneScene y SceneState ahora implementan equals. (I96121)
  • La interfaz de Scene tiene un nuevo campo de metadatos para adjuntar metadatos específicos de la escena para NavDisplay. Esto permite que una escena anule los metadatos en el objeto NavDisplay, por ejemplo, con transiciones. (I1fd96, b/443955625)
  • Se simplificó la firma de rememberNavBackStack quitando el parámetro de tipo genérico redundante. La función ahora acepta vararg elements: NavKey. (I03e45)
  • Las animaciones predeterminadas para NavDisplay ahora forman parte de la API común, lo que permite llamarlas desde todas las plataformas. (I71af9, b/447147159)
  • Se cambió el nombre de EntryProviderBuilder a EntryProviderScope para reflejar con precisión que la clase es un DSL de Kotlin que proporciona un alcance para compilar NavEntries. (Ia7465)

Correcciones de errores

  • rememberNavBackStack() ahora aplica la serialización polimórfica para NavKey y requiere un SavedStateConfiguration personalizado que esté configurado para garantizar el restablecimiento correcto del estado. Se actualizó KDoc para reflejar el requisito de que todos los subtipos de NavKey deben registrarse en el SerializersModule proporcionado. (I6de37,I782f2, b/446664383)

Versión 1.0.0-alpha10

24 de septiembre de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.

Cambios en la API

  • Agrega una nueva sobrecarga de NavDisplay que tome una lista de NavEntry<T> decorada por rememberDecoratedNavEntries. (I4025b, b/441940314)
  • Se movió DialogScene a un paquete nuevo. (Ia5840)
  • Se quitó la API pública DecorateNavEntry. En su lugar, usa rememberDecoratedNavEntries para unir un NavEntry con una lista de decoradores. (Id8c09)
  • La IU de Navigation3 ahora proporciona nuevas propiedades transitionSpec predeterminadas. (Ibcabd)
  • Se agregó un nuevo objeto SceneState para ayudar a administrar escenas. Esto también proporciona una nueva sobrecarga de NavDisplay que toma el SceneState y el NavigationEventState. (Idfb46, b/444479133)
  • NavDisplay ahora te permite personalizar las transiciones en función de los elementos Scene a los que vas y desde los que vienes, ya que observa los Transition, currentState y targetState. (I906cc, b/443872322)
  • NavigationEventInfo ahora es un abstract class en lugar de un interface. Actualiza todas las implementaciones personalizadas para que hereden de la clase (p. ej., data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)
  • Se actualizaron las APIs del controlador navigationevent-compose. NavigationEventHandler y NavigationBackHandler (y sus variantes) ahora admiten una nueva sobrecarga que acepta NavigationEventStates elevadas. Las sobrecargas simples (que toman currentInfo) se conservan y ahora usan este nuevo modelo de estado de forma interna. (Ic3251, b/444734264)
  • Todas las APIs de Scene se movieron de navigation3-ui a navigation3-runtime. Esto significa que ahora están disponibles en todas las plataformas compatibles con navigation3-runtime. (I431d0, b/444449993)
  • Se agregó una nueva sobrecarga de rememberDecoratedNavEntries que toma una lista de NavEntry para decorar. Las entradas de entrada ya pueden estar decoradas con otros decoradores de entrada. (I5a034, b/444230270)
  • Se quitaron los parámetros de tipo comodín de navigation3 (I02540).
  • Se mejoró el manejo de elementos genéricos para el DSL de entryProvider. Si antes importabas androidx.navigation3.runtime.entry, ya no es necesario que lo hagas. (I299fc)
  • Restringe la sobrecarga de NavBackStackSerializer basada en la reflexión a Android. Esto evita fallas implícitas de serialización en tiempo de ejecución en plataformas que no son de Android, ya que se exige el uso de la sobrecarga SavedStateConfiguration explícita en el código multiplataforma. (I73313, b/420443609)
  • Haz que el swipeEdge de NavigationEvent sea un @IntDef (Icee54, b/443950342)
  • Se restringió la serialización de NavBackStack a Android. Esto evita fallas en el tiempo de ejecución en plataformas que no son de Android. Para guardar el estado en varias plataformas, usa la sobrecarga rememberNavBackStack con un SavedStateConfiguration explícito. (I1e418, b/420443609)

Correcciones de errores

  • Se corrigió una falla durante el gesto de atrás predictivo cuando el elemento NavDisplay anidado tiene una sola entrada secundaria. (I2cdc0, b/441933162)

Versión 1.0.0-alpha09

10 de septiembre de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.

Cambios en la API

  • Se reemplazó DecoratedNavEntryProvider por rememberDecoratedNavEntries, que crea y devuelve NavEntries decorados con la lista de decoradores proporcionados (I0fe1c, b/441328236).
  • NavBackStack ahora es genérico para el tipo NavKey. Esto permite que las apps y las bibliotecas definan tipos de claves personalizadas para sus pilas de historial, en lugar de estar restringidas a NavKey. (I4d190,Iad2f4, b/420443609)
  • NavBackStack ahora es @kotlinx.serialization.Serializable, lo que permite guardar y restablecer el estado de navegación en caso de cierre del proceso y cambios de configuración sin código adicional. (I2c3cf, b/420443609)
  • RememberNavBackStack se movió a commonMain para garantizar que se proporcione en todos los destinos de la plataforma. (Id69e7, b/420443609)

Correcciones de errores

  • NavDisplay ahora mueve correctamente cada NavEntry individual al Lifecycle.State correcto. (I30aac, b/440145700)
  • Se corrigió un problema por el que NavDisplay ignoraba cualquier NavigationEventDispatcherOwner anidado establecido a través de LocalNavigationEventDispatcherOwner de la biblioteca NavigationEvent. (I6224a)

Cambios de dependencia

Versión 1.0.0-alpha08

27 de agosto de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.

Nuevas funciones

  • Se agregaron nuevos destinos de Kotlin Multiplatform (KMP) a los artefactos de Navigation3 Runtime. Ahora, Navigation3 Runtime admite las siguientes plataformas en total: JVM (Android y computadoras), nativa (Linux, iOS, watchOS, macOS, MinGW) y web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Nota: Esto no proporciona destinos de KMP para el artefacto Navigation3 UI. En otras plataformas, deberás implementar tu propio NavDisplay personalizado. Si quieres que se admita, vota en el problema de Jetbrains aquí y haz un seguimiento del progreso para obtener asistencia adicional allí.
  • El objeto NavDisplayInfo ahora es público y se puede usar para recuperar la lista de entradas visibles de NavDisplay. (Ibc91f)

Cambios en la API

  • Se agregó un nuevo NavBackStackSerializer para usarlo junto con rememberNavBackStack para realizar la restauración del estado. rememberNavBackStack() ahora también toma un SavedStateConfiguration que se puede usar para proporcionar tu propia configuración. (I2f4d2, I4cd58, b/420443609)

Correcciones de errores

  • Se corrigió un problema por el que la navegación provocaba que se activaran eventos de Lifecycle incorrectos. (I8bf6d, b/425901162, b/434109022)

Errores conocidos

  • I8bf6d introdujo un error que provocó que los ciclos de vida se basaran en escenas en lugar de entradas individuales, lo que interrumpió el ciclo de vida para cualquier caso en el que el key proporcionado al NavEntry no sea un String o tu NavEntry no haya anulado el contentKey y lo haya establecido como igual al key (ten en cuenta que hacer esto exige que tu clave se pueda guardar en un Bundle). Este problema se corrigió para la próxima versión. (b/440145700)

Versión 1.0.0-alpha07

13 de agosto de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.

Actualización de MinSdk

Cambios en la API

  • SavedStateNavEntryDecorator ahora usa el SaveableStateRegistry integrado en SaveableStateProvider para guardar y restablecer estados. (If8d9a)
  • Ahora, el predictivePopTransitionSpec recibe el borde de deslizamiento como parámetro, lo que te permite personalizar la transición según el borde desde el que el usuario inició el gesto de atrás predictivo. (I753a8)

Correcciones de errores

  • Se solucionó un problema que provocaba que las escenas personalizadas se volvieran a calcular de forma infinita porque no se recordaba la escena más reciente. (I7ba84, b/418153031)

Actualización de dependencia

Versión 1.0.0-alpha06

30 de julio de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.

Actualización de dependencia

Versión 1.0.0-alpha05

2 de julio de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.

Cambios en el comportamiento

  • El estado de NavEntry ahora se basa estrictamente en la lista actual de decoradores que se pasan a NavDisplay. Esto significa que los decoradores se deben intercambiar a lo largo de las pilas de actividades en el caso de que haya varias pilas de actividades para conservar el estado de los NavEntries en la pila de actividades. De lo contrario, los estados se borrarán como si las entradas se hubieran quitado (en lugar de un intercambio). (I7a759, b/428033667)

Versión 1.0.0-alpha04

18 de junio de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.

Cambios en la API

  • NavEntry.content ahora es privado. Para invocar contenido de NavEntry, llama a la nueva API de NavEntry.Content(), que ya no requiere un parámetro key para invocar. (Icd0fd, b/420991203)
  • NavEntry.key ahora es un campo privado. El campo contentKey nuevo, que se genera a partir de la nueva lambda contentKeyFactory y tiene como valor predeterminado un hash que se puede guardar y que se genera a partir de NavEntry.key, debe identificar el NavEntry y sus estados pertinentes (I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812).

Cambios de dependencia

  • Navigation3 ahora depende del nuevo artefacto androidx.navigationevent.compose.

Versión 1.0.0-alpha03

4 de junio de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Correcciones de errores

  • Navigation3 ya no borrará los estados del decorador para backStacks que se hayan intercambiado y reemplazado por otra instancia de backStack. (I28a42, b/415076044)

Versión 1.0.0-alpha02

23 de mayo de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un problema con SavedStateNavEntryDecorator que causaba colisiones para diferentes clases de datos con los mismos valores de propiedad. (b/418070648, Iff4775)
  • Se corrigió un problema de falta de clase que provocaba fallas cuando se ejecutaba sin declarar dependencias explícitas. (b/419049149, I4b4ed)

Versión 1.0.0-alpha01

20 de mayo de 2025

Lanzamiento de androidx.navigation3:navigation3-*:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Nuevas funciones

Navigation3 es una nueva biblioteca de navegación creada específicamente para controlar la navegación dentro de la app de Jetpack Compose. El artefacto androidx.navigation3.runtime proporciona los componentes básicos, mientras que el artefacto androidx.navigation3.ui proporciona la capa de IU a través de la API de NavDisplay. Los desarrolladores pueden proporcionar su propio estado directamente a la función de componibilidad NavDisplay, que cambia el contenido según los cambios en el estado del desarrollador.

@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 */ }
})

Para obtener más información, consulta la guía de Navigation3.