навигация3

Navigation 3 — это новая библиотека навигации, разработанная для работы с Compose.
Последнее обновление Стабильный релиз Предварительная версия релиза Бета-версия Альфа-версия
23 сентября 2026 г. 1.2.0 - - 1.3.0-alpha01

Объявление зависимостей

Чтобы добавить зависимость от navigation3, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .

Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:

Круто

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

Котлин

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

Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .

Обратная связь

Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.

Создать новую задачу

Для получения более подробной информации см. документацию по системе отслеживания ошибок .

Версия 1.3

Версия 1.3.0-alpha01

23 сентября 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.3.0-alpha01 . Версия 1.3.0-alpha01 содержит следующие коммиты .

**Исправлены ошибки**

  • Исправлена ​​ошибка с анимацией перехода назад в NavDisplay путем перехода на DeferredAnimatedContent и решения проблем с передачей перехода. I145eaedd b/430807423

Для этого артефакта отсутствуют примечания к выпуску.

Версия 1.2.0

23 сентября 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0 . Версия 1.2.0 содержит следующие коммиты .

Версия 1.2.0 теперь стабильна!

Важные изменения по сравнению с версией 1.1.0

API результатов

  • Этот новый API позволяет передавать результаты между NavEntries с помощью ResultEventBus , предоставляемого LocalResultEventBus и ResultEventBusNavEntryDecorator .
  • Добавлена rememberResultEventBus для поддержки перемещения ResultEventBus за пределы ResultEventBusNavEntryDecorator и передачи его в rememberResultEventBusNavEntryDecorator .
  • Полученные результаты можно получить в качестве состояния с помощью ResultEventBus#conflateAsState или собрать в виде потока результатов с помощью ResultEffect .

API глубоких ссылок

Navigation3 теперь поддерживает глубокие ссылки Kotlin Multiplatform (KMP) в androidx.navigation3.runtime.deeplink через DeepLinkRequest , DeepLinkUri и DeepLinkMatcher .

  • DeepLinkRequest и RequestExtras : представляют собой запрос на создание глубокой ссылки, созданный на основе DeepLinkUri , строки URI или Android Intent . Дополнительные метаданные запроса могут быть добавлены с помощью типобезопасного контейнера RequestExtras , созданного с использованием DSL requestExtras и RequestExtrasKey<T> .
  • DeepLinkMatcher : Represents a deep link that can be matched with a DeepLinkRequest . Each matcher instance is associated with the navigation key that supports this deep link. A navigation key can be associated with multiple matchers. Calling DeepLinkMatcher.match will return a MatchResult that contains the associated navigation key if match succeeds. There are two default DeepLinkMatcher implementations: UriDeepLinkMatcher for matching deep links based on Uri , and StaticKeyDeepLinkMatcher for matching deep links with only DeepLinkMatcher.Filter that match by a Boolean.
  • BackStackMatcher : DeepLinkMatcher для построения синтетического стека обратных ссылок при успешном совпадении с глубокой ссылкой. BackStackMatcher можно создать с помощью функции расширения DeepLinkMatcher.withBackStack .

Прогнозируемая обработка мяча сзади

  • Добавлены NavigationBackHandler и rememberNavigationEventState для упрощения связи SceneState с обработкой предиктивных нажатий кнопки "Назад" ( onBackCompleted и onBackCancelled ). Это позволяет пользовательским компонентам интерфейса поддерживать стандартную навигацию "Назад" и предиктивные жесты "Назад" без ручного вычисления разницы между значениями стека "Назад".
  • Улучшены анимационные переходы назад, включая поддержку анимационных жестов возвращения назад, запускаемых в процессе анимации движения вперед.

Другие изменения

  • Теперь NavEntry.contentKey по умолчанию представляет собой комбинацию key.toString() и key::class.toString() , что предотвращает конфликты ключей между ключами data object , имеющими одно и то же простое имя в разных интерфейсах.
  • Теперь EntryProvider отдает приоритет сопоставлению на основе экземпляров ключей, а не типов ключей.
  • Добавлена ​​проверка синтаксиса, чтобы гарантировать, что реализации Scene либо являются data class , либо реализуют интерфейсы equals и hashCode .

Версия 1.2.0-rc01

9 сентября 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-rc01 . Версия 1.2.0-rc01 содержит следующие коммиты .

Исправлены ошибки

  • Запретить использование повторяющихся имен-заполнителей в шаблонах URI глубоких ссылок. ( I8985c , b/522343165 )

Версия 1.2.0-beta01

26 августа 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-beta01 . Версия 1.2.0-beta01 содержит следующие коммиты .

Изменения в API

  • Класс DeepLinkRequest.extras был переработан из Map<String, Any> в новый типобезопасный класс, похожий на map, RequestExtras , который хранит пары RequestExtrasKey<T>T RequestExtras можно создать с помощью DSL requestExtras . ( Ic929d , b/543883369 )

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой предиктивные жесты возврата, срабатывающие во время перехода вперед, не анимировались в ответ на продвижение жеста. Теперь предиктивный жест возврата будет анимироваться и завершаться корректно. ( Icdcb0 , b/456218398 )
  • Добавлена ​​проверка синтаксиса, гарантирующая, что реализации Scene либо являются классами данных, либо реализуют интерфейсы equals и hashcode, чтобы обеспечить использование одной и той же Scene в соответствующих случаях. ( Ibdf0d , b/542316099 )
  • NavEntry.contentKey now defaults to a composite of key.toString() and key::class.toString() . This ensures that data objects that share the same name but implement different interfaces will no longer have the same contentKey . However, JS platform's key::class only returns simple class name instead of fully qualified name, so JS platform should still implement custom contentKey for data objects with duplicate names. ( I1fbbb , b/512534342 )
  • Исправлена ​​ошибка IllegalArgumentException выбрасываемая SaveableStateProvider при использовании повторяющихся ключей во время быстрой навигации назад, когда одновременно выполняется несколько переходов pop. ( I4d728 , b/516312097 )

Версия 1.2.0-alpha07

29 июля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-alpha07 . Версия 1.2.0-alpha07 содержит следующие коммиты .

Изменения в API

  • Добавлен абстрактный класс WrappedMatchResult для обертывания другого класса DeepLinkMatcher.MatchResult . Это позволяет настраивать результаты поиска, накладывая их поверх уже имеющихся. ( I7d4dc , b/470282247 )
  • Added new BackStackMatcher class which takes two parameters: a matcher instance, and a builder lambda that provides the input matcher's match result and returns a back stack. Upon a successful match, BackStackMatcher returns a BackStackMatchResult which extends WrappedMatchResult containing the original match result along with the back stack built with the lambda. The BackStackMatcher can only be created with the new DeepLinkMatcher.withBackStack extension function. ( Ibf987 , b/470282247 )

  • Добавлен абстрактный класс DeepLinkSerializer , расширяющий KSerializer для кодирования и декодирования value : T как String . DeepLinkSerializer можно использовать для сериализации не примитивных аргументов глубоких ссылок. Совместим с rememberSaveable и rememberNavBackStack . ( Id3c9f , b/470282247 )

  • DeepLinkMatcher добавлен второй параметр типа out R : DeepLinkMatcher.MatchResult<T> , позволяющий разработчикам получать доступ к свойствам подкласса MatchResult возвращаемого методом DeepLinkMatcher.match() без приведения типов. ( I693d3 , b/470282247 )

  • Верхняя граница T DeepLinkMatcher.MatchResult's изменилась с Any? на Any . ( I6bf1a )

  • Поле uri в конструкторе DeepLinkRequest теперь по умолчанию имеет значение null. Вторичный uriString в конструкторе переименован в uri . ( Ia0f14 , b/522194187 )

Исправлены ошибки

  • Теперь ResultEffect использует rememberUpdatedState для захвата последнего лямбда- onResult . ( I7d2a3 , b/531709234 )
  • Исправлена ​​ошибка сопоставления глубоких ссылок для пустых сегментов пути. Если тип аргумента — String, пустой путь будет рассматриваться как пустая строка. В противном случае пустой путь будет рассматриваться как отсутствие значения и будет использоваться значение по умолчанию. Если значение по умолчанию отсутствует, сопоставление завершится неудачей. ( I56575 , b/535298128 )
  • Добавлена ​​поддержка пустых значений запроса в DeepLinkRequest.uri . Если аргумент имеет тип String, пустое значение будет рассматриваться как буквальная пустая строка. В противном случае пустое значение рассматривается как отсутствие значения, и сопоставление будет пытаться использовать значение по умолчанию. Если значения по умолчанию нет, сопоставление завершится неудачей. ( I30343 , b/535127459 )
  • Теперь EntryProvider отдает приоритет сопоставлению на основе экземпляров ключей, а не типов ключей. ( Ib5ec9 , b/533331924 )
  • SceneState теперь корректно вычисляет предыдущие сцены, начиная с самой верхней сцены, не являющейся наложением. ( I91915 , b/513630541 )

Версия 1.2.0-alpha06

15 июля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-alpha06 . Версия 1.2.0-alpha06 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​документация UriDeepLinkMatcher по фрагментам URI, чтобы уточнить, что фрагменты с подстановочными знаками будут соответствовать любому входному значению, но это значение не будет извлекаться в качестве аргументов. ( I5ad9b , b/524677091 )
  • Исправлена ​​ошибка, из-за которой UriDeepLinkMatcher не мог сопоставить запрос, если шаблон URI не содержал схему или не начинался с двойной косой черты. Например, www.example.com/home теперь будет соответствовать http://www.example.com/home . ( Ia6b65 , b/522791926 )

Версия 1.2.0-alpha05

1 июля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-alpha05 . Версия 1.2.0-alpha05 содержит следующие коммиты .

Новый API

  • Добавлен API rememberResultEventBus , который возвращает объект ResultEventBus , который можно передать в rememberResultEventBusNavEntryDecorator . Это позволяет вынести ResultEventBus за пределы ResultEventBusNavEntryDecorator . ( Ia655b , b/516995400 )

DeepLinkRequest

  • Добавлены два конструктора, совместимых с KMP: один принимает DeepLinkUri, а другой — необработанный строковый URI. ( I3c088 , b/513200887 , b/522194187 )
  • (Только для Android) Добавлен конструктор, принимающий Intent . ( Ia0498 , b/513200887 , b/522194187 )
  • Все конструкторы имеют дополнительное поле extras для Map<String, Any> позволяющее прикрепить дополнительную информацию запроса. ( If81d5 , b/513200887 )
  • Добавлен новый DSL-класс requestExtras , обеспечивающий типобезопасный способ построения карты дополнительных данных. DSL предоставляет функцию put для сохранения пар RequestExtrasKey в Any . Функция расширения Map<String, Any>.get(key) может использоваться для чтения из карты с помощью RequestExtrasKey ( I5091c , b/513200887 ).
  • (Только для Android) Добавлены функции ActionExtrasKey и actionExtra для создания карты дополнительных материалов с помощью ActionExtrasKey . ( Id0c90 , [b/513200887]
  • Добавлены функции MimeTypeExtrasKey и mimeTypeExtra для создания карты дополнительных данных с использованием MimeTypeExtrasKey . ( I85131 , b/513200887 )

DeepLinkMatcher

  • Добавлены функции DeepLinkMatcher.mimeTypeFilter и DeepLinkMatcher.actionFilter для создания DeepLinkMatcher.Filters , которые фильтруют DeepLinkRequest по mimeType или action (только для Android). Оба фильтра сопоставляют строки по равенству и нечувствительны к регистру. ( Ie7e67 , b/513191950 )

Изменения в API

DeepLinkRequest

  • Удалите фабричную функцию fromAction . Для создания запроса, связанного с действием, используйте новое поле DeepLinkRequest.extras . ( Id0c90 , b/513200887 )
  • Удалена фабричная функция fromMimeType . Для создания запроса, связанного с MIME-типом, используйте новое поле DeepLinkRequest.extras . ( I85131 , b/513200887 )
  • (Только для Android) Удалено fromIntent функции фабрики Intent. Заменено новым конструктором, который принимает Intent и карту extras. ( Ia0498 , b/513200887 , b/522194187 )
  • Удалены фабричные функции fromUri и fromUriString . Вместо них добавлены новые конструкторы, принимающие либо DeepLinkUri , либо необработанный строковый URI. ( Id5b6f , b/522194187 )
  • DeepLinkMatcher , DeepLinkMatcher.MatchResult и их подклассы теперь принимают ковариантный тип T (out T), так что для иерархических ключей не потребуется приведение типов, как это делается с классами Matcher. ( I1e453 , b/525094876 )
  • Параметр `map` конструктора UriMatchResult для аргументов теперь по умолчанию имеет значение `pash`. ( I3acdd )
  • Абстрактный класс DeepLinkMatcher.Filter теперь является функциональным интерфейсом. Поле конструктора filter удалено и вместо этого должно передаваться непосредственно в подкласс. ( I9eb7d , b/522194187 )

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой извлеченная запись немедленно исчезала при извлечении записи, содержащей вложенные метаданные со значениями лямбда-функций. ( Idb872 , b/520494430 )
  • Исправлена ​​ошибка UriDeepLinkMatcher из-за которой он возвращает значение null UriMatchResult вместо генерации исключения MissingFieldException при отсутствии необходимых аргументов во время сопоставления. ( I5322f , b/524663005 )
  • Объект UriDeeplinkMatcher содержащий URI со схемой https, может быть сопоставлен только с запросами, которые также имеют схему https. ( Ibfe22 , b/522304329 )
  • Исправлена ​​ошибка UriDeepLinkMatcher из-за которой он корректно определял схему http как положительное совпадение с https при сопоставлении DeepLinkRequest с UriDeepLinkMatcher . ( I3a62b , b/518804264 )
  • Теперь компаратор DeepLinkMatcher.MatchResult по умолчанию возвращает 0, если два результата равны. ( I48ddb , b/518841353 )
  • Теперь UriDeepLinkMatcher будет возвращать значение null UriMatchResult вместо того, чтобы выбрасывать исключение, если запрос на сопоставление не удается из-за отсутствия необходимых аргументов. ( I669a7 , b/470282247 , b/512923412 )

Версия 1.2.0-alpha04

3 июня 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-alpha04 . Версия 1.2.0-alpha04 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​ошибка анимации наложений, из-за которой вложенные наложения, такие как ModalBottomSheet неожиданно переанимировались при удалении наложений, расположенных над ними. ( Ia2b9e , b/502624496 )

Версия 1.2.0-alpha03

19 мая 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-alpha03 . Версия 1.2.0-alpha03 содержит следующие коммиты .

Новые функции

В Navigation 3 теперь поддерживаются прямые ссылки с помощью DeepLinkRequest и DeepLinkMatcher :

  • DeepLinkRequest это запрошенная глубокая ссылка, содержащая DeepLinkUri и необязательный mimeType или action (только для Android). Вместе с новым классом существуют вспомогательные функции для создания экземпляра с uri , mimeType или action . Платформа Android также имеет вспомогательную функцию для формирования запроса из 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 represents a deep link that can be matched with a DeepLinkRequest . Each matcher instance is associated with the navigation key that supports this deep link. A navigation key can be associated with multiple matchers. Calling DeepLinkMatcher.match will return a MatchResult that contains the associated navigation key if match succeeds. There are two default DeepLinkMatcher implementations: UriDeepLinkMatcher for matching deep links based on Uri, and StaticKeyDeepLinkMatcher for matching deep links with only DeepLinkMatcher.Filter that match by a Boolean . ( I3798e , b/470282247 )

  • UriDeepLinkMatcher это реализация DeepLinkMatcher с заданными параметрами, которая обрабатывает глубокие ссылки, сопоставляя DeepLinkUri с сериализуемым ключом навигации. Она поддерживает аргументы глубоких ссылок в виде примитивных типов или коллекций примитивных типов, таких как списки, массивы и множества. ( 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
    
  • Добавлен DeepLinkUri , который является мультиплатформенной версией android.net.Uri для Kotlin ( Id4725 , b/470282247 ).

Изменения в API

  • Обновлена ​​версия compileSdk 37 чтобы соответствовать compileSdk Compose.

Исправлены ошибки

  • Исправлена IllegalArgumentException в AnimatedBottomSheetSample при отображении нескольких наложений. Пример SceneStrategy теперь будет корректно вычислять последнюю сцену, не являющуюся OverlayScene , и отображать её под всеми сценами наложений. ( If2281 , b/506733412 )
  • Обновлена ​​зависимость NavigationEvent до версии 1.1.1, что удаляет неактивный NavigationEventHandler в режиме проверки, позволяя включить функцию предиктивного возврата в предварительных просмотрах Android Studio. ( I487fd )

Версия 1.2.0-alpha02

22 апреля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-alpha02 . Версия 1.2.0-alpha02 содержит следующие коммиты .

Изменения в API

  • Переименуйте onBack в onBackCompleted и добавьте onBackCancelled в NavigationBackHandler для поддержки обработки отмененных жестов возврата назад. ( I92741 )
  • Добавлен NavigationBackHandler для упрощения обработки жестов возврата назад и предиктивного возврата при использовании SceneState . Это позволит разработчикам проще создавать пользовательские компоненты интерфейса, поддерживающие стандартную навигацию назад и предиктивные жесты, без ручного вычисления разницы стека возврата. ( I6a055 )
  • Добавьте rememberNavigationEventState для упрощения связи SceneState с предиктивной обработкой возврата. ( Iae49c )

Новые функции

  • Добавлен API ResultEventBus , позволяющий передавать результаты между NavEntries с помощью LocalResultEventBus , предоставляемого новым ResultEventBusNavEntryDecorator . Переданные результаты могут быть оценены как состояние с помощью ResultEventBus#conflateAsState или как поток результатов с помощью ResultEffect .

Версия 1.2.0-alpha01

8 апреля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.2.0-alpha01 . Версия 1.2.0-alpha01 содержит следующие коммиты .

Исправлены ошибки

  • Доступ к LocalNavAnimatedContentScope из OverlayScene больше не будет вызывать IllegalStateException , поскольку OverlayScenes теперь получают LocalAnimatedContentScope который ничего не делает. ( I2f00c , b/486067688 )

Версия 1.1.7

26 августа 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.7 . Версия 1.1.7 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой предиктивные жесты возврата, срабатывающие во время перехода вперед, не анимировались в ответ на продвижение жеста. Теперь предиктивный жест возврата будет анимироваться и завершаться корректно. ( Icdcb0 , b/456218398 )

Версия 1.1.6

12 августа 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.6 . Версия 1.1.6 содержит следующие коммиты .

Исправлены ошибки

  • NavEntry.contentKey now defaults to a composite of key.toString() and key::class.toString() . This ensures that data objects that share the same name but implement different interfaces will no longer have the same contentKey . However, JS platform's key::class only returns simple class name instead of fully qualified name, so JS platform should still implement custom contentKey for data objects with duplicate names. ( I1fbbb , b/512534342 )
  • Исправлена IllegalArgumentException выбрасываемая SaveableStateHolder при повторном использовании ключей в случае одновременного выполнения нескольких переходов из стека возврата из-за быстрого извлечения данных из стека возврата. ( I4d728 , b/516312097 )

Версия 1.1.5

29 июля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.5 . Версия 1.1.5 содержит следующие коммиты .

Исправлены ошибки

  • В DSL entryProvider теперь отдается приоритет NavEntry созданному с использованием экземпляра ключа, например entry(key = userKey) { ... } , над NavEntry , созданным с использованием класса ключа, такого как entry<UserKey>{ ... } . ( Ib5ec9 , b/533331924 )

Версия 1.1.4

1 июля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.4 . Версия 1.1.4 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой извлеченная запись немедленно исчезала при извлечении записи, содержащей вложенные метаданные со значениями лямбда-функций. ( Idb872 , b/520494430 )

Версия 1.1.3

17 июня 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.3 . Версия 1.1.3 содержит следующие коммиты .

Исправлены ошибки

  • Исправлена ​​ошибка анимации наложений, из-за которой вложенные наложения, такие как ModalBottomSheet неожиданно переанимировались при удалении наложений, расположенных над ними. ( Ia2b9e , b/502624496 )

  • Обновлена ​​зависимость NavigationEvent до версии 1.1.2, что позволило удалить неактивный NavigationEventHandler в режиме проверки кода и включить функцию «Предсказательное возвращение назад» в предварительных версиях Android Studio.

Версия 1.1.2

19 мая 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.2 . Версия 1.1.2 содержит следующие коммиты .

Исправлены ошибки

  • Обновлена ​​зависимость NavigationEvent до версии 1.1.1, что позволило удалить неактивный NavigationEventHandler в режиме проверки кода и включить функцию «Предсказательное возвращение назад» в предварительных версиях Android Studio.

Версия 1.1.1

22 апреля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.1 . Версия 1.1.1 содержит следующие коммиты .

Исправлены ошибки

  • Доступ к LocalNavAnimatedContentScope из OverlayScene больше не будет вызывать IllegalStateException , поскольку OverlayScenes теперь получают LocalAnimatedContentScope который ничего не делает. ( I2f00c , b/486067688 )

Версия 1.1.0

8 апреля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0 . Версия 1.1.0 содержит следующие коммиты .

Версия 1.1.0 теперь стабильна!

Важные изменения с версии 1.0.0

Общие элементы между сценами — Navigation3 теперь поддерживает обработку сцен как объектов общих элементов. Это означает, что при смене сцен можно обеспечить плавный переход. Включить эту функцию можно, передав SharedTransitionScope либо в NavDisplay , либо в rememberSceneState .

SceneDecoratorStrategy — Введение функции SceneDecoratorStrategy для поддержки таких сценариев использования, как оформление сцен общими компонентами пользовательского интерфейса или совместное использование состояния между сценами.

NavMetadata DSL - Navigation3 теперь предоставляет новый типобезопасный DSL для метаданных. DSL использует новый интерфейс MetadataKey , который позволяет определять типы ключей и значений, которые необходимо передавать в карту метаданных. Также добавлены новые NavMetadataKeys для переходов NavDisplay , чтобы их можно было использовать с новым DSL для метаданных для добавления переходов в NavDisplay .

Анимации OverlayScene — Интерфейс OverlayScene получил новый приостанавливающий коллбэк onRemoved . Этот коллбэк вызывается после удаления ключа, связанного со сценой, из стека возврата, но до того, как сцена покинет композицию. Это позволяет завершить анимации выхода, вызываемые внутри onRemoved , до того, как сцена наложения будет удалена из композиции.

Другие изменения : - NavDisplay и rememberSceneState теперь принимают List<SceneStrategy> вместо прежнего единственного параметра SceneStrategy , который был связан с помощью then инфикса. - Теперь вы можете динамически добавлять метаданные с учетом ключа записи через DSL EntryProvider .

Версия 1.1.0-rc01

25 марта 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-rc01 . Версия 1.1.0-rc01 содержит следующие коммиты .

Исправлены ошибки

  • Теперь NavDisplay гарантирует, что Lifecycle элементов, отображаемых под наложениями, ограничен значением STARTED . Это обеспечивает дальнейшую работу API, таких как dropUnlessResumed при использовании диалоговых окон. ( If209f , b/483966071 )
  • Исправлена ​​ошибка в NavDisplay , из-за которой переключение между одними и теми же экранами и прерывание анимации между ними могли приводить к неправильному порядку отображения экранов по оси Z. ( I4d491 , b/459419800 )

Версия 1.1.0-beta01

11 марта 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-beta01 . Версия 1.1.0-beta01 содержит следующие коммиты .

Версия 1.1.0-alpha05

25 февраля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-alpha05 . Версия 1.1.0-alpha05 содержит следующие коммиты .

Изменения в API

  • Теперь NavDisplay и rememberSceneState принимают List<SceneStrategy> вместо прежнего единственного параметра SceneStrategy , который был связан с помощью then инфикса. Это более точно соответствует List<SceneDecoratorStrategy<T>> , который уже принимают обе эти функции API. Предыдущие функции API устарели. ( I78b2c , b/482108465 )
  • Добавлен оператор #contains для проверки наличия в карте метаданных заданного NavMetadataKey . ( Ic30db , b/485311895 )
  • Добавлен ключ NavMetadataKey DialogKey для DialogSceneStrategy для использования с DSL метаданных. ( Ic7a26 , b/483388817 )

Версия 1.1.0-alpha04

11 февраля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-alpha04 . Версия 1.1.0-alpha04 содержит следующие коммиты .

Новые функции

  • В Navigation3 теперь доступен новый типобезопасный DSL для метаданных. DSL использует новый интерфейс MetadataKey , позволяющий определять типы ключей и значений, которые необходимо передавать в карту метаданных. Также добавлены новые NavMetadataKey для переходов NavDisplay , которые можно использовать с новым DSL metadata , чтобы добавлять переходы в NavDisplay . ( Ic10ef , Ic049c , b/476213928 )

Изменения в API

  • Интерфейс OverlayScene получил новый приостанавливающий коллбэк onRemoved . Этот коллбэк вызывается после удаления ключа, связанного со сценой, из стека возврата, но до того, как сцена покинет композицию. Это позволяет анимациям выхода, вызываемым внутри onRemoved , завершиться до того, как сцена наложения будет удалена из композиции. ( I29a72 , b/440558061 )
  • SceneStrategy функция декорирования выделена в новый класс SceneDecoratorStrategy . Этот новый интерфейс следует использовать для декорирования сцен. Появились новые API для NavDisplay и rememberSceneState , позволяющие добавлять SceneDecoratorStrategies . ( If9385 , b/477669607 , b/477670333 )

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой передача SharedTransitionLayout в NavDisplay или rememberSceneState и использование OverlayScene приводили к сбою, поскольку использование SharedTransitionLayout работает только с NavEntries , которые отображаются как часть AnimatedContent , а OverlayScene отображаются в отдельных окнах. ( I1bb76 , b/478664101 )

Обновление зависимостей

  • Начиная с Navigation3 1.0.1: Navigation3 теперь зависит от NavigationEvent 1.0.2. Это исправляет ошибку IllegalStateException возникающую при использовании NavDisplay во время предварительного просмотра AndroidStudio . ( Id7212 , b/477149762 )

Версия 1.1.0-alpha03

28 января 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-alpha03 . Версия 1.1.0-alpha03 содержит следующие коммиты .

Новые функции

  • Теперь вы можете динамически добавлять метаданные с учетом ключа записи через DSL EntryProvider . ( I942fb , b/474416976 )

Версия 1.1.0-alpha02

14 января 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-alpha02 . Версия 1.1.0-alpha02 содержит следующие коммиты .

Новые функции

  • SceneStrategy теперь поддерживается вложенность сцен с помощью новой функции calculatedScene(Scene) . Это означает, что SceneStrategy можно настраивать для предоставления дополнительной функциональности другим сценам. ( I5df7c , b/440333896 )

Версия 1.1.0-alpha01

3 декабря 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.1.0-alpha01 . Версия 1.1.0-alpha01 содержит следующие коммиты .

Изменения в API

  • Navigation3 теперь поддерживается обработка сцен как объектов с общими свойствами. Это означает, что при смене сцен можно обеспечить плавный переход. Включить эту функцию можно, передав SharedTransitionScope либо в NavDisplay , либо в rememberSceneState . ( I15868 )

Версия 1.0

Версия 1.0.1

11 февраля 2026 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.1 . Версия 1.0.1 содержит следующие коммиты .

Обновление зависимостей

  • Теперь Navigation3 зависит от NavigationEvent 1.0.2. Это исправляет ошибку IllegalStateException возникающую при использовании NavDisplay во время предварительного просмотра AndroidStudio . ( Id7212 , b/477149762 )

Версия 1.0.0

19 ноября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0 . Версия 1.0.0 содержит следующие коммиты .

Представляем Navigation3!

  • Библиотека Navigation3 теперь стабильна! Navigation3 — это подход к навигации, основанный на AndroidX Compose.
  • Для получения более подробной информации ознакомьтесь с нашим сообщением в блоге , посетите раздел ресурсов и попробуйте рецепты .

Версия 1.0.0-rc01

5 ноября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-rc01 . Версия 1.0.0-rc01 содержит следующие коммиты .

Исправлены ошибки

  • NavDisplay now sets a LocalLifecycleOwner at the Scene level that allows scene authors to determine whether all transitions have finished by checking that the Lifecycle.State is RESUMED . The behavior of the LocalLifecycleOwner at the NavEntry level is unchanged: it also remains capped at STARTED if a transition is in progress and is additionally capped at CREATED if that NavEntry has been popped from the back stack and is in the process of animating out. ( I03113 , b/454045829 )

Версия 1.0.0-beta01

22 октября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-beta01 . Версия 1.0.0-beta01 содержит следующие коммиты .

Изменения в API

  • Теперь у SceneStrategyScope есть только публичный конструктор без аргументов, подходящий для тестирования вашей SceneStrategy и возвращаемой Scene по отдельности. Для более сложных случаев использования, пожалуйста, используйте rememberSceneState() . ( I8440c , b/451679047 )

Исправлены ошибки

  • Исправлена ​​ошибка бесконечного цикла при последовательном использовании SceneStrategy с then . ( Iba3f0 , b/450323470 )
  • Исправлено мерцание экрана при перестановке backStack , передаваемого в NavDisplay , и использовании анимаций. ( Ief7b5 , b/450967248 )

Версия 1.0.0-alpha11

8 октября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha11 . Версия 1.0.0-alpha11 содержит следующие коммиты .

Изменения в API

  • Метод calculateScene в SceneStrategy больше не имеет @Composable . Вместо этого, рассмотрите возможность переноса этой работы в конструктор вашего метода SceneStrategy (т.е. в метод rememberMySceneStrategy() ), который позволяет полностью определить время жизни любых значений rememberSaveable или операторов key remember на основе правильных значений. ( If1733 , b/448709506 )
  • Параметр onBack для SceneStrategy.calculateScene перемещен в новую область видимости получателя SceneStrategyScope , чтобы сделать более понятным, что это необязательный параметр, и предоставить точку расширения для будущих функций Navigation3. ( I3aea3 , b/448460407 )
  • Функция onBack передаваемая в NavDisplay и SceneStrategy больше не предоставляет параметр count: Int указывающий, когда следует удалять несколько элементов. Вместо этого функция () -> Unit теперь будет вызываться несколько раз подряд в редких случаях, когда ваша сцена запрашивает удаление нескольких элементов. ( Idedb5 , b/446989346 )
  • Удалите класс NavEntryWrapper и замените его функциональность финальным классом NavEntry с новым вторичным конструктором, который принимает объект NavEntry с новым содержимым. Это позволит продолжить поддержку обертывания записи новым содержимым. ( I7da2a , b/444447130 )
  • Функция navEntryDecorator , которая создает и возвращает объект NavEntryDecorator , была удалена и заменена классом NavEntryDecorator , который теперь является публичным и открытым для наследования. ( If81f8 , b/444447434 , b/447381176 )
  • SavedStateNavEntryDecorator был переименован в SaveableStateHolderNavEntryDecorator поскольку он декорирует элементы с помощью SaveableStateHolder . Кроме того, декоратор был преобразован из функции в класс, поскольку по своей сути он является фабрикой для NavEntryDecorator . ( Ie6013 , b/447381176 )
  • Для пользовательских дисплеев, использующих SceneState в качестве альтернативы NavDisplay больше не требуется использовать локальную переменную композиции LocalEntriesToRenderInCurrentScene , которая теперь является внутренней. ( Ic40ef , b/414668196 )
  • Удалены SceneSetupNavEntryDecorator и rememberSceneSetupNavEntryDecorator() из публичного API. Теперь эта функциональность включена по умолчанию без необходимости ее ручного добавления. ( Ieae42 , b/444479133 )
  • Теперь NavEntry , DialogScene , SinglePaneScene и SceneState реализуют интерфейс equals. ( I96121 )
  • В интерфейсе сцены появилось новое поле метаданных для добавления метаданных, специфичных для сцены, к NavDisplay. Это позволяет сцене переопределять метаданные в NavDisplay , например, для переходов. ( I1fd96 , b/443955625 )
  • Упростите сигнатуру rememberNavBackStack , удалив избыточный параметр типа generic. Теперь функция принимает vararg elements: NavKey . ( I03e45 )
  • Анимации по умолчанию для NavDisplay теперь являются частью общего API, что позволяет вызывать их со всех платформ. ( I71af9 , b/447147159 )
  • Переименуйте EntryProviderBuilder в EntryProviderScope , чтобы точно отразить, что класс представляет собой Kotlin DSL, предоставляющий область видимости для создания NavEntries . ( Ia7465 )

Исправлены ошибки

  • Функция rememberNavBackStack() теперь обеспечивает полиморфную сериализацию для NavKey и требует наличия пользовательской SavedStateConfiguration , настроенной для корректного восстановления состояния. Документация KDoc была обновлена, чтобы отразить требование о том, что все подтипы NavKey должны быть зарегистрированы в предоставленном модуле SerializersModule. ( I6de37 , I782f2 , b/446664383 )

Версия 1.0.0-alpha10

24 сентября 2025 г.

Выпущена версия androidx.navigation3:navigation3-*:1.0.0-alpha10 . Версия 1.0.0-alpha10 содержит следующие коммиты .

Изменения в API

  • Добавлена ​​новая перегрузка NavDisplay , которая принимает список NavEntry<T> , помеченных атрибутом rememberDecoratedNavEntries . ( I4025b , b/441940314 )
  • Перенесено DialogScene в новый пакет. ( Ia5840 )
  • Удалите публичный API DecorateNavEntry . Вместо этого используйте rememberDecoratedNavEntries , чтобы обернуть NavEntry списком декораторов. ( Id8c09 )
  • В Navigation3 UI теперь доступны новые свойства transitionSpec по умолчанию. ( Ibcabd )
  • Добавлен новый объект SceneState для управления сценами. Он также предоставляет новую перегрузку NavDisplay , которая принимает SceneState и NavigationEventState . ( Idfb46 , b/444479133 )
  • Теперь NavDisplay позволяет настраивать переходы в зависимости от того, в какую Scene вы переходите и из какой, анализируя currentState и targetState Transition . ( I906cc , b/443872322 )
  • NavigationEventInfo теперь является abstract class а не interface . Обновите все пользовательские реализации, чтобы они наследовали от этого класса (например, data class MyInfo : NavigationEventInfo() ). ( I1e59c , b/444734264 )
  • The navigationevent-compose handler APIs are updated. NavigationEventHandler and NavigationBackHandler (and variants) now support a new overload that accepts a hoisted NavigationEventState s. The simple overloads (taking currentInfo ) are preserved and now use this new state model internally. ( Ic3251 , b/444734264 )
  • All of the Scene APIs have been moved out of navigation3-ui to navigation3-runtime. This means they are now available on all platforms supported by navigation3-runtime. ( I431d0 , b/444449993 )
  • Added new rememberDecoratedNavEntries overload that takes a list of NavEntry to decorate. The input entries can be already decorated with other entry decorators. ( I5a034 , b/444230270 )
  • Remove navigation3 wildcard type parameters ( I02540 )
  • Improved the handling of generics for the entryProvider DSL. If you were previously importing androidx.navigation3.runtime.entry , this is no longer required. ( I299fc )
  • Restrict the reflection-based NavBackStackSerializer overload to Android. This prevents implicit runtime serialization failures on non-Android platforms by enforcing the use of the explicit SavedStateConfiguration overload in multiplatform code. ( I73313 , b/420443609 )
  • Make NavigationEvent 's swipeEdge an @IntDef ( Icee54 , b/443950342 )
  • Restrict NavBackStack serialization to Android. This prevents runtime failures on non-Android platforms. For multiplatform state saving, use the rememberNavBackStack overload with an explicit SavedStateConfiguration . ( I1e418 , b/420443609 )

Исправлены ошибки

  • Fix crash during predictive back when nested NavDisplay has a single child entry. ( I2cdc0 , b/441933162 )

Version 1.0.0-alpha09

10 сентября 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits .

API Changes

  • The DecoratedNavEntryProvider has been replaced with rememberDecoratedNavEntries that creates and return NavEntries decorated with the list of provided decorators ( I0fe1c , b/441328236 )
  • NavBackStack is now generic over the NavKey type. This allows apps and libraries to define custom key types for their back stacks, rather than being restricted to NavKey . ( I4d190 , Iad2f4 , b/420443609 )
  • NavBackStack is now @kotlinx.serialization.Serializable , making it possible to save and restore navigation state across process death and configuration changes without extra boilerplate. ( I2c3cf , b/420443609 )
  • RememberNavBackStack has been moved to commonMain to ensure it is provided on all platform targets. ( Id69e7 , b/420443609 )

Исправлены ошибки

  • NavDisplay now correctly moves each individual NavEntry to the correct Lifecycle.State . ( I30aac , b/440145700 )
  • Fixed an issue where NavDisplay would ignore any nested NavigationEventDispatcherOwner set via the NavigationEvent library's LocalNavigationEventDispatcherOwner . ( I6224a )

Dependency Changes

Version 1.0.0-alpha08

27 августа 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits .

Новые функции

  • Added new Kotlin MultiPlatform (KMP) targets to Navigation3 Runtime artifacts. Navigation3 Runtime now supports the following platforms in total: JVM (Android and Desktop), Native (Linux, iOS, watchOS, macOS, MinGW), and Web (JavaScript, WasmJS). ( I55078 , b/424410398 , b/419294028 , b/419046226 ). Note: This does not provide KMP targets for Navigation3 UI artifact. On other platforms, you will need to implement your own custom NavDisplay . If you would like to see it supported, please vote on the Jetbrains issue here and track the progress for additional support there.
  • The NavDisplayInfo object is now public and can be used to retrieve the list of visible entries from the NavDisplay . ( Ibc91f )

API Changes

  • Added a new NavBackStackSerializer to be used in conjunction with rememberNavBackStack to perform state restoration. rememberNavBackStack() now also takes a SavedStateConfiguration that can be used to provide your own configuration. ( I2f4d2 , I4cd58 , b/420443609 )

Исправлены ошибки

Известные проблемы

  • There was a bug introduced by I8bf6d that caused Lifecycles to be based on scenes instead of individual entries, which broke Lifecycle for any cases where the key provided to the NavEntry is not a String or your NavEntry has not overridden the contentKey and set it equal to the key (note that doing this enforces that your key can be saved into a Bundle ). This has been fixed for the next release. ( b/440145700 )

Version 1.0.0-alpha07

13 августа 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits .

MinSdk Update

API Changes

  • SavedStateNavEntryDecorator now uses the SaveableStateRegistry built into SaveableStateProvider to save and restore states. ( If8d9a )
  • The predictivePopTransitionSpec is now provided the swipe edge as a parameter, allowing you to customize the transition based on what edge the user started the Predictive Back gesture from. ( I753a8 )

Исправлены ошибки

  • Fixed an issue that would cause custom scenes to be infinitely recalculated because the most recent scene was not being remembered. ( I7ba84 , b/418153031 )

Dependency update

Version 1.0.0-alpha06

30 июля 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits .

Dependency Update

Version 1.0.0-alpha05

2 июля 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits .

Behavior Changes

  • The NavEntry 's state is now strictly based on the current list of decorators passed to the NavDisplay . This means that decorators should be swapped along your back stacks in the case of multiple back stacks in order to preserve the state of the NavEntries on the back stack. Otherwise, the states will be cleared as if the entries were popped (instead of a swap). ( I7a759 , b/428033667 )

Version 1.0.0-alpha04

18 июня 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits .

API Changes

  • NavEntry.content is now private. To invoke NavEntry content, call the new NavEntry.Content() api which no longer requires a key parameter to invoke. ( Icd0fd , b/420991203 )
  • NavEntry.key is now a private field. The NavEntry and its relevant states should be identified by the new contentKey field which is generated from the new contentKeyFactory lambda and defaults to a saveable hash generated from NavEntry.key ( I81a6c , b/422001357 , b/420991203 I2d7d4 , b/420991203 , b/422841812 )

Dependency Changes

  • Navigation3 now depends on the new androidx.navigationevent.compose artifact.

Version 1.0.0-alpha03

4 июня 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits .

Исправлены ошибки

  • Navigation3 will no longer clear decorator states for backStacks that have been swapped out and replaced with another backStack instance. ( I28a42 , b/415076044 )

Version 1.0.0-alpha02

23 мая 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits .

Исправлены ошибки

  • Fixed an issue with the SavedStateNavEntryDecorator which caused collisions for different data classes with the same property values. ( b/418070648 , Iff4775 )
  • Fixed a missing class issue that would cause crashes when running without declaring explicit dependencies. ( b/419049149 , I4b4ed )

Version 1.0.0-alpha01

20 мая 2025 г.

androidx.navigation3:navigation3-*:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits .

Новые функции

Navigation3 is a new navigation library built specifically to handle Jetpack Compose in-app navigation. The androidx.navigation3.runtime artifact provides the building blocks, while the androidx.navigation3.ui artifact provides the UI layer via the NavDisplay API. Developers can provide their own state directly to the NavDisplay composable function, which changes the content based on changes in the developer state.

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

For more information, see the Navigation3 guide .