navigation3
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 23 de setembro de 2026 | 1.2.0 | - | - | 1.3.0-alpha01 |
Declarar dependências
Para adicionar uma dependência ao navigation3, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle do
seu app ou 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 mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.3
Versão 1.3.0-alpha01
23 de setembro de 2026
Lançamento de androidx.navigation3:navigation3-*:1.3.0-alpha01. A versão 1.3.0-alpha01 contém estes commits.
** Correções de bugs **
- Correção da transferência de animação de volta preditiva em
NavDisplaymigrando paraDeferredAnimatedContente resolvendo problemas de transferência de transição. I145eaedd b/430807423
Não há notas de versão para este artefato.
Navigation3 versão 1.2
Versão 1.2.0
23 de setembro de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0. A versão 1.2.0 contém estes commits.
A versão 1.2.0 agora está estável!
Mudanças importantes desde a 1.1.0
API Result
- Essa nova API permite transmitir resultados entre
NavEntriesusando oResultEventBusfornecido porLocalResultEventBuseResultEventBusNavEntryDecorator. - Adição de
rememberResultEventBuspara oferecer suporte à elevação de umResultEventBusfora deResultEventBusNavEntryDecoratore transmissão pararememberResultEventBusNavEntryDecorator. - Os resultados transmitidos podem ser acessados como estado com
ResultEventBus#conflateAsStateou coletados como um fluxo de resultados comResultEffect.
API Deep Link
O Navigation3 agora oferece suporte a links diretos do Kotlin Multiplatform (KMP) em androidx.navigation3.runtime.deeplink via DeepLinkRequest, DeepLinkUri e DeepLinkMatcher.
DeepLinkRequesteRequestExtras: representam uma solicitação de link direto criada de umDeepLinkUri, uma string de URI ou umIntentdo Android. Outros metadados de solicitação podem ser anexados usando o contêinerRequestExtrascom segurança de tipos criado com a DSLrequestExtraseRequestExtrasKey<T>.DeepLinkMatcher: representa um link direto que pode ser correspondido a umDeepLinkRequest. Cada instância de correspondência está associada à chave de navegação que oferece suporte a esse link direto. Uma chave de navegação pode ser associada a vários comparadores. ChamarDeepLinkMatcher.matchvai retornar umMatchResultque contém a chave de navegação associada se a correspondência for bem-sucedida. Há duas implementações padrão deDeepLinkMatcher:UriDeepLinkMatcherpara correspondência de links diretos com base emUrieStaticKeyDeepLinkMatcherpara correspondência de links diretos com apenasDeepLinkMatcher.Filterque correspondem por um booleano.BackStackMatcher: umDeepLinkMatcherpara construir um backstack sintético após uma correspondência de link direto bem-sucedida. É possível criarBackStackMatcherusando a função de extensãoDeepLinkMatcher.withBackStack.
Processamento de volta preditiva
- Adicionamos
NavigationBackHandlererememberNavigationEventStatepara simplificar a conexão deSceneStatecom o processamento de volta preditiva (onBackCompletedeonBackCancelled). Isso permite que componentes de interface personalizados ofereçam suporte à navegação de retorno padrão e a gestos de volta preditiva sem calcular manualmente os deltas da backstack. - Melhorias nas transições de volta preditiva, incluindo suporte a gestos de volta preditiva acionados no meio da animação de encaminhamento.
Outras mudanças
- Agora,
NavEntry.contentKeyusa por padrão um composto dekey.toString()ekey::class.toString(), evitando colisões de chaves entre chavesdata objectque compartilham o mesmo nome simples em interfaces diferentes. - Agora, o
EntryProviderprioriza a correspondência com base em instâncias de chave em vez de tipos de chave. - Adição de uma verificação de lint para garantir que as implementações de
Scenesejamdata classes ou implementemequalsehashCode.
Versão 1.2.0-rc01
9 de setembro de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-rc01. A versão 1.2.0-rc01 contém estes commits.
Correções de bugs
- Não permitir nomes de substituição duplicados em padrões de URI de link direto. (I8985c, b/522343165)
Versão 1.2.0-beta01
26 de agosto de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-beta01. A versão 1.2.0-beta01 contém estes commits.
Mudanças na API
- Refatoração de
DeepLinkRequest.extrasdeMap<String, Any>para uma nova classeRequestExtrassemelhante a um mapa com segurança de tipo, que armazena pares deRequestExtrasKey<T>paraT.RequestExtraspode ser instanciado com a DSLrequestExtras. (Ic929d, b/543883369).
Correções de bugs
- Correção de um problema em que os gestos de retorno preditivo acionados durante uma transição para frente não eram animados em resposta ao progresso do deslizar. O gesto "Voltar" preditivo agora será animado e concluído corretamente. (Icdcb0, b/456218398)
- Adicionada uma verificação de lint para garantir que as implementações de
Scenesejam classes de dados ou implementem equals e hashcode para garantir que o mesmoSceneseja usado quando apropriado. (Ibdf0d, b/542316099) - O
NavEntry.contentKeyagora usa por padrão uma combinação dekey.toString()ekey::class.toString(). Isso garante que objetos de dados que compartilham o mesmo nome, mas implementam interfaces diferentes, não tenham mais o mesmocontentKey. No entanto, okey::classda plataforma JS retorna apenas o nome da classe simples em vez do nome totalmente qualificado. Por isso, a plataforma JS ainda precisa implementar umcontentKeypersonalizado para objetos de dados com nomes duplicados. (I1fbbb, b/512534342) - Foi corrigida a
IllegalArgumentExceptiongerada porSaveableStateProviderpara chaves duplicadas usadas durante a navegação de retorno rápida quando várias transições de remoção estão em andamento. (I4d728, b/516312097)
Versão 1.2.0-alpha07
29 de julho de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-alpha07. A versão 1.2.0-alpha07 contém estes commits.
Mudanças na API
- Adicionada uma classe abstrata
WrappedMatchResultpara encapsular outroDeepLinkMatcher.MatchResult. Isso permite resultados de correspondência personalizados sobrepostos a outro. (I7d4dc, b/470282247) Adicionada uma nova classe
BackStackMatcherque usa dois parâmetros: uma instância de correspondência e uma lambda de builder que fornece o resultado da correspondência do matcher de entrada e retorna uma backstack. Se houver uma correspondência,BackStackMatchervai retornar umBackStackMatchResultque estendeWrappedMatchResulte contém o resultado da correspondência original e a backstack criada com a lambda. OBackStackMatchersó pode ser criado com a nova função de extensãoDeepLinkMatcher.withBackStack. (Ibf987, b/470282247)Adicionada uma classe abstrata
DeepLinkSerializerque estendeKSerializerpara codificar e decodificarvalue : Tcomo umString.DeepLinkSerializerpode ser usado para serializar argumentos de link direto não primitivos. Compatível comrememberSaveableerememberNavBackStack. (Id3c9f, b/470282247)DeepLinkMatcheradicionou um segundo parâmetro de tipoout R : DeepLinkMatcher.MatchResult<T>para que os desenvolvedores possam acessar as propriedades doMatchResultcom subclasse retornado porDeepLinkMatcher.match()sem conversão de tipo. (I693d3, b/470282247)O limite superior de
DeepLinkMatcher.MatchResult'sT mudou deAny?paraAny. (I6bf1a).O campo
urido construtorDeepLinkRequestagora tem o valor padrão "null". OuriStringdo construtor secundário foi renomeado parauri. (Ia0f14, b/522194187)
Correções de bugs
- O
ResultEffectagora usarememberUpdatedStatepara capturar a lambdaonResultmais recente. (I7d2a3, b/531709234) - Correção da correspondência de links diretos para segmentos de caminho vazios. Se o tipo de argumento for String, o caminho vazio será tratado como um valor de string vazia. Caso contrário, o caminho vazio será tratado como nenhum valor fornecido e vai voltar ao valor padrão. Se não houver um valor padrão, a correspondência vai falhar. (I56575, b/535298128)
- Adicionado suporte para valores de consulta vazios em
DeepLinkRequest.uri. Se o argumento for do tipo String, o valor vazio será tratado como uma string vazia literal. Caso contrário, o valor vazio será tratado como nenhum valor fornecido, e a correspondência tentará usar o valor substituto. Se não houver um valor padrão, a correspondência vai falhar. (I30343, b/535127459). - Agora, o
EntryProviderprioriza a correspondência com base em instâncias de chave em vez de tipos de chave. (Ib5ec9, b/533331924) - Agora, o
SceneStatecalcula corretamente as cenas anteriores, começando pela cena não sobreposta mais acima. (I91915, b/513630541).
Versão 1.2.0-alpha06
15 de julho de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-alpha06. A versão 1.2.0-alpha06 contém estes commits.
Correções de bugs
- Correção da documentação
UriDeepLinkMatchersobre fragmentos de URI para esclarecer que fragmentos com caracteres curinga correspondem a qualquer entrada, mas a entrada não é extraída como argumentos. (I5ad9b, b/524677091) - Correção do problema em que
UriDeepLinkMatchernão correspondia a uma solicitação se o padrão de URI não continha um esquema ou não começava com uma barra dupla. Por exemplo,www.example.com/homeagora vai corresponder ahttp://www.example.com/home. (Ia6b65, b/522791926)
Versão 1.2.0-alpha05
1º de julho de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-alpha05. A versão 1.2.0-alpha05 contém estes commits.
Nova API
- Adição de uma API
rememberResultEventBusque retorna umResultEventBusque pode ser transmitido pararememberResultEventBusNavEntryDecorator. Isso permite elevar umResultEventBusfora doResultEventBusNavEntryDecorator. (Ia655b, b/516995400)
DeepLinkRequest
- Adição de dois construtores compatíveis com KMP: um que usa um DeepLinkUri e outro que usa uma string bruta de URI. (I3c088, b/513200887, b/522194187).
- (Somente Android) Adição de um construtor que usa um
Intent. (Ia0498, b/513200887, b/522194187). - Todos os construtores têm um campo
extrasadicional para umMap<String, Any>anexar mais informações de solicitação. (If81d5, b/513200887) - Uma nova dsl
requestExtrasfoi adicionada como uma maneira type-safe de criar um mapa de extras. A DSL fornece uma funçãoputpara armazenar pares deRequestExtrasKeyparaAny. A função de extensãoMap<String, Any>.get(key)pode ser usada para ler do mapa com umRequestExtrasKey(I5091c, b/513200887). - (Somente Android) Adicionamos uma função
ActionExtrasKeyeactionExtrapara criar um mapa de extras comActionExtrasKey. (Id0c90, [b/513200887] - Adicionamos uma função
MimeTypeExtrasKeyemimeTypeExtrapara criar um mapa de extras comMimeTypeExtrasKey. (I85131, b/513200887)
DeepLinkMatcher
- Adicionamos as funções
DeepLinkMatcher.mimeTypeFiltereDeepLinkMatcher.actionFilterpara criarDeepLinkMatcher.Filtersque filtramDeepLinkRequestpormimeTypeouaction(somente Android). Os dois filtros correspondem por igualdade de string e não diferenciam maiúsculas de minúsculas. (Ie7e67, b/513191950).
Mudanças na API
DeepLinkRequest
- Remova a função de fábrica
fromAction. Para criar uma solicitação associada a uma ação, use o novo campoDeepLinkRequest.extras.(Id0c90, b/513200887) - A função de fábrica
fromMimeTypefoi removida. Para criar uma solicitação associada a um mimeType, use o novo campoDeepLinkRequest.extras. (I85131, b/513200887) - (Somente Android) Remoção da função de fábrica
fromIntent. Substituído por um novo construtor que usa um mapa de intent e extras. (Ia0498, b/513200887, b/522194187). - As funções de fábrica
fromUriefromUriStringforam removidas. Substituído por novos construtores que usam umDeepLinkUriou um URI de string bruta. (Id5b6f, b/522194187). DeepLinkMatcher,DeepLinkMatcher.MatchResulte as subclasses deles agora usam um T covariante (out T) para que as chaves hierárquicas não precisem de conversão de tipo com Matchers. (I1e453, b/525094876)- O parâmetro do construtor
UriMatchResultpara o mapa de argumentos agora tem como padrão um mapa vazio. (I3acdd). - A classe abstrata
DeepLinkMatcher.Filteragora é uma interface funcional. O campo do construtorfilterfoi removido e precisa ser transmitido diretamente na subclasse. (I9eb7d, b/522194187).
Correções de bugs
- Correção do desaparecimento imediato da entrada aberta ao abrir uma entrada com metadados aninhados que contêm valores lambda. (Idb872, b/520494430).
- Correção de
UriDeepLinkMatcherpara que retorne umUriMatchResultnulo em vez de gerarMissingFieldExceptionquando argumentos obrigatórios estiverem faltando durante a correspondência. (I5322f, b/524663005) - Um
UriDeeplinkMatcherque contém o URI com o esquema HTTPS só pode ser correspondido a solicitações que também têm o esquema HTTPS. (Ibfe22, b/522304329). - Corrija
UriDeepLinkMatcherpara identificar corretamente o esquemahttpcomo uma correspondência positiva comhttpsao corresponder umDeepLinkRequesta umUriDeepLinkMatcher. (I3a62b, b/518804264) - O comparador
DeepLinkMatcher.MatchResultagora retorna 0 por padrão quando dois resultados são iguais. (I48ddb, b/518841353) - Agora,
UriDeepLinkMatchervai retornar umUriMatchResultnulo em vez de gerar uma exceção quando a solicitação de correspondência falhar devido à falta de argumentos obrigatórios. (I669a7, b/470282247, b/512923412).
Versão 1.2.0-alpha04
3 de junho de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-alpha04. A versão 1.2.0-alpha04 contém estes commits.
Correções de bugs
- Correção de um problema de animação de sobreposição em que sobreposições aninhadas, como
ModalBottomSheet, eram reanimadas inesperadamente quando as sobreposições acima eram removidas. (Ia2b9e, b/502624496)
Versão 1.2.0-alpha03
19 de maio de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-alpha03. A versão 1.2.0-alpha03 contém estes commits.
Novos recursos
O Navigation 3 agora oferece suporte a links diretos com DeepLinkRequest e DeepLinkMatcher:
DeepLinkRequestum link direto solicitado que contém umDeepLinkUrie um mimeType ou ação opcional(somente Android). Junto com a nova classe, há funções complementares para criar uma instância com umuri, ummimeTypeou umaction. A plataforma Android também tem um auxiliar para criar uma solicitação de uma 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" )DeepLinkMatcherrepresenta um link direto que pode ser correspondido a umDeepLinkRequest. Cada instância de correspondência está associada à chave de navegação que oferece suporte a esse link direto. Uma chave de navegação pode ser associada a vários comparadores. ChamarDeepLinkMatcher.matchvai retornar umMatchResultque contém a chave de navegação associada se a correspondência for bem-sucedida. Há duas implementações padrão deDeepLinkMatcher:UriDeepLinkMatcherpara correspondência de links diretos com base em Uri eStaticKeyDeepLinkMatcherpara correspondência de links diretos com apenasDeepLinkMatcher.Filterque correspondem a umBoolean. (I3798e, b/470282247).UriDeepLinkMatcheruma implementação opinativa deDeepLinkMatcherque processa links diretos combinandoDeepLinkUria uma chave de navegação serializável. Ele aceita argumentos de link direto de tipos primitivos ou coleção de primitivos, como listas, matrizes e 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 ?: HomeKeyAdição de
DeepLinkUri, que é uma versão multiplataforma do Kotlin deandroid.net.Uri(Id4725, b/470282247).
Mudanças na API
- Aumentado para
compileSdk 37para corresponder ao compileSdk do Compose
Correções de bugs
- Corrigimos o
IllegalArgumentExceptiondoAnimatedBottomSheetSampleao mostrar várias sobreposições. O exemploSceneStrategyagora vai calcular corretamente o últimoOverlayScenee mostrar em todas as cenas de sobreposição. (If2281, b/506733412) - Aumentamos a dependência
NavigationEventpara 1.1.1, o que remove o NavigationEventHandler sem operação no modo de inspeção para ativar a volta preditiva nas prévias do Android Studio. (I487fd).
Versão 1.2.0-alpha02
22 abril de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-alpha02. A versão 1.2.0-alpha02 contém estes commits.
Mudanças na API
- Renomeie
onBackparaonBackCompletede adicioneonBackCancelledao NavigationBackHandler para oferecer suporte ao processamento de gestos de retorno cancelados. (I92741). - Adicione
NavigationBackHandlerpara simplificar o processamento de gestos de volta e volta preditiva ao usarSceneState. Isso permite que os desenvolvedores criem com mais facilidade componentes de interface personalizados que oferecem suporte à navegação de retorno padrão e a gestos preditivos sem calcular manualmente os deltas da backstack. (I6a055). - Adicionamos
rememberNavigationEventStatepara simplificar a conexão deSceneStatecom o processamento de volta preditiva. (Iae49c).
Novos recursos
- Adição de uma API
ResultEventBuspara permitir a transmissão de resultados entre NavEntries com oLocalResultEventBusfornecido pelo novoResultEventBusNavEntryDecorator. Os resultados transmitidos podem ser avaliados como um estado comResultEventBus#conflateAsStateou como um fluxo de resultados comResultEffect.
Versão 1.2.0-alpha01
8 de abril de 2026
Lançamento de androidx.navigation3:navigation3-*:1.2.0-alpha01. A versão 1.2.0-alpha01 contém estes commits.
Correções de bugs
- O acesso a
LocalNavAnimatedContentScopede umOverlayScenenão vai mais causar umIllegalStateException, já que osOverlayScenesagora são fornecidos com umLocalAnimatedContentScopesem operação. (I2f00c, b/486067688)
Navigation3 versão 1.1
Versão 1.1.7
26 de agosto de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.7. A versão 1.1.7 contém estes commits.
Correções de bugs
- Correção de um problema em que os gestos de retorno preditivo acionados durante uma transição para frente não eram animados em resposta ao progresso do deslizar. O gesto "Voltar" preditivo agora será animado e concluído corretamente. (Icdcb0, b/456218398)
Versão 1.1.6
12 de agosto de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.6. A versão 1.1.6 contém estes commits.
Correções de bugs
- O
NavEntry.contentKeyagora usa por padrão um composto dekey.toString()ekey::class.toString(). Isso garante que objetos de dados que compartilham o mesmo nome, mas implementam interfaces diferentes, não tenham mais o mesmocontentKey. No entanto, okey::classda plataforma JS retorna apenas o nome da classe simples em vez do nome totalmente qualificado. Por isso, a plataforma JS ainda precisa implementar umcontentKeypersonalizado para objetos de dados com nomes duplicados. (I1fbbb, b/512534342) - Correção de
IllegalArgumentExceptiongerado porSaveableStateHolderpara reutilização de chaves quando várias transições de remoção estão em andamento simultaneamente devido à remoção rápida da backstack. (I4d728, b/516312097)
Versão 1.1.5
29 de julho de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.5. A versão 1.1.5 contém estes commits.
Correções de bugs
- A DSL
entryProvideragora priorizaNavEntrycriados com uma instância de chave, por exemplo,entry(key = userKey) { ... }em vez deNavEntrycriados com uma classe de chave, comoentry<UserKey>{ ... }.(Ib5ec9, b/533331924)
Versão 1.1.4
1º de julho de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.4. A versão 1.1.4 contém estes commits.
Correções de bugs
- Correção de uma entrada aberta que desaparecia imediatamente ao abrir uma entrada com metadados aninhados que continham valores lambda. (Idb872, b/520494430).
Versão 1.1.3
17 de junho de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.3. A versão 1.1.3 contém estes commits.
Correções de bugs
Correção de um problema de animação de sobreposição em que sobreposições aninhadas, como
ModalBottomSheet, eram reanimadas inesperadamente quando as sobreposições acima eram removidas. (Ia2b9e, b/502624496)Aumentamos a dependência
NavigationEventpara 1.1.2, o que removeu oNavigationEventHandlersem operação no modo de inspeção para ativar a volta preditiva nas prévias do Android Studio.
Versão 1.1.2
19 de maio de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.2. A versão 1.1.2 contém estes commits.
Correções de bugs
- Aumentamos a dependência
NavigationEventpara 1.1.1, que removeu oNavigationEventHandlersem operação no modo de inspeção para ativar a volta preditiva nas prévias do Android Studio.
Versão 1.1.1
22 abril de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.1. A versão 1.1.1 contém estes commits.
Correções de bugs
- O acesso a
LocalNavAnimatedContentScopede umOverlayScenenão vai mais causar umIllegalStateException, já que osOverlayScenesagora são fornecidos com umLocalAnimatedContentScopesem operação. (I2f00c, b/486067688)
Versão 1.1.0
8 de abril de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.0. A versão 1.1.0 contém estes commits.
A versão 1.1.0 agora está estável!
Mudanças importantes desde a versão 1.0.0
Elementos compartilhados entre cenas
- O Navigation3 agora oferece suporte ao tratamento de cenas como objeto de elemento compartilhado. Isso significa que, quando as cenas mudam, é possível garantir uma transição suave. Para ativar, transmita um SharedTransitionScope para NavDisplay ou rememberSceneState.
SceneDecoratorStrategy
- Introdução de SceneDecoratorStrategy para oferecer suporte a casos de uso, como decorar cenas com componentes comuns da interface ou compartilhar estado entre cenas.
DSL NavMetadata
- O Navigation3 agora oferece uma nova DSL de metadados com segurança de tipos. A DSL usa uma nova interface MetadataKey que permite definir os tipos de chave e valor que serão fornecidos ao mapa de metadados. Isso também adicionou novas NavMetadataKeys para transições NavDisplay, que podem ser usadas com a nova DSL de metadados para adicionar transições a NavDisplay.
Animações de OverlayScene
- A interface OverlayScene tem um novo callback de suspensão onRemoved. Esse callback é invocado depois que uma chave associada à cena é removida da pilha de retorno, mas antes de sair da composição. Isso permite que as animações de saída chamadas em onRemoved sejam concluídas antes que a cena de sobreposição seja removida da composição.
Outras mudanças
- NavDisplay e rememberSceneState agora usam um List<SceneStrategy> em vez do único parâmetro SceneStrategy anterior, que era encadeado pelo infixo then.
- Agora você pode adicionar metadados de forma dinâmica considerando a chave de entrada usando a DSL EntryProvider.
Versão 1.1.0-rc01
25 de março de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.0-rc01. A versão 1.1.0-rc01 contém estes commits.
Correções de bugs
- Agora, o
NavDisplaygarante que as entradas exibidas abaixo das sobreposições tenham oLifecyclelimitado aSTARTED. Isso garante que APIs comodropUnlessResumedcontinuem funcionando ao usar caixas de diálogo. (If209f, b/483966071) - Correção de um problema no
NavDisplayem que navegar para frente e para trás entre as mesmas telas e interromper as animações entre elas podia fazer com que a ordem z das telas ficasse incorreta. (I4d491, b/459419800)
Versão 1.1.0-beta01
11 de março de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.0-beta01. A versão 1.1.0-beta01 contém estes commits.
Versão 1.1.0-alpha05
25 de fevereiro de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.0-alpha05. A versão 1.1.0-alpha05 contém estes commits.
Mudanças na API
NavDisplayerememberSceneStateagora usam umList<SceneStrategy>em vez do único parâmetroSceneStrategyanterior, que era encadeado pelo infixothen. Isso se alinha mais de perto com oList<SceneDecoratorStrategy<T>>que ambas as APIs já usam. As APIs anteriores foram descontinuadas. (I78b2c, b/482108465)- Adicionamos um operador #contains de metadados para verificar se o mapa de metadados contém o
NavMetadataKeyespecificado. (Ic30db, b/485311895) - Adicionamos
NavMetadataKeyDialogKeyparaDialogSceneStrategyusar com a DSL de metadados. (Ic7a26, b/483388817)
Versão 1.1.0-alpha04
11 de fevereiro de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.0-alpha04. A versão 1.1.0-alpha04 contém estes commits.
Novos recursos
- O Navigation3 agora oferece uma nova DSL de metadados com segurança de tipos. A DSL usa uma nova interface
MetadataKeyque permite definir os tipos de chave e valor que serão fornecidos ao mapa de metadados. Isso também adicionou novosNavMetadataKeys para transiçõesNavDisplay, para que possam ser usados com a nova DSLmetadatae adicionar transições aNavDisplay. (Ic10ef, Ic049c,b/476213928)
Mudanças na API
- A interface
OverlayScenetem um novo callback de suspensãoonRemoved. Esse callback é invocado depois que uma chave associada à cena é removida da pilha de retorno, mas antes de sair da composição. Isso permite que as animações de saída chamadas emonRemovedsejam concluídas antes que a cena de sobreposição seja removida da composição. (I29a72, b/440558061) SceneStrategyseparou a função de decoração em um novoSceneDecoratorStrategy. Essa nova interface é o que deve ser usado para decorar cenas. Há novas APIs paraNavDisplayerememberSceneStateque permitem a adição deSceneDecoratorStrategies. (If9385, b/477669607, b/477670333)
Correções de bugs
- Foi corrigido um erro em que a transmissão de um
SharedTransitionLayoutparaNavDisplayourememberSceneStatee o uso de qualquerOverlayScenecausavam uma falha. Isso acontecia porque o uso deSharedTransitionLayoutsó funciona comNavEntriesrenderizados como parte doAnimatedContent, e osOverlayScenesão renderizados em janelas separadas. (I1bb76, b/478664101)
Atualização de dependências
- Do
Navigation31.0.1: oNavigation3agora depende doNavigationEvent1.0.2. Isso corrige umaIllegalStateExceptioncausada pelo uso deNavDisplaydurante as préviasAndroidStudio. (Id7212, b/477149762)
Versão 1.1.0-alpha03
28 de janeiro de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.0-alpha03. A versão 1.1.0-alpha03 contém estes commits.
Novos recursos
- Agora você pode adicionar metadados de forma dinâmica considerando a chave de entrada usando a DSL
EntryProvider. (I942fb, b/474416976).
Versão 1.1.0-alpha02
14 de janeiro de 2026
Lançamento de androidx.navigation3:navigation3-*:1.1.0-alpha02. A versão 1.1.0-alpha02 contém estes commits.
Novos recursos
- O
SceneStrategyagora oferece suporte ao aninhamento de cenas usando uma nova funçãocalculatedScene(Scene). Isso significa que osSceneStrategypodem ser personalizados para oferecer mais funcionalidades a outras cenas. (I5df7c,b/440333896)
Versão 1.1.0-alpha01
03 de dezembro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.1.0-alpha01. A versão 1.1.0-alpha01 contém estes commits.
Mudanças na API
- Agora, o
Navigation3oferece suporte ao tratamento de cenas como objeto de elemento compartilhado. Isso significa que, quando as cenas mudam, é possível garantir uma transição suave. Para ativar, transmita umSharedTransitionScopeparaNavDisplayourememberSceneState. (I15868).
Versão 1.0
Versão 1.0.1
11 de fevereiro de 2026
Lançamento de androidx.navigation3:navigation3-*:1.0.1. A versão 1.0.1 contém estes commits.
Atualização de dependências
Navigation3agora depende doNavigationEvent1.0.2. Isso corrige umaIllegalStateExceptioncausada pelo uso deNavDisplaydurante as prévias doAndroidStudio. (Id7212, b/477149762)
Versão 1.0.0
19 de novembro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0. A versão 1.0.0 contém estes commits.
Conheça o Navigation3!
- A biblioteca Navigation3 agora está estável. O Navigation3 é a primeira abordagem do AndroidX Compose para navegação.
- Para mais informações, consulte nossa postagem do blog de anúncio, acesse os recursos e confira as receitas.
Versão 1.0.0-rc01
5 de novembro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-rc01. A versão 1.0.0-rc01 contém estes commits.
Correções de bugs
- O
NavDisplayagora define umLocalLifecycleOwnerno nívelSceneque permite aos autores de cenas determinar se todas as transições foram concluídas verificando se oLifecycle.StateéRESUMED. O comportamento doLocalLifecycleOwnerno nívelNavEntrynão mudou: ele também permanece limitado aSTARTEDse uma transição estiver em andamento e aCREATEDse esseNavEntrytiver sido removido do backstack e estiver em processo de animação. (I03113, b/454045829)
Versão 1.0.0-beta01
22 de outubro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-beta01. A versão 1.0.0-beta01 contém estes commits.
Mudanças na API
- Agora,
SceneStrategyScopetem apenas um construtor público sem argumentos, adequado para testar seuSceneStrategye oSceneretornado isoladamente. Para casos de uso mais complexos, userememberSceneState(). (I8440c, b/451679047)
Correções de bugs
- Correção de um loop infinito ao encadear
SceneStrategycomthen. (Iba3f0, b/450323470) - Corrigimos o tremeluzir da tela ao trocar o
backStacktransmitido paraNavDisplaye usar animações. (Ief7b5, b/450967248)
Versão 1.0.0-alpha11
8 de outubro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha11. A versão 1.0.0-alpha11 contém estes commits.
Mudanças na API
- O método
calculateSceneemSceneStrategynão é mais@Composable. Em vez disso, considere mover esse trabalho para a construção do seu métodoSceneStrategy(ou seja, em um métodorememberMySceneStrategy()) que permite definir totalmente o ciclo de vida de qualquer valorrememberSaveableou instruçõesrememberprincipais com base nos valores corretos. (If1733, b/448709506). - O parâmetro
onBackparaSceneStrategy.calculateScenefoi movido para o novo escopo de receptor deSceneStrategyScopepara deixar mais claro que esse é um parâmetro opcional e fornecer um ponto de extensão para futuros recursos do Navigation3. (I3aea3, b/448460407) - A lambda
onBacktransmitida paraNavDisplaye para seuSceneStrategynão fornece mais um parâmetrocount: Intpara indicar quando várias entradas devem ser removidas. Em vez disso, a lambda() -> Unitserá chamada várias vezes seguidas no raro caso em que suas solicitações de cena mostram várias entradas. (Idedb5, b/446989346) - Remova a classe
NavEntryWrappere substitua a funcionalidade dela por uma classeNavEntryfinal com um novo construtor secundário que usa umNavEntrycom novo conteúdo. Isso vai permitir o suporte contínuo para encapsular uma entrada com conteúdo novo. (I7da2a, b/444447130) - A função
navEntryDecorator, que cria e retorna umNavEntryDecorator, foi removida e substituída pela classeNavEntryDecorator, que agora é pública e aberta para criação de subclasses. (If81f8, b/444447434, b/447381176) SavedStateNavEntryDecoratorfoi renomeado comoSaveableStateHolderNavEntryDecoratorporque decora entradas com umSaveableStateHolder. O decorador também foi refatorado de uma função para uma classe, já que é funcionalmente uma fábrica paraNavEntryDecorator. (Ie6013, b/447381176).- As exibições personalizadas que usam
SceneStatecomo alternativa aoNavDisplaynão precisam mais usar o local de composiçãoLocalEntriesToRenderInCurrentScene, que agora é interno. (Ic40ef, b/414668196) - Remoção de
SceneSetupNavEntryDecoratorerememberSceneSetupNavEntryDecorator()da plataforma da API pública. Essa funcionalidade agora é incluída por padrão sem que você precise fazer isso manualmente. (Ieae42, b/444479133) NavEntry,DialogScene,SinglePaneSceneeSceneStateagora implementam equals. (I96121)- A interface de cena tem um novo campo de metadados para anexar metadados específicos da cena ao NavDisplay. Isso permite que uma cena substitua os metadados no
NavDisplay, por exemplo, com transições. (I1fd96, b/443955625) - Simplifique a assinatura
rememberNavBackStackremovendo o parâmetro de tipo genérico redundante. A função agora aceitavararg elements: NavKey. (I03e45) - As animações padrão para
NavDisplayagora fazem parte da API comum, o que permite que elas sejam chamadas de todas as plataformas. (I71af9, b/447147159). - Renomeie
EntryProviderBuilderparaEntryProviderScopepara refletir com precisão que a classe é uma DSL do Kotlin que fornece um escopo para criarNavEntries. (Ia7465).
Correções de bugs
rememberNavBackStack()agora aplica a serialização polimórfica para NavKey e exige umSavedStateConfigurationpersonalizado configurado para garantir a restauração correta do estado. O KDoc foi atualizado para refletir a exigência de que todos os subtipos NavKey sejam registrados no SerializersModule fornecido. (I6de37,I782f2, b/446664383)
Versão 1.0.0-alpha10
24 de setembro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estes commits.
Mudanças na API
- Adicione uma nova sobrecarga de
NavDisplayque usa uma lista deNavEntry<T>decorada porrememberDecoratedNavEntries. (I4025b, b/441940314) - Movemos
DialogScenepara um novo pacote. (Ia5840). - Remoção da API pública
DecorateNavEntry. Em vez disso, userememberDecoratedNavEntriespara incluir um NavEntry com uma lista de decoradores. (Id8c09). - A interface do Navigation3 agora oferece novas propriedades
transitionSpecpadrão. (Ibcabd). - Adicionamos um novo objeto
SceneStatepara ajudar a gerenciar cenas. Isso também fornece uma nova sobrecarga deNavDisplayque usaSceneStateeNavigationEventState. (Idfb46, b/444479133) - O
NavDisplayagora permite personalizar as transições com base no queScenevocê está indo e vindo, analisando ocurrentStatee otargetStatedoTransition. (I906cc, b/443872322) NavigationEventInfoagora é umabstract classem vez de uminterface. Atualize todas as implementações personalizadas para herdar da classe (por exemplo,data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)- As APIs de gerenciador
navigationevent-composeforam atualizadas.NavigationEventHandlereNavigationBackHandler(e variantes) agora são compatíveis com uma nova sobrecarga que aceitaNavigationEventStates içados. As sobrecargas simples (que usamcurrentInfo) são preservadas e agora usam esse novo modelo de estado internamente. (Ic3251, b/444734264) - Todas as APIs de cena foram movidas de navigation3-ui para navigation3-runtime. Isso significa que agora eles estão disponíveis em todas as plataformas compatíveis com navigation3-runtime. (I431d0, b/444449993)
- Adicionada uma nova sobrecarga de
rememberDecoratedNavEntriesque usa uma lista deNavEntrypara decorar. As entradas de entrada já podem ser decoradas com outros decoradores de entrada. (I5a034, b/444230270) - Remover parâmetros de tipo curinga navigation3 (I02540)
- Melhoria no processamento de genéricos para a DSL
entryProvider. Se você importavaandroidx.navigation3.runtime.entryantes, isso não é mais necessário. (I299fc). - Restrinja a sobrecarga
NavBackStackSerializerbaseada em reflexão ao Android. Isso evita falhas implícitas de serialização de tempo de execução em plataformas que não são Android, exigindo o uso da sobrecargaSavedStateConfigurationexplícita em código multiplataforma. (I73313, b/420443609). - Faça do
swipeEdgedoNavigationEventum@IntDef(Icee54, b/443950342) - Restringir a serialização de
NavBackStackao Android. Isso evita falhas de tempo de execução em plataformas que não são Android. Para salvar o estado em várias plataformas, use a sobrecargarememberNavBackStackcom umSavedStateConfigurationexplícito. (I1e418, b/420443609)
Correções de bugs
- Correção de falha durante a volta preditiva quando o
NavDisplayaninhado tem uma única entrada secundária. (I2cdc0, b/441933162).
Versão 1.0.0-alpha09
10 de setembro de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estes commits.
Mudanças na API
- O
DecoratedNavEntryProviderfoi substituído porrememberDecoratedNavEntries, que cria e retorna NavEntries decoradas com a lista de decoradores fornecidos (I0fe1c, b/441328236). NavBackStackagora é genérico no tipoNavKey. Isso permite que apps e bibliotecas definam tipos de chaves personalizados para as pilhas de retorno, em vez de ficarem restritos aNavKey. (I4d190,Iad2f4, b/420443609)- O
NavBackStackagora é@kotlinx.serialization.Serializable, o que permite salvar e restaurar o estado de navegação em caso de encerramento do processo e mudanças de configuração sem código extra. (I2c3cf, b/420443609). RememberNavBackStackfoi movido paracommonMainpara garantir que seja fornecido em todos os destinos de plataforma. (Id69e7, b/420443609)
Correções de bugs
NavDisplayagora move corretamente cadaNavEntryindividual para oLifecycle.Statecorreto. (I30aac, b/440145700)- Correção de um problema em que o
NavDisplayignorava qualquerNavigationEventDispatcherOwneraninhado definido pelaLocalNavigationEventDispatcherOwnerda bibliotecaNavigationEvent. (I6224a).
Mudanças na dependência
- O Navigation3 agora depende do NavigationEvent Alpha08.
Versão 1.0.0-alpha08
27 de agosto de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estes commits.
Novos recursos
- Adição de novas metas do Kotlin Multiplatform (KMP) aos artefatos
Navigation3 Runtime. ONavigation3 Runtimeagora é compatível com as seguintes plataformas: JVM (Android e computador), nativa (Linux, iOS, watchOS, macOS, MinGW) e Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Observação: isso não fornece destinos do KMP para o artefatoNavigation3 UI. Em outras plataformas, você precisa implementar seu próprioNavDisplaypersonalizado. Se você quiser que ele seja compatível, vote no problema do Jetbrains aqui e acompanhe o progresso para receber mais suporte. - O objeto
NavDisplayInfoagora é público e pode ser usado para extrair a lista de entradas visíveis doNavDisplay. (Ibc91f).
Mudanças na API
- Adicionamos um novo
NavBackStackSerializerpara ser usado em conjunto comrememberNavBackStacke realizar a restauração de estado. Agora,rememberNavBackStack()também usa umSavedStateConfigurationque pode ser usado para fornecer sua própria configuração. (I2f4d2, I4cd58, b/420443609)
Correções de bugs
- Correção de um problema em que a navegação causava o disparo de eventos de ciclo de vida incorretos. (I8bf6d, b/425901162, b/434109022)
Problemas conhecidos
- Houve um bug introduzido por I8bf6d que fez com que os ciclos de vida fossem baseados em cenas em vez de entradas individuais, o que quebrou o ciclo de vida em todos os casos em que o
keyfornecido aoNavEntrynão é umStringou oNavEntrynão substituiu ocontentKeye o definiu como igual aokey. Isso foi corrigido para a próxima versão.Bundle(b/440145700)
Versão 1.0.0-alpha07
13 de agosto de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estes commits.
Atualização do MinSdk
- O minSdk padrão do AndroidX foi movido da API 21 para a API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
Mudanças na API
SavedStateNavEntryDecoratoragora usa oSaveableStateRegistryintegrado aoSaveableStateProviderpara salvar e restaurar estados. (If8d9a).- O
predictivePopTransitionSpecagora recebe a borda de deslize como um parâmetro, permitindo personalizar a transição com base na borda em que o usuário iniciou o gesto de volta preditivo. (I753a8).
Correções de bugs
- Corrigimos um problema que fazia com que as cenas personalizadas fossem recalculadas infinitamente porque a cena mais recente não era lembrada. (I7ba84, b/418153031)
Atualização de dependências
- O Navigation3 agora depende do Navigation Event
1.0.0-alpha06.
Versão 1.0.0-alpha06
30 de julho de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estes commits.
Atualização de dependências
- O Navigation3 agora depende do Navigation Event
1.0.0-alpha05.
Versão 1.0.0-alpha05
2 de julho de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estes commits.
Mudanças de comportamento
- O estado do
NavEntryagora é estritamente baseado na lista atual de decoradores transmitidos aoNavDisplay. Isso significa que os decoradores precisam ser trocados ao longo das backstacks no caso de várias backstacks para preservar o estado das NavEntries na backstack. Caso contrário, os estados serão limpos como se as entradas tivessem sido removidas (em vez de uma troca). (I7a759, b/428033667).
Versão 1.0.0-alpha04
18 de junho de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estes commits.
Mudanças na API
NavEntry.contentagora é particular. Para invocar o conteúdoNavEntry, chame a nova APINavEntry.Content(), que não exige mais um parâmetrokeypara ser invocada. (Icd0fd, b/420991203).NavEntry.keyagora é um campo particular. ONavEntrye os estados relevantes dele precisam ser identificados pelo novo campocontentKey, que é gerado pela nova lambdacontentKeyFactorye usa por padrão um hash salvável gerado peloNavEntry.key(I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812).
Mudanças na dependência
- O Navigation3 agora depende do novo artefato
androidx.navigationevent.compose.
Versão 1.0.0-alpha03
4 de junho de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estes commits.
Correções de bugs
Navigation3não vai mais limpar os estados do decorador parabackStacksque foram trocados e substituídos por outra instância debackStack. (I28a42, b/415076044).
Versão 1.0.0-alpha02
23 de maio de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estes commits.
Correções de bugs
- Foi corrigido um problema com o
SavedStateNavEntryDecoratorque causava colisões para diferentes classes de dados com os mesmos valores de propriedade. (b/418070648, Iff4775). - Correção de um problema de classe ausente que causava falhas ao executar sem declarar dependências explícitas. (b/419049149, I4b4ed)
Versão 1.0.0-alpha01
20 de maio de 2025
Lançamento de androidx.navigation3:navigation3-*:1.0.0-alpha01. A versão 1.0.0-alpha01 inclui estes commits.
Novos recursos
O Navigation3 é uma nova biblioteca de navegação criada especificamente para processar a navegação no app do Jetpack Compose. O artefato androidx.navigation3.runtime fornece os blocos de construção, enquanto o artefato androidx.navigation3.ui fornece a camada de interface usando a API NavDisplay. Os desenvolvedores podem fornecer o próprio estado diretamente à função combinável NavDisplay, que muda o conteúdo com base nas mudanças no estado do desenvolvedor.
@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 mais informações, consulte o guia do Navigation3.