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
23 de septiembre de 2026 1.2.0 - - 1.3.0-alpha01

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.3.0-alpha01"
    implementation "androidx.navigation3:navigation3-ui:1.3.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.3.0-alpha01")
    implementation("androidx.navigation3:navigation3-ui:1.3.0-alpha01")
}

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 Issue Tracker para obtener más información.

Versión 1.3

Versión 1.3.0-alpha01

23 de septiembre de 2026

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

** Correcciones de errores **

  • Se corrigió la transferencia de la animación de atrás predictivo en NavDisplay migrando a DeferredAnimatedContent y resolviendo los problemas de transferencia de la transición. I145eaedd b/430807423

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

Versión 1.2.0

23 de septiembre de 2026

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

¡La versión 1.2.0 ahora es estable!

Cambios importantes desde la versión 1.1.0

API de Results

  • Esta nueva API permite pasar resultados entre NavEntries con el ResultEventBus proporcionado por LocalResultEventBus y ResultEventBusNavEntryDecorator.
  • Se agregó rememberResultEventBus para admitir la elevación de un ResultEventBus fuera de ResultEventBusNavEntryDecorator y pasarlo a rememberResultEventBusNavEntryDecorator.
  • Se puede acceder a los resultados que se pasan como estado con ResultEventBus#conflateAsState o recopilarlos como un flujo de resultados con ResultEffect.

API de vínculos directos

Navigation3 ahora admite vínculos directos de Kotlin Multiplatform (KMP) en androidx.navigation3.runtime.deeplink a través de DeepLinkRequest, DeepLinkUri y DeepLinkMatcher.

  • DeepLinkRequest y RequestExtras: Representan una solicitud de vínculo directo creada a partir de un DeepLinkUri, una cadena de URI o un Intent de Android. Se pueden adjuntar metadatos de solicitud adicionales con el contenedor RequestExtras de acceso seguro a tipos creado con la DSL requestExtras y RequestExtrasKey<T>.
  • DeepLinkMatcher: Representa un vínculo directo que se puede correlacionar con un DeepLinkRequest. Cada instancia de coincidencia se asocia con la clave de navegación que admite este vínculo directo. Una tecla de navegación se puede asociar con varios comparadores. Si la llamada a DeepLinkMatcher.match se realiza correctamente, se devolverá un MatchResult que contiene la clave de navegación asociada. Hay dos implementaciones predeterminadas de DeepLinkMatcher: UriDeepLinkMatcher para hacer coincidir vínculos directos según Uri y StaticKeyDeepLinkMatcher para hacer coincidir vínculos directos solo con DeepLinkMatcher.Filter que coincidan con un valor booleano.
  • BackStackMatcher: Es un DeepLinkMatcher para construir una pila de actividades sintética cuando se encuentra una coincidencia de vínculo directo. Se puede crear un BackStackMatcher a través de la función de extensión DeepLinkMatcher.withBackStack.

Manejo del gesto atrás predictivo

  • Se agregaron NavigationBackHandler y rememberNavigationEventState para simplificar la conexión de SceneState con el control de atrás predictivo (onBackCompleted y onBackCancelled). Esto permite que los componentes de IU personalizados admitan la navegación hacia atrás estándar y los gestos de atrás predictivo sin calcular manualmente los deltas de la pila de actividades.
  • Se mejoraron las transiciones de atrás predictivo, incluida la compatibilidad con los gestos de atrás predictivo que se activan a mitad de la animación de avance.

Otros cambios

  • NavEntry.contentKey ahora se establece de forma predeterminada en un compuesto de key.toString() y key::class.toString(), lo que evita colisiones de claves entre las claves de data object que comparten el mismo nombre simple en diferentes interfaces.
  • Ahora, EntryProvider prioriza la concordancia según las instancias clave en lugar de los tipos de clave.
  • Se agregó una verificación de lint para garantizar que las implementaciones de Scene sean data class o implementen equals y hashCode.

Versión 1.2.0-rc01

9 de septiembre de 2026

Lanzamiento de androidx.navigation3:navigation3-*:1.2.0-rc01. La versión 1.2.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • No se permiten nombres de marcadores de posición duplicados en los patrones de URI de vínculos directos. (I8985c, b/522343165)

Versión 1.2.0-beta01

26 de agosto de 2026

Lanzamiento de androidx.navigation3:navigation3-*:1.2.0-beta01. La versión 1.2.0-beta01 contiene estas confirmaciones.

Cambios en la API

  • Se refactorizó DeepLinkRequest.extras de Map<String, Any> a una nueva clase RequestExtras similar a un mapa con seguridad de tipo que almacena pares de RequestExtrasKey<T> a T. Se puede crear una instancia de RequestExtras con el DSL de requestExtras. (Ic929d, b/543883369)

Correcciones de errores

  • Se corrigió un problema por el que los gestos de atrás predictivos que se activan durante una transición hacia adelante no se animan en respuesta al progreso del deslizamiento. Ahora, la función Atrás predictivo se animará y completará correctamente. (Icdcb0, b/456218398)
  • Se agregó una verificación de lint para garantizar que las implementaciones de Scene sean clases de datos o implementen equals y hashcode para garantizar que se use el mismo Scene cuando corresponda. (Ibdf0d, b/542316099)
  • Ahora, NavEntry.contentKey tiene de forma predeterminada un compuesto de key.toString() y key::class.toString(). Esto garantiza que los objetos de datos que comparten el mismo nombre, pero implementan diferentes interfaces, ya no tendrán el mismo contentKey. Sin embargo, el key::class de la plataforma de JS solo devuelve el nombre de clase simple en lugar del nombre completamente calificado, por lo que la plataforma de JS aún debe implementar un contentKey personalizado para los objetos de datos con nombres duplicados. (I1fbbb, b/512534342)
  • Se corrigió el error IllegalArgumentException que arrojaba SaveableStateProvider para las claves duplicadas que se usaban durante la navegación hacia atrás rápida cuando había varias transiciones de extracción en curso. (I4d728, b/516312097)

Versión 1.2.0-alpha07

29 de julio de 2026

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

Cambios en la API

  • Se agregó una clase abstracta WrappedMatchResult para envolver otro DeepLinkMatcher.MatchResult. Esto permite que los resultados de la coincidencia personalizados se superpongan a otro. (I7d4dc, b/470282247)
  • Se agregó una nueva clase BackStackMatcher que toma dos parámetros: una instancia de coincidencia y una expresión lambda de compilador que proporciona el resultado de la coincidencia del comparador de entrada y devuelve una pila de actividades. Cuando se encuentra una coincidencia, BackStackMatcher devuelve un BackStackMatchResult que extiende WrappedMatchResult y contiene el resultado de la coincidencia original junto con la pila de actividades creada con la expresión lambda. El BackStackMatcher solo se puede crear con la nueva función de extensión DeepLinkMatcher.withBackStack. (Ibf987, b/470282247)

  • Se agregó una clase abstracta DeepLinkSerializer que extiende KSerializer para codificar y decodificar value : T como un String. DeepLinkSerializer se puede usar para serializar argumentos de vínculos directos no primitivos. Compatible con rememberSaveable y rememberNavBackStack. (Id3c9f, b/470282247)

  • DeepLinkMatcher agregó un segundo parámetro de tipo out R : DeepLinkMatcher.MatchResult<T> para que los desarrolladores puedan acceder a las propiedades de la subclase MatchResult que devuelve DeepLinkMatcher.match() sin necesidad de realizar una conversión de tipos. (I693d3, b/470282247)

  • El límite superior de DeepLinkMatcher.MatchResult's T cambió de Any? a Any. (I6bf1a)

  • El campo del constructor DeepLinkRequest uri ahora tiene el valor predeterminado nulo. Se cambió el nombre de uriString del constructor secundario a uri. (Ia0f14, b/522194187)

Correcciones de errores

  • ResultEffect ahora usa rememberUpdatedState para capturar la lambda onResult más reciente. (I7d2a3, b/531709234)
  • Se corrigió la coincidencia de vínculos directos para segmentos de ruta vacíos. Si el tipo de argumento es String, la ruta vacía se tratará como un valor de cadena vacío. De lo contrario, la ruta vacía se tratará como si no se hubiera proporcionado ningún valor y se revertirá al valor predeterminado. Si no hay un valor predeterminado, la coincidencia fallará. (I56575, b/535298128)
  • Se agregó compatibilidad con valores de consulta vacíos en DeepLinkRequest.uri. Si el argumento es de tipo String, el valor vacío se tratará como una cadena vacía literal. De lo contrario, el valor vacío se tratará como si no se hubiera proporcionado ningún valor, y la coincidencia intentará recurrir al valor predeterminado. Si no hay un valor predeterminado, la coincidencia fallará. (I30343, b/535127459)
  • Ahora, EntryProvider prioriza la concordancia según las instancias clave en lugar de los tipos de clave. (Ib5ec9, b/533331924)
  • SceneState ahora calcula correctamente las escenas anteriores a partir de la escena que no es de superposición más alta. (I91915, b/513630541)

Versión 1.2.0-alpha06

15 de julio de 2026

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

Correcciones de errores

  • Se corrigió la documentación de UriDeepLinkMatcher sobre los fragmentos de URI para aclarar que los fragmentos con comodines coincidirán con cualquier entrada, pero la entrada no se extraerá como argumentos. (I5ad9b, b/524677091)
  • Se corrigió el problema por el que UriDeepLinkMatcher no coincidía con una solicitud si el patrón de URI no contenía un esquema o no comenzaba con una doble barra. Por ejemplo, www.example.com/home ahora coincidirá con http://www.example.com/home. (Ia6b65, b/522791926)

Versión 1.2.0-alpha05

1 de julio de 2026

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

API nueva

  • Se agregó una API de rememberResultEventBus que devuelve un ResultEventBus que se puede pasar a rememberResultEventBusNavEntryDecorator. Esto permite elevar un ResultEventBus fuera del ResultEventBusNavEntryDecorator. (Ia655b, b/516995400)

DeepLinkRequest

  • Se agregaron dos constructores compatibles con KMP: uno que toma un DeepLinkUri y otro que toma una URI de cadena sin procesar. (I3c088, b/513200887, b/522194187)
  • (Solo para Android) Se agregó un constructor que toma un Intent. (Ia0498, b/513200887, b/522194187)
  • Todos los constructores tienen un campo extras adicional para que un Map<String, Any> adjunte información adicional de la solicitud. (If81d5, b/513200887)
  • Se agregó un nuevo DSL de requestExtras como una forma de seguridad de tipos para compilar un mapa de elementos adicionales. El DSL proporciona una función put para almacenar pares de RequestExtrasKey a Any. La función de extensión Map<String, Any>.get(key) se puede usar para leer desde el mapa con un RequestExtrasKey(I5091c, b/513200887).
  • (Solo para Android) Se agregaron las funciones ActionExtrasKey y actionExtra para crear un mapa de elementos adicionales con ActionExtrasKey. (Id0c90, [b/513200887]
  • Se agregaron las funciones MimeTypeExtrasKey y mimeTypeExtra para crear un mapa de elementos adicionales con MimeTypeExtrasKey. (I85131, b/513200887)

DeepLinkMatcher

  • Se agregaron las funciones DeepLinkMatcher.mimeTypeFilter y DeepLinkMatcher.actionFilter para crear DeepLinkMatcher.Filters que filtra DeepLinkRequest por mimeType o action (solo para Android). Ambos filtros coinciden por igualdad de cadenas y no distinguen mayúsculas de minúsculas. (Ie7e67, b/513191950)

Cambios en la API

DeepLinkRequest

  • Quita la función de fábrica fromAction. Para crear una solicitud asociada a una acción, usa el nuevo campo DeepLinkRequest.extras.(Id0c90, b/513200887)
  • Se quitó la función de fábrica fromMimeType. Para crear una solicitud asociada a un mimeType, usa el nuevo campo DeepLinkRequest.extras. (I85131, b/513200887)
  • (Solo para Android) Se quitó la función de fábrica fromIntent. Se reemplazó por un constructor nuevo que toma un Intent y un mapa de extras. (Ia0498, b/513200887, b/522194187)
  • Se quitaron las funciones de fábrica fromUri y fromUriString. Se reemplazó por nuevos constructores que toman un DeepLinkUri o un URI de cadena sin procesar. (Id5b6f, b/522194187)
  • DeepLinkMatcher, DeepLinkMatcher.MatchResult y sus subclases ahora toman un T covariante (out T) para que las claves jerárquicas no necesiten una conversión de tipos cuando se usen con Matchers. (I1e453, b/525094876)
  • El parámetro de constructor UriMatchResult para el mapa de argumentos ahora tiene como valor predeterminado un mapa vacío. (I3acdd)
  • La clase abstracta DeepLinkMatcher.Filter ahora es una interfaz funcional. Se quitó el campo del constructor filter y, en su lugar, se debe pasar directamente en la subclase. (I9eb7d, b/522194187)

Correcciones de errores

  • Se corrigió el problema por el que la entrada emergente desaparecía de inmediato cuando se mostraba una entrada que tenía metadatos anidados que contenían valores de Lambda. (Idb872, b/520494430)
  • Se corrigió UriDeepLinkMatcher para que muestre un UriMatchResult nulo en lugar de generar MissingFieldException cuando faltan argumentos obligatorios durante la coincidencia. (I5322f, b/524663005)
  • Un UriDeeplinkMatcher que contiene una URI con el esquema https solo puede coincidir con solicitudes que también tengan el esquema https. (Ibfe22, b/522304329)
  • Corrige UriDeepLinkMatcher para identificar correctamente el esquema http como una coincidencia positiva con https cuando se hace coincidir un DeepLinkRequest con un UriDeepLinkMatcher. (I3a62b, b/518804264)
  • El comparador DeepLinkMatcher.MatchResult ahora devuelve 0 de forma predeterminada cuando dos resultados son iguales. (I48ddb, b/518841353)
  • UriDeepLinkMatcher ahora devolverá un UriMatchResult nulo en lugar de arrojar una excepción cuando la solicitud de coincidencia falle debido a la falta de argumentos obligatorios. (I669a7, b/470282247, b/512923412)

Versión 1.2.0-alpha04

3 de junio de 2026

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

Correcciones de errores

  • Se solucionó un problema de animación de superposición en el que las superposiciones anidadas, como ModalBottomSheet, se volvían a animar de forma inesperada cuando se quitaban las superposiciones que estaban sobre ellas. (Ia2b9e, b/502624496)

Versión 1.2.0-alpha03

19 de mayo de 2026

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

Nuevas funciones

Navigation 3 ahora admite vínculos directos con DeepLinkRequest y DeepLinkMatcher:

  • DeepLinkRequest un vínculo directo solicitado que contiene un DeepLinkUri y un mimeType o una acción opcionales(solo para Android) Junto con la nueva clase, se incluyen funciones complementarias para crear una instancia con un uri, un mimeType o un action. La plataforma de Android también tiene un asistente para compilar una solicitud a partir de un Intent. (Iaaac9, b/470282247)

    val uriOnlyRequest = DeepLinkRequest.fromUriString("https://sampledeeplink.com/home")
    val uriAndMimeRequest = DeepLinkRequest.fromUriString(
      "https://sampledeeplink.com/user/profile?id=123",
      "image/png"
    )
    
  • DeepLinkMatcher representa un vínculo directo que se puede correlacionar con un DeepLinkRequest. Cada instancia de coincidencia se asocia con la clave de navegación que admite este vínculo directo. Una tecla de navegación se puede asociar con varios comparadores. Si la llamada a DeepLinkMatcher.match se realiza correctamente, se devolverá un MatchResult que contiene la clave de navegación asociada. Existen dos implementaciones predeterminadas de DeepLinkMatcher: UriDeepLinkMatcher para hacer coincidir vínculos directos basados en Uri y StaticKeyDeepLinkMatcher para hacer coincidir vínculos directos solo con DeepLinkMatcher.Filter que coincidan con un Boolean. (I3798e, b/470282247)

  • UriDeepLinkMatcher, una implementación basada en opiniones de DeepLinkMatcher que controla el vínculo directo haciendo coincidir DeepLinkUri con una clave de navegación serializable. Admite argumentos de vínculos directos de tipos primitivos o colecciones de tipos primitivos, como listas, arrays y conjuntos. (I1520b, b/470282247)

    @Serializable
    data class UserKey(val id: Int): NavKey
    
    // declare a deep link supported by UserKey
    val userMatcher = UriDeepLinkMatcher(
      uriPattern = "www.sampledeeplink.com/user?userId={id}",
      serializer = serializer<UserKey>()
    )
    
    // handle a requested deep link with fallback key
    val key = userMatcher.match(deepLinkRequest)?.key ?: HomeKey
    
  • Se agregó DeepLinkUri, que es una versión multiplataforma de Kotlin de android.net.Uri (Id4725, b/470282247).

Cambios en la API

  • Se actualizó a compileSdk 37 para que coincida con el compileSdk de Compose

Correcciones de errores

  • Se corrigió el IllegalArgumentException de AnimatedBottomSheetSample cuando se muestran varias superposiciones. La muestra SceneStrategy ahora calculará correctamente el último no OverlayScene y lo mostrará en todas las escenas superpuestas. (If2281, b/506733412)
  • Se actualizó la dependencia de NavigationEvent a la versión 1.1.1, que quita el NavigationEventHandler no operativo cuando se está en modo de inspección para habilitar la función Atrás predictivo en las vistas previas de Android Studio. (I487fd)

Versión 1.2.0-alpha02

22 de abril de 2026

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

Cambios en la API

  • Cambia el nombre de onBack a onBackCompleted y agrega onBackCancelled a NavigationBackHandler para admitir el control de los gestos de atrás cancelados. (I92741)
  • Agrega NavigationBackHandler para simplificar el control de los gestos atrás y el atrás predictivo cuando se usa SceneState. Esto permite que los desarrolladores creen con mayor facilidad componentes de IU personalizados que admitan la navegación hacia atrás estándar y los gestos predictivos sin tener que calcular de forma manual los deltas de la pila de actividades. (I6a055)
  • Se agregó rememberNavigationEventState para simplificar la conexión de SceneState con el control del gesto atrás predictivo. (Iae49c)

Nuevas funciones

  • Se agregó una API de ResultEventBus para permitir el paso de resultados entre NavEntries con el LocalResultEventBus proporcionado por el nuevo ResultEventBusNavEntryDecorator. Los resultados que se pasan se pueden evaluar como un estado con ResultEventBus#conflateAsState o como un flujo de resultados con ResultEffect.

Versión 1.2.0-alpha01

8 de abril de 2026

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

Correcciones de errores

  • Acceder a LocalNavAnimatedContentScope desde un OverlayScene ya no provocará un IllegalStateException, ya que ahora los OverlayScenes se proporcionan con un LocalAnimatedContentScope no-op. (I2f00c, b/486067688)

Versión 1.1.7

26 de agosto de 2026

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

Correcciones de errores

  • Se corrigió un problema por el que los gestos de atrás predictivos que se activan durante una transición hacia adelante no se animan en respuesta al progreso del deslizamiento. Ahora, la función de atrás predictivo se animará y completará correctamente. (Icdcb0, b/456218398)

Versión 1.1.6

12 de agosto de 2026

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

Correcciones de errores

  • Ahora, NavEntry.contentKey tiene de forma predeterminada un compuesto de key.toString() y key::class.toString(). Esto garantiza que los objetos de datos que comparten el mismo nombre, pero implementan diferentes interfaces, ya no tendrán el mismo contentKey. Sin embargo, el key::class de la plataforma de JS solo devuelve el nombre de clase simple en lugar del nombre completamente calificado, por lo que la plataforma de JS aún debe implementar un contentKey personalizado para los objetos de datos con nombres duplicados. (I1fbbb, b/512534342)
  • Se corrigió el IllegalArgumentException que arroja SaveableStateHolder para la reutilización de claves cuando varias transiciones de extracción están en curso simultáneamente debido a la extracción rápida de la pila de actividades. (I4d728, b/516312097)

Versión 1.1.5

29 de julio de 2026

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

Correcciones de errores

  • La DSL de entryProvider ahora prioriza NavEntry compilado con una instancia de clave, por ejemplo, entry(key = userKey) { ... } sobre NavEntry compilado con una clase de clave como entry<UserKey>{ ... }.(Ib5ec9, b/533331924)

Versión 1.1.4

1 de julio de 2026

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

Correcciones de errores

  • Se corrigió el problema por el que la entrada emergente desaparecía de inmediato cuando se mostraba una entrada que tenía metadatos anidados que contenían valores de Lambda. (Idb872, b/520494430)

Versión 1.1.3

17 de junio de 2026

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

Correcciones de errores

  • Se solucionó un problema de animación de superposición en el que las superposiciones anidadas, como ModalBottomSheet, se volvían a animar de forma inesperada cuando se quitaban las superposiciones que estaban sobre ellas. (Ia2b9e, b/502624496)

  • Se actualizó la dependencia de NavigationEvent a la versión 1.1.2, que quitó el NavigationEventHandler no-op cuando se está en modo de inspección para habilitar la función Atrás predictivo en las versiones preliminares de Android Studio.

Versión 1.1.2

19 de mayo de 2026

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

Correcciones de errores

  • Se actualizó la dependencia de NavigationEvent a la versión 1.1.1, que quitó el NavigationEventHandler no operativo cuando se está en modo de inspección para habilitar la función Atrás predictivo en las versiones preliminares de Android Studio.

Versión 1.1.1

22 de abril de 2026

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

Correcciones de errores

  • Acceder a LocalNavAnimatedContentScope desde un OverlayScene ya no provocará un IllegalStateException, ya que ahora los OverlayScenes se proporcionan con un LocalAnimatedContentScope no-op. (I2f00c, b/486067688)

Versión 1.1.0

8 de abril de 2026

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

La versión 1.1.0 ahora es estable.

Cambios importantes desde 1.0.0

Elementos compartidos entre escenas: Navigation3 ahora admite el tratamiento de escenas como objetos de elementos compartidos. Esto significa que, cuando cambian las escenas, es posible garantizar que tengan una transición fluida. Para habilitar esta opción, pasa un SharedTransitionScope a NavDisplay o a rememberSceneState.

SceneDecoratorStrategy: Se introdujo SceneDecoratorStrategy para admitir casos de uso, como decorar escenas con componentes de IU comunes o compartir el estado entre escenas.

DSL de NavMetadata: Navigation3 ahora proporciona un nuevo DSL de metadatos con seguridad de tipos. El DSL usa una nueva interfaz MetadataKey que permite definir los tipos de clave y valor que se desean proporcionar al mapa de metadatos. También se agregaron nuevos NavMetadataKeys para las transiciones de NavDisplay, de modo que se puedan usar con el nuevo DSL de metadatos para agregar transiciones a NavDisplay.

Animaciones de OverlayScene: La interfaz OverlayScene tiene una nueva devolución de llamada de suspensión onRemoved. Se invoca esta devolución de llamada después de que se quita del historial una clave asociada a la escena, pero antes de que salga de la composición. Esto permite que las animaciones de salida llamadas dentro de onRemoved se completen antes de que se quite la escena de superposición de la composición.

Otros cambios - NavDisplay y rememberSceneState ahora toman un List<SceneStrategy> en lugar del único parámetro SceneStrategy anterior que se encadenaba con el infijo then. - Ahora puedes agregar metadatos de forma dinámica teniendo en cuenta la clave de entrada a través de la DSL de EntryProvider.

Versión 1.1.0-rc01

25 de marzo de 2026

Lanzamiento de androidx.navigation3:navigation3-*:1.1.0-rc01. La versión 1.1.0-rc01 contiene estas confirmaciones.

Correcciones de errores

  • Ahora, NavDisplay garantiza que las entradas que se muestran debajo de las superposiciones tengan su Lifecycle limitado a STARTED. Esto garantiza que las APIs como dropUnlessResumed sigan funcionando cuando se usan diálogos. (If209f, b/483966071)
  • Se solucionó un problema en NavDisplay por el que navegar de un lado a otro entre las mismas pantallas y detener las animaciones entre las dos podía provocar que el orden Z de las pantallas fuera incorrecto. (I4d491, b/459419800)

Versión 1.1.0-beta01

11 de marzo de 2026

Lanzamiento de androidx.navigation3:navigation3-*:1.1.0-beta01. La versión 1.1.0-beta01 contiene estas confirmaciones.

Versión 1.1.0-alpha05

25 de febrero de 2026

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

Cambios en la API

  • NavDisplay y rememberSceneState ahora toman un List<SceneStrategy> en lugar del único parámetro SceneStrategy anterior que se encadenaba con el infijo then. Esto se alinea más con el List<SceneDecoratorStrategy<T>> que ya toman ambas APIs. Las APIs anteriores dejaron de estar disponibles. (I78b2c, b/482108465)
  • Se agregó un operador #contains de metadatos para verificar si el mapa de metadatos contiene el NavMetadataKey determinado. (Ic30db, b/485311895)
  • Se agregaron NavMetadataKey DialogKey para que DialogSceneStrategy se use con el DSL de metadatos. (Ic7a26, b/483388817)

Versión 1.1.0-alpha04

11 de febrero de 2026

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

Nuevas funciones

  • Navigation3 ahora proporciona un nuevo DSL de metadatos con seguridad de tipos. El DSL usa una nueva interfaz MetadataKey que permite definir los tipos de clave y valor que se desean proporcionar al mapa de metadatos. También se agregaron nuevos NavMetadataKeys para las transiciones de NavDisplay, de modo que se puedan usar con la nueva DSL de metadata para agregar transiciones a NavDisplay. (Ic10ef, Ic049c,b/476213928)

Cambios en la API

  • La interfaz OverlayScene tiene una nueva devolución de llamada de suspensión onRemoved. Se invoca esta devolución de llamada después de que se quita del historial una clave asociada a la escena, pero antes de que salga de la composición. Esto permite que las animaciones de salida llamadas dentro de onRemoved se completen antes de que se quite la escena de superposición de la composición. (I29a72, b/440558061)
  • SceneStrategy separó la función de decoración en un nuevo SceneDecoratorStrategy. Esta nueva interfaz es la que se debe usar para decorar escenas. Hay nuevas APIs para NavDisplay y rememberSceneState que permiten agregar SceneDecoratorStrategies. (If9385, b/477669607, b/477670333)

Correcciones de errores

  • Se corrigió un error por el que pasar un SharedTransitionLayout a NavDisplay o rememberSceneState y usar cualquier OverlayScene provocaba una falla porque usar SharedTransitionLayout solo funciona con NavEntries que se renderizan como parte de AnimatedContent, y los OverlayScene se renderizan en sus propias ventanas por separado. (I1bb76, b/478664101)

Actualización de dependencia

  • Desde Navigation3 1.0.1: Navigation3 ahora depende de NavigationEvent 1.0.2. Esto corrige un IllegalStateException causado por el uso de NavDisplay durante las vistas previas de AndroidStudio. (Id7212, b/477149762)

Versión 1.1.0-alpha03

28 de enero de 2026

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

Nuevas funciones

  • Ahora puedes agregar metadatos de forma dinámica teniendo en cuenta la clave de entrada a través del DSL de EntryProvider. (I942fb, b/474416976)

Versión 1.1.0-alpha02

14 de enero de 2026

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

Nuevas funciones

  • SceneStrategy ahora admite la anidación de escenas a través de una nueva función calculatedScene(Scene). Esto significa que los SceneStrategy se pueden personalizar para proporcionar funciones adicionales a otras escenas. (I5df7c,b/440333896)

Versión 1.1.0-alpha01

3 de diciembre de 2025

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

Cambios en la API

  • Navigation3 ahora admite el tratamiento de escenas como objetos de elementos compartidos. Esto significa que, cuando cambian las escenas, es posible garantizar que tengan una transición fluida. Para habilitar esta opción, pasa un SharedTransitionScope a NavDisplay o a rememberSceneState. (I15868)

Versión 1.0

Versión 1.0.1

11 de febrero de 2026

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

Actualización de dependencia

  • Navigation3 ahora depende de NavigationEvent 1.0.2. Esto corrige un IllegalStateException causado por el uso de NavDisplay durante las vistas previas de AndroidStudio. (Id7212, b/477149762)

Versión 1.0.0

19 de noviembre de 2025

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

Presentamos Navigation3

  • La biblioteca de Navigation3 ahora es estable. Navigation3 es el primer enfoque de AndroidX Compose para la navegación.
  • Para obtener más información, consulta nuestra entrada de blog del anuncio, visita los recursos y prueba las recetas.

Versión 1.0.0-rc01

5 de noviembre de 2025

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

Correcciones de errores

  • Ahora, NavDisplay establece un LocalLifecycleOwner en el nivel Scene que permite a los autores de escenas determinar si todas las transiciones finalizaron verificando que Lifecycle.State sea RESUMED. El comportamiento de LocalLifecycleOwner a nivel de NavEntry no cambia: también permanece limitado a STARTED si hay una transición en curso y, además, se limita a CREATED si se quitó ese NavEntry de la pila de actividades y está en proceso de animación de salida. (I03113, b/454045829)

Versión 1.0.0-beta01

22 de octubre de 2025

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

Cambios en la API

  • Ahora SceneStrategyScope solo tiene un constructor público sin argumentos, adecuado para probar tu SceneStrategy y el Scene devuelto de forma aislada. Para casos de uso más complejos, usa rememberSceneState(). (I8440c, b/451679047)

Correcciones de errores

  • Se corrigió el bucle infinito que se producía cuando se encadenaba SceneStrategy con then. (Iba3f0, b/450323470)
  • Se corrigió el parpadeo de la pantalla que se producía cuando se intercambiaba el backStack que se pasaba a NavDisplay y se usaban animaciones. (Ief7b5, b/450967248)

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 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 el uso del elemento local de composición LocalEntriesToRenderInCurrentScene, 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 que tengas que incluirla 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 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)
  • Cambia 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 la restauración correcta 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

  • Se agregó una nueva sobrecarga de NavDisplay que toma 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 Scene a los que vas y desde los que vienes, ya que analiza los currentState y los targetState de Transition. (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 trasladaron 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 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 trasladó a commonMain para garantizar que se proporcione en todos los destinos de la plataforma. (Id69e7, b/420443609)

Correcciones de errores

  • Ahora NavDisplay 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 en todos los casos en los que el key proporcionado al NavEntry no es un String o tu NavEntry no anuló el contentKey y lo estableció como igual al key (ten en cuenta que hacer esto exige que tu clave se pueda guardar en un Bundle). Este error 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

  • Ahora, SavedStateNavEntryDecorator 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 atrás predictivo. (I753a8)

Correcciones de errores

  • Se corrigió 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 tus 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 de la pila (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 invocarla. (Icd0fd, b/420991203)
  • NavEntry.key ahora es un campo privado. El NavEntry y sus estados relevantes deben identificarse con el nuevo campo contentKey, que se genera a partir de la nueva lambda contentKeyFactory y, de forma predeterminada, se establece en un hash que se puede guardar y que se genera a partir de NavEntry.key (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.