navigation3

  
Navigation 3 は、Compose と連携するように設計された新しいナビゲーション ライブラリです。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2026 年 9 月 23 日 1.2.0 - - 1.3.0-alpha01

依存関係の宣言

navigation3 への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

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

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.3

バージョン 1.3.0-alpha01

2026 年 9 月 23 日

androidx.navigation3:navigation3-*:1.3.0-alpha01 がリリースされました。バージョン 1.3.0-alpha01 に含まれる commit については、こちらをご覧ください。

** バグの修正 **

  • NavDisplay での予測型「戻る」アニメーションのハンドオフを、DeferredAnimatedContent に移行して遷移ハンドオフの問題を解決することで修正しました。I145eaedd b/430807423

このアーティファクトのリリースノートはありません。

バージョン 1.2.0

2026 年 9 月 23 日

androidx.navigation3:navigation3-*:1.2.0 がリリースされました。バージョン 1.2.0 にはこれらの commit が含まれています。

1.2.0 が安定版になりました。

1.1.0 以降の重要な変更

Result API

  • この新しい API を使用すると、LocalResultEventBus と ResultEventBusNavEntryDecorator が提供する ResultEventBus を使用して NavEntries 間で結果を渡すことができます。
  • ResultEventBusNavEntryDecorator の外部で ResultEventBus をホイスティングして rememberResultEventBusNavEntryDecorator に渡すことをサポートする rememberResultEventBus を追加しました。
  • 渡された結果は、ResultEventBus#conflateAsState で状態としてアクセスするか、ResultEffect で結果のフローとして収集できます。

ディープリンク API

Navigation3 が、DeepLinkRequest、DeepLinkUri、DeepLinkMatcher を介して androidx.navigation3.runtime.deeplink で Kotlin マルチプラットフォーム(KMP)ディープリンクをサポートするようになりました。

  • DeepLinkRequest と RequestExtras: DeepLinkUri、URI 文字列、または Android Intent から作成されたディープリンク リクエストを表します。追加のリクエスト メタデータは、requestExtras DSL と RequestExtrasKey<T> で構築されたタイプセーフな RequestExtras コンテナを使用して付加できます。
  • DeepLinkMatcher: DeepLinkRequest と照合できるディープリンクを表します。各マッチャー インスタンスは、このディープリンクをサポートするナビゲーション キーに関連付けられています。ナビゲーション キーは複数のマッチャーに関連付けることができます。DeepLinkMatcher.match を呼び出すと、一致が成功した場合に関連付けられたナビゲーション キーを含む MatchResult が返されます。デフォルトの DeepLinkMatcher 実装は 2 つあります。Uri に基づいてディープリンクを照合する UriDeepLinkMatcher と、ブール値で一致する DeepLinkMatcher.Filter のみでディープリンクを照合する StaticKeyDeepLinkMatcher です。
  • BackStackMatcher: ディープリンクが一致した場合に合成バックスタックを構築する DeepLinkMatcher。BackStackMatcher は、DeepLinkMatcher.withBackStack 拡張関数を使用して作成できます。

予測型「戻る」の処理

  • SceneState と予測型「戻る」の処理(onBackCompleted と onBackCancelled)の接続を簡素化するために、NavigationBackHandler と rememberNavigationEventState を追加しました。これにより、カスタム UI コンポーネントは、バックスタックの差分を手動で計算することなく、標準の「戻る」ナビゲーションと予測型「戻る」ジェスチャーをサポートできます。
  • 予測型「戻る」のトランジションを改善しました。これには、前方アニメーションの途中でトリガーされる予測型「戻る」ジェスチャーのサポートが含まれます。

その他の変更点

  • NavEntry.contentKey は key.toString() と key::class.toString() の複合にデフォルト設定されるようになり、異なるインターフェース間で同じ単純名を共有する data object キー間のキーの衝突を防ぎます。
  • EntryProvider では、キータイプよりもキー インスタンスに基づいて一致を優先するようになりました。
  • Scene 実装が data class であるか、equals と hashCode を実装していることを確認する lint チェックを追加しました。

バージョン 1.2.0-rc01

2026 年 9 月 9 日

androidx.navigation3:navigation3-*:1.2.0-rc01 がリリースされました。バージョン 1.2.0-rc01 には、これらの commit が含まれています。

バグの修正

  • ディープリンク URI パターンで重複するプレースホルダ名を禁止。(I8985c、b/522343165)

バージョン 1.2.0-beta01

2026 年 8 月 26 日

androidx.navigation3:navigation3-*:1.2.0-beta01 がリリースされました。バージョン 1.2.0-beta01 にはこれらの commit が含まれています。

API の変更

  • DeepLinkRequest.extras を Map<String, Any> から、RequestExtrasKey<T> と T のペアを保存する新しい型安全なマップのようなクラス RequestExtras にリファクタリングしました。RequestExtras は requestExtras DSL でインスタンス化できます。(Ic929d、b/543883369)

バグの修正

  • 転送トランジション中にトリガーされた予測型「戻る」ジェスチャーが、スワイプの進行状況に応じてアニメーション化されない問題を修正しました。予測型「戻る」がアニメーション化され、正しく完了するようになりました。(Icdcb0、b/456218398)
  • Scene 実装がデータクラスであるか、equals と hashcode を実装して、必要に応じて同じ Scene が使用されるようにする lint チェックを追加しました。(Ibdf0d、b/542316099)
  • NavEntry.contentKey のデフォルトが key.toString() と key::class.toString() の複合になりました。これにより、同じ名前を共有するが異なるインターフェースを実装するデータ オブジェクトは、同じ contentKey を持たなくなります。ただし、JS プラットフォームの key::class は完全修飾された名前ではなく単純なクラス名のみを返すため、JS プラットフォームは名前が重複するデータ オブジェクトに対してカスタム contentKey を実装する必要があります。(I1fbbb、b/512534342)
  • 複数のポップ遷移が進行中の場合に、高速な戻るナビゲーションで使用される重複キーに対して SaveableStateProvider がスローする IllegalArgumentException を修正しました。(I4d728、b/516312097)

バージョン 1.2.0-alpha07

2026 年 7 月 29 日

androidx.navigation3:navigation3-*:1.2.0-alpha07 がリリースされました。バージョン 1.2.0-alpha07 に含まれる commit については、こちらをご覧ください。

API の変更

  • 別の DeepLinkMatcher.MatchResult をラップする抽象 WrappedMatchResult クラスを追加しました。これにより、カスタマイズされた一致結果を別の結果の上に重ねて表示できます。(I7d4dc、b/470282247)
  • 2 つのパラメータ(マッチャー インスタンスと、入力マッチャーの一致結果を提供してバックスタックを返すビルダー ラムダ)を受け取る新しい BackStackMatcher クラスを追加しました。一致すると、BackStackMatcher は、元のマッチ結果とラムダで構築されたバックスタックを含む WrappedMatchResult を拡張する BackStackMatchResult を返します。BackStackMatcher は、新しい DeepLinkMatcher.withBackStack 拡張関数でのみ作成できます。(Ibf987、b/470282247)

  • KSerializer を拡張して value : T を String としてエンコードおよびデコードする抽象 DeepLinkSerializer クラスを追加しました。DeepLinkSerializer を使用して、プリミティブ以外のディープリンク引数をシリアル化できます。rememberSaveable および rememberNavBackStack と互換性があります。(Id3c9f、b/470282247)

  • DeepLinkMatcher に 2 つ目の型パラメータ out R : DeepLinkMatcher.MatchResult<T> が追加されました。これにより、デベロッパーは型キャストなしで DeepLinkMatcher.match() から返されたサブクラス化された MatchResult のプロパティにアクセスできます。(I693d3、b/470282247)

  • DeepLinkMatcher.MatchResult's T の上限が Any? から Any に変更されました。(I6bf1a)

  • DeepLinkRequest コンストラクタ フィールド uri のデフォルトが 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

2026 年 7 月 15 日

androidx.navigation3:navigation3-*:1.2.0-alpha06 がリリースされました。バージョン 1.2.0-alpha06 に含まれる commit については、こちらをご覧ください。

バグの修正

  • URI フラグメントに関する UriDeepLinkMatcher ドキュメントを修正し、ワイルドカードを含むフラグメントは任意の入力と一致するが、入力は引数として抽出されないことを明確にしました。(I5ad9b、b/524677091)
  • URI パターンにスキームが含まれていないか、二重スラッシュで始まらない場合、UriDeepLinkMatcher がリクエストと一致しない問題を修正しました。たとえば、www.example.com/home は http://www.example.com/home と一致するようになります。(Ia6b65、b/522791926)

バージョン 1.2.0-alpha05

2026 年 7 月 1 日

androidx.navigation3:navigation3-*:1.2.0-alpha05 がリリースされました。バージョン 1.2.0-alpha05 に含まれる commit については、こちらをご覧ください。

新しい API

  • rememberResultEventBusNavEntryDecorator に渡すことができる ResultEventBus を返す rememberResultEventBus API を追加しました。これにより、ResultEventBusNavEntryDecorator の外部で ResultEventBus をホイスティングできます。(Ia655b、b/516995400)

DeepLinkRequest

  • KMP 互換のコンストラクタを 2 つ追加しました。1 つは DeepLinkUri を受け取り、もう 1 つは未加工の文字列 URI を受け取ります。(I3c088、b/513200887、b/522194187)
  • (Android のみ)Intent を受け取るコンストラクタを追加しました。(Ia0498、b/513200887、b/522194187)
  • すべてのコンストラクタには、追加のリクエスト情報を付加するための Map<String, Any> の extras フィールドが追加されています。(If81d5、b/513200887)
  • 新しい requestExtras dsl が、型安全な方法で extras のマップを構築する方法として追加されました。dsl は、RequestExtrasKey と Any のペアを保存する put 関数を提供します。Map<String, Any>.get(key) 拡張関数を使用して、RequestExtrasKey でマップから読み取ることができます(I5091c、b/513200887)
  • (Android のみ)ActionExtrasKey を使用して extras マップを作成する ActionExtrasKey 関数と actionExtra 関数を追加しました。(Id0c90、[b/513200887]
  • MimeTypeExtrasKey を使用して extras マップを作成するために、MimeTypeExtrasKey 関数と mimeTypeExtra 関数を追加しました。(I85131、b/513200887)

DeepLinkMatcher

  • mimeType または action で DeepLinkRequest をフィルタする DeepLinkMatcher.Filters を作成する DeepLinkMatcher.mimeTypeFilter 関数と DeepLinkMatcher.actionFilter 関数を追加しました(Android のみ)。どちらのフィルタも文字列の等価性で一致し、大文字と小文字は区別されません。(Ie7e67、b/513191950)

API の変更

DeepLinkRequest

  • fromAction ファクトリ関数を削除します。Action に関連付けるリクエストを作成するには、新しい DeepLinkRequest.extras フィールドを使用します。(Id0c90、b/513200887)
  • fromMimeType ファクトリ関数を削除しました。mimeType に関連付けられたリクエストを作成するには、新しい DeepLinkRequest.extras フィールドを使用します。(I85131、b/513200887)
  • (Android のみ)fromIntent ファクトリー関数を削除しました。Intent と extras マップを受け取る新しいコンストラクタに置き換えられました。(Ia0498、b/513200887、b/522194187)
  • ファクトリー関数 fromUri と fromUriString を削除しました。DeepLinkUri または未加工の文字列 URI を受け取る新しいコンストラクタに置き換えられました。(Id5b6f、b/522194187)
  • DeepLinkMatcher と DeepLinkMatcher.MatchResult、およびそれらのサブクラスは、共変 T(out T)を受け取るようになりました。これにより、階層キーを Matcher で使用する際に型キャストを行う必要がなくなります。(I1e453、b/525094876)
  • 引数マップの UriMatchResult コンストラクタ パラメータのデフォルト値が空のマップになりました。(I3acdd)
  • DeepLinkMatcher.Filter 抽象クラスが関数型インターフェースになりました。filter コンストラクタ フィールドが削除され、代わりにサブクラスで直接渡されるようになりました。(I9eb7d、b/522194187)

バグの修正

  • ラムダ値を含むネストされたメタデータを持つエントリにポップアップすると、ポップアップしたエントリがすぐに消える問題を修正しました。(Idb872、b/520494430)
  • 照合中に必須引数が欠落している場合に MissingFieldException をスローするのではなく、null の UriMatchResult を返すように UriDeepLinkMatcher を修正しました。(I5322f、b/524663005)
  • https スキームの URI を含む UriDeeplinkMatcher は、https スキームも持つリクエストとのみ照合できます。(Ibfe22、b/522304329)
  • DeepLinkRequest を UriDeepLinkMatcher に照合する際に、UriDeepLinkMatcher が http スキームを https との肯定的な一致として正しく識別するように修正(I3a62b、b/518804264)
  • DeepLinkMatcher.MatchResult コンパレータが、2 つの結果が等しい場合にデフォルトで 0 を返すようになりました。(I48ddb、b/518841353)
  • 必須の引数が欠落しているためにマッチ リクエストが失敗した場合、UriDeepLinkMatcher は例外をスローするのではなく、null の UriMatchResult を返すようになりました。(I669a7、b/470282247、b/512923412)

バージョン 1.2.0-alpha04

2026 年 6 月 3 日

androidx.navigation3:navigation3-*:1.2.0-alpha04 がリリースされました。バージョン 1.2.0-alpha04 に含まれる commit については、こちらをご覧ください。

バグの修正

  • オーバーレイ アニメーションの問題を修正しました。この問題では、上のオーバーレイがポップされると、ModalBottomSheet などのネストされたオーバーレイが予期せず再アニメーション化されていました。(Ia2b9e、b/502624496)

バージョン 1.2.0-alpha03

2026 年 5 月 19 日

androidx.navigation3:navigation3-*:1.2.0-alpha03 がリリースされました。バージョン 1.2.0-alpha03 に含まれる commit については、こちらをご覧ください。

新機能

Navigation 3 で DeepLinkRequest と DeepLinkMatcher を使用したディープリンクがサポートされるようになりました。

  • DeepLinkUri と、必要に応じて mimeType または action(Android のみ)を含む、DeepLinkRequestリクエストされたディープリンク。新しいクラスとともに、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 は、DeepLinkRequest と照合できるディープリンクを表します。各マッチャー インスタンスは、このディープリンクをサポートするナビゲーション キーに関連付けられています。ナビゲーション キーは複数のマッチャーに関連付けることができます。DeepLinkMatcher.match を呼び出すと、一致が成功した場合に関連付けられたナビゲーション キーを含む MatchResult が返されます。デフォルトの DeepLinkMatcher 実装は 2 つあります。Uri に基づいてディープリンクを照合する UriDeepLinkMatcher と、Boolean で照合される DeepLinkMatcher.Filter のみでディープリンクを照合する StaticKeyDeepLinkMatcher です。(I3798e、b/470282247)

  • DeepLinkUri を Serializable ナビゲーション キーに照合してディープリンクを処理する DeepLinkMatcher の意見の強い実装。UriDeepLinkMatcherプリミティブ型またはプリミティブのコレクション(リスト、配列、セットなど)のディープリンク引数をサポートしています。(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
    
  • android.net.Uri の Kotlin Multiplatform バージョンである DeepLinkUri を追加しました(Id4725、b/470282247)

API の変更

  • Compose の compileSdk に合わせて compileSdk 37 に引き上げ

バグの修正

  • 複数のオーバーレイを表示する際の AnimatedBottomSheetSample の IllegalArgumentException を修正しました。サンプル SceneStrategy が、最後の非 OverlayScene を正しく計算し、すべてのオーバーレイ シーンの下に表示するようになりました。(If2281、b/506733412)
  • NavigationEvent 依存関係を 1.1.1 に引き上げました。これにより、検査モードで no-op NavigationEventHandler が削除され、Android Studio プレビューで予測型「戻る」が有効になります。(I487fd)

バージョン 1.2.0-alpha02

2026 年 4 月 22 日

androidx.navigation3:navigation3-*:1.2.0-alpha02 がリリースされました。バージョン 1.2.0-alpha02 に含まれる commit については、こちらをご覧ください。

API の変更

  • onBack の名前を onBackCompleted に変更し、NavigationBackHandler に onBackCancelled を追加して、キャンセルされた「戻る」ジェスチャーの処理をサポートします。(I92741)
  • SceneState を使用する際に、戻るジェスチャーと予測型「戻る」の処理を簡素化するために NavigationBackHandler を追加します。これにより、デベロッパーは、バックスタックの差分を手動で計算することなく、標準の戻るナビゲーションと予測型ジェスチャーをサポートするカスタム UI コンポーネントをより簡単に作成できます。(I6a055)
  • rememberNavigationEventState を追加して、SceneState と予測型「戻る」の処理の接続を簡素化しました。(Iae49c)

新機能

  • 新しい ResultEventBusNavEntryDecorator によって提供される LocalResultEventBus を使用して NavEntry 間で結果を渡すことができる ResultEventBus API を追加しました。渡された結果は、ResultEventBus#conflateAsState の状態として評価することも、ResultEffect の結果のフローとして評価することもできます。

バージョン 1.2.0-alpha01

2026 年 4 月 8 日

androidx.navigation3:navigation3-*:1.2.0-alpha01 がリリースされました。バージョン 1.2.0-alpha01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • OverlayScene から LocalNavAnimatedContentScope にアクセスしても、IllegalStateException が発生しなくなりました。OverlayScenes に no-op LocalAnimatedContentScope が提供されるようになったためです。(I2f00c、b/486067688)

バージョン 1.1.7

2026 年 8 月 26 日

androidx.navigation3:navigation3-*:1.1.7 がリリースされました。バージョン 1.1.7 にはこれらの commit が含まれています。

バグの修正

  • 転送トランジション中にトリガーされた予測型「戻る」ジェスチャーが、スワイプの進行状況に応じてアニメーション化されない問題を修正しました。予測型「戻る」が適切にアニメーション化され、完了するようになりました。(Icdcb0、b/456218398)

バージョン 1.1.6

2026 年 8 月 12 日

androidx.navigation3:navigation3-*:1.1.6 がリリースされました。バージョン 1.1.6 にはこれらの commit が含まれています。

バグの修正

  • NavEntry.contentKey のデフォルトが key.toString() と key::class.toString() の複合になりました。これにより、同じ名前を共有するが異なるインターフェースを実装するデータ オブジェクトは、同じ contentKey を持たなくなります。ただし、JS プラットフォームの key::class は完全修飾された名前ではなく単純なクラス名のみを返すため、JS プラットフォームは名前が重複するデータ オブジェクトに対してカスタム contentKey を実装する必要があります。(I1fbbb、b/512534342)
  • バックスタックからの高速ポップにより複数のポップ遷移が同時に進行中の場合に、鍵の再利用のために SaveableStateHolder によって IllegalArgumentException がスローされる問題を修正しました。(I4d728、b/516312097)

バージョン 1.1.5

2026 年 7 月 29 日

androidx.navigation3:navigation3-*:1.1.5 がリリースされました。バージョン 1.1.5 にはこれらの commit が含まれています。

バグの修正

  • entryProvider DSL で、キー インスタンス(entry(key = userKey) { ... } など)でビルドされた NavEntry が、キー クラス(entry<UserKey>{ ... } など)でビルドされた NavEntry よりも優先されるようになりました。(Ib5ec9、b/533331924)

バージョン 1.1.4

2026 年 7 月 1 日

androidx.navigation3:navigation3-*:1.1.4 がリリースされました。バージョン 1.1.4 にはこれらの commit が含まれています。

バグの修正

  • ラムダ値を含むネストされたメタデータを持つエントリにポップアップすると、ポップアップしたエントリがすぐに消える問題を修正しました。(Idb872、b/520494430)

バージョン 1.1.3

2026 年 6 月 17 日

androidx.navigation3:navigation3-*:1.1.3 がリリースされました。バージョン 1.1.3 にはこれらの commit が含まれています。

バグの修正

  • オーバーレイ アニメーションの問題を修正しました。この問題では、上のオーバーレイがポップされると、ModalBottomSheet などのネストされたオーバーレイが予期せず再アニメーション化されていました。(Ia2b9e、b/502624496)

  • NavigationEvent 依存関係を 1.1.2 に引き上げました。これにより、検査モードで no-op NavigationEventHandler が削除され、Android Studio プレビューで予測型「戻る」が有効になります。

バージョン 1.1.2

2026 年 5 月 19 日

androidx.navigation3:navigation3-*:1.1.2 がリリースされました。バージョン 1.1.2 にはこれらの commit が含まれています。

バグの修正

  • NavigationEvent 依存関係を 1.1.1 に引き上げました。これにより、検査モードで no-op NavigationEventHandler が削除され、Android Studio プレビューで予測型「戻る」が有効になります。

バージョン 1.1.1

2026 年 4 月 22 日

androidx.navigation3:navigation3-*:1.1.1 がリリースされました。バージョン 1.1.1 にはこれらの commit が含まれています。

バグの修正

  • OverlayScene から LocalNavAnimatedContentScope にアクセスしても、IllegalStateException は発生しなくなりました。OverlayScenes に no-op LocalAnimatedContentScope が提供されるようになったためです。(I2f00c、b/486067688)

バージョン 1.1.0

2026 年 4 月 8 日

androidx.navigation3:navigation3-*:1.1.0 がリリースされました。バージョン 1.1.0 にはこれらの commit が含まれています。

1.1.0 が安定版になりました。

1.0.0 以降の重要な変更

シーン間の共有要素 - Navigation3 で、シーンを共有要素オブジェクトとして扱うことがサポートされるようになりました。つまり、シーンが切り替わる際に、スムーズな移行を確保できます。これを有効にするには、NavDisplay または rememberSceneState のいずれかに SharedTransitionScope を渡します。

SceneDecoratorStrategy - SceneDecoratorStrategy を導入して、一般的な UI コンポーネントでシーンを装飾したり、シーン間で状態を共有したりするユースケースをサポートします。

NavMetadata DSL - Navigation3 で、新しい型安全なメタデータ DSL が提供されるようになりました。DSL は、メタデータ マップに提供するキーと値の型を定義できる新しい MetadataKey インターフェースを使用します。また、NavDisplay 遷移用の新しい NavMetadataKeys も追加されました。これにより、新しいメタデータ DSL で NavDisplay に遷移を追加できるようになります。

OverlayScene アニメーション - OverlayScene インターフェースに新しい onRemoved 中断コールバックが追加されました。このコールバックは、シーンに関連付けられたキーがバックスタックから削除された後、コンポジションから離れる前に呼び出されます。これにより、onRemoved 内で呼び出された終了アニメーションが、オーバーレイ シーンがコンポジションから削除される前に完了します。

その他の変更 - NavDisplay と rememberSceneState は、then 中置演算子で連結されていた以前の単一の SceneStrategy パラメータではなく、List<SceneStrategy> を受け取るようになりました。- EntryProvider DSL を介して、エントリキーを考慮してメタデータを動的に追加できるようになりました。

バージョン 1.1.0-rc01

2026 年 3 月 25 日

androidx.navigation3:navigation3-*:1.1.0-rc01 がリリースされました。バージョン 1.1.0-rc01 にはこれらの commit が含まれています。

バグの修正

  • NavDisplay では、オーバーレイの下に表示されるエントリの Lifecycle が STARTED に制限されるようになりました。これにより、ダイアログを使用する際に dropUnlessResumed などの API が引き続き動作します。(If209f、b/483966071)
  • NavDisplay で、同じ画面間を前後に移動し、2 つの画面間のアニメーションを中断すると、画面の z オーダーが正しくなくなる可能性がある問題を修正しました。(I4d491、b/459419800)

バージョン 1.1.0-beta01

2026 年 3 月 11 日

androidx.navigation3:navigation3-*:1.1.0-beta01 がリリースされました。バージョン 1.1.0-beta01 にはこれらの commit が含まれています。

バージョン 1.1.0-alpha05

2026 年 2 月 25 日

androidx.navigation3:navigation3-*:1.1.0-alpha05 がリリースされました。バージョン 1.1.0-alpha05 に含まれる commit については、こちらをご覧ください。

API の変更

  • NavDisplay と rememberSceneState は、then 中置演算子で連結されていた以前の単一の SceneStrategy パラメータではなく、List<SceneStrategy> を取るようになりました。これは、これらの API がすでに受け取っている List<SceneDecoratorStrategy<T>> とより密接に一致します。以前の API は非推奨になりました。(I78b2c、b/482108465)
  • メタデータ マップに指定された NavMetadataKey が含まれているかどうかを確認するメタデータ #contains 演算子を追加しました。(Ic30db、b/485311895)
  • Metadata DSL で使用する DialogSceneStrategy の NavMetadataKey DialogKey を追加しました。(Ic7a26、b/483388817)

バージョン 1.1.0-alpha04

2026 年 2 月 11 日

androidx.navigation3:navigation3-*:1.1.0-alpha04 がリリースされました。バージョン 1.1.0-alpha04 に含まれる commit については、こちらをご覧ください。

新機能

  • Navigation3 では、新しい型安全なメタデータ DSL が提供されるようになりました。DSL は、メタデータ マップに提供するキーと値の型を定義できる新しい MetadataKey インターフェースを使用します。また、NavDisplay 遷移用の新しい NavMetadataKey も追加されました。これにより、新しい metadata DSL で NavDisplay に遷移を追加できるようになりました。(Ic10ef、Ic049c、b/476213928)

API の変更

  • OverlayScene インターフェースに新しい onRemoved suspend コールバックが追加されました。このコールバックは、シーンに関連付けられたキーがバックスタックから削除された後、コンポジションから離れる前に呼び出されます。これにより、onRemoved 内で呼び出された終了アニメーションが、オーバーレイ シーンがコンポジションから削除される前に完了します。(I29a72、b/440558061)
  • SceneStrategy は、デコレーション関数を新しい SceneDecoratorStrategy に分離しました。この新しいインターフェースは、シーンの装飾に使用する必要があります。SceneDecoratorStrategies を追加できるように、NavDisplay と rememberSceneState の新しい API が追加されました。(If9385、b/477669607、b/477670333)

バグの修正

  • SharedTransitionLayout を NavDisplay または rememberSceneState に渡し、OverlayScene を使用すると、SharedTransitionLayout の使用は AnimatedContent の一部としてレンダリングされる NavEntries でのみ機能し、OverlayScene は独自のウィンドウで個別にレンダリングされるため、クラッシュが発生するエラーを修正しました。(I1bb76、b/478664101)

依存関係の更新

  • Navigation3 1.0.1 以降: Navigation3 が NavigationEvent 1.0.2 に依存するようになりました。これにより、AndroidStudio プレビュー中に NavDisplay を使用したことが原因で発生する IllegalStateException が修正されます。(Id7212、b/477149762)

バージョン 1.1.0-alpha03

2026 年 1 月 28 日

androidx.navigation3:navigation3-*:1.1.0-alpha03 がリリースされました。バージョン 1.1.0-alpha03 に含まれる commit については、こちらをご覧ください。

新機能

  • EntryProvider DSL を使用して、エントリキーを考慮したメタデータを動的に追加できるようになりました。(I942fb、b/474416976)

バージョン 1.1.0-alpha02

2026 年 1 月 14 日

androidx.navigation3:navigation3-*:1.1.0-alpha02 がリリースされました。バージョン 1.1.0-alpha02 に含まれる commit については、こちらをご覧ください。

新機能

  • SceneStrategy で、新しい calculatedScene(Scene) 関数を介してシーンのネストがサポートされるようになりました。つまり、SceneStrategy をカスタマイズして、他のシーンに追加機能を提供できます。(I5df7c、b/440333896)

バージョン 1.1.0-alpha01

2025 年 12 月 3 日

androidx.navigation3:navigation3-*:1.1.0-alpha01 がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください。

API の変更

  • Navigation3 で、シーンを共有要素オブジェクトとして扱うことがサポートされるようになりました。つまり、シーンが切り替わる際に、スムーズな移行を確保できます。これを有効にするには、NavDisplay または rememberSceneState のいずれかに SharedTransitionScope を渡します。(I15868)

バージョン 1.0

バージョン 1.0.1

2026 年 2 月 11 日

androidx.navigation3:navigation3-*:1.0.1 がリリースされました。バージョン 1.0.1 にはこれらの commit が含まれています。

依存関係の更新

  • Navigation3 が NavigationEvent 1.0.2 に依存するようになりました。これにより、AndroidStudio プレビュー中に NavDisplay を使用したことが原因で発生する IllegalStateException が修正されます。(Id7212、b/477149762)

バージョン 1.0.0

2025 年 11 月 19 日

androidx.navigation3:navigation3-*:1.0.0 がリリースされました。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください。

Navigation3 のご紹介

  • Navigation3 ライブラリが安定版になりました。Navigation3 は、AndroidX Compose のナビゲーションに対する最初のアプローチです。
  • 詳しくは、お知らせのブログ投稿、リソース、レシピをご覧ください。

バージョン 1.0.0-rc01

2025 年 11 月 5 日

androidx.navigation3:navigation3-*:1.0.0-rc01 がリリースされました。バージョン 1.0.0-rc01 には、これらの commit が含まれています。

バグの修正

  • NavDisplay が Scene レベルで LocalLifecycleOwner を設定するようになりました。これにより、シーンの作成者は Lifecycle.State が RESUMED であることを確認することで、すべてのトランジションが完了したかどうかを判断できます。NavEntry レベルでの LocalLifecycleOwner の動作は変更されていません。遷移が進行中の場合は STARTED に制限され、その NavEntry がバックスタックからポップされてアニメーションで消えようとしている場合は CREATED に制限されます。(I03113、b/454045829)

バージョン 1.0.0-beta01

2025 年 10 月 22 日

androidx.navigation3:navigation3-*:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 にはこれらの commit が含まれています。

API の変更

  • SceneStrategyScope に引数なしのパブリック コンストラクタのみが追加され、SceneStrategy と返された Scene を単独でテストするのに適しています。より複雑なユースケースの場合は、rememberSceneState() を使用してください。(I8440c、b/451679047)

バグの修正

  • SceneStrategy と then をチェーンしたときの無限ループを修正しました。(Iba3f0、b/450323470)
  • NavDisplay に渡された backStack をスワップしてアニメーションを使用すると画面がちらつく問題を修正しました。(Ief7b5、b/450967248)

バージョン 1.0.0-alpha11

2025 年 10 月 8 日

androidx.navigation3:navigation3-*:1.0.0-alpha11 がリリースされました。バージョン 1.0.0-alpha11 に含まれる commit については、こちらをご覧ください。

API の変更

  • SceneStrategy の calculateScene メソッドが @Composable ではなくなりました。代わりに、この作業を SceneStrategy メソッドの構築(つまり、rememberMySceneStrategy() メソッド内)に移動することを検討してください。これにより、任意の rememberSaveable 値またはキー remember ステートメントのライフタイムを正しい値に基づいて完全に定義できます。(If1733、b/448709506)
  • SceneStrategy.calculateScene の onBack パラメータが新しいレシーバ スコープ SceneStrategyScope に移動されました。これは、このパラメータがオプションであることを明確にし、今後の Navigation3 機能の拡張ポイントを提供するためです。(I3aea3、b/448460407)
  • NavDisplay と SceneStrategy に渡される onBack ラムダは、複数のエントリをポップするタイミングを示す count: Int パラメータを提供しなくなりました。代わりに、Scene リクエストが複数のエントリをポップアップするまれなケースでは、() -> Unit ラムダが連続して複数回呼び出されるようになります。(Idedb5、b/446989346)
  • NavEntryWrapper クラスを削除し、その機能を、新しいコンテンツを含む NavEntry を受け取る新しいセカンダリ コンストラクタを持つ final NavEntry クラスに置き換えます。これにより、新しいコンテンツでエントリをラップするサポートが継続されます。(I7da2a、b/444447130)
  • NavEntryDecorator を作成して返す navEntryDecorator 関数が削除され、NavEntryDecorator クラスに置き換えられました。クラスは公開され、サブクラス化できるようになりました。(If81f8、b/444447434、b/447381176)
  • SavedStateNavEntryDecorator は、エントリを SaveableStateHolder で装飾するため、SaveableStateHolderNavEntryDecorator に名前が変更されました。デコレータは、機能的には NavEntryDecorator のファクトリであるため、関数からクラスにリファクタリングされました。(Ie6013、b/447381176)
  • NavDisplay の代わりに SceneState を使用するカスタム ディスプレイでは、LocalEntriesToRenderInCurrentScene コンポジション ローカル(現在は内部)を使用する必要がなくなりました。(Ic40ef、b/414668196)
  • 公開 API のサーフェスから SceneSetupNavEntryDecorator と rememberSceneSetupNavEntryDecorator() を削除しました。この機能はデフォルトで含まれるようになり、手動で含める必要がなくなりました。(Ieae42、b/444479133)
  • NavEntry、DialogScene、SinglePaneScene、SceneState がすべて equals を実装するようになりました。(I96121)
  • シーン インターフェースに、NavDisplay のシーン固有のメタデータを付加するための新しいメタデータ フィールドが追加されました。これにより、Scene は NavDisplay のメタデータをオーバーライドできます(たとえば、トランジションなど)。(I1fd96、b/443955625)
  • 冗長な汎用型パラメータを削除して、rememberNavBackStack シグネチャを簡素化します。この関数が vararg elements: NavKey を受け入れるようになりました。(I03e45)
  • NavDisplay のデフォルトのアニメーションが共通 API の一部となり、すべてのプラットフォームから呼び出せるようになりました。(I71af9、b/447147159)
  • EntryProviderBuilder の名前を EntryProviderScope に変更して、このクラスが NavEntries を構築するためのスコープを提供する Kotlin DSL であることを正確に反映します。(Ia7465)

バグの修正

  • rememberNavBackStack() は NavKey のポリモーフィック シリアル化を強制するようになり、正しい状態復元を保証するように構成されたカスタム SavedStateConfiguration が必要になりました。すべての NavKey サブタイプが提供された SerializersModule に登録されなければならないという要件を反映するように KDoc を更新しました。(I6de37、I782f2、b/446664383)

バージョン 1.0.0-alpha10

2025 年 9 月 24 日

androidx.navigation3:navigation3-*:1.0.0-alpha10 がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。

API の変更

  • rememberDecoratedNavEntries で装飾された NavEntry<T> のリストを受け取る新しい NavDisplay オーバーロードを追加しました。(I4025b、b/441940314)
  • DialogScene を新しいパッケージに移動しました。(Ia5840)
  • 公開 API DecorateNavEntry を削除しました。代わりに、rememberDecoratedNavEntries を使用して、デコレータのリストで NavEntry をラップします。(Id8c09)
  • Navigation3 UI で新しいデフォルトの transitionSpec プロパティが提供されるようになりました。(Ibcabd)
  • シーンの管理に役立つ新しい SceneState オブジェクトを追加しました。また、SceneState と NavigationEventState を取る新しい NavDisplay オーバーロードも提供します。(Idfb46、b/444479133)
  • NavDisplay では、Transition の currentState と targetState を参照して、移動元と移動先の Scene に基づいてトランジションをカスタマイズできるようになりました。(I906cc、b/443872322)
  • NavigationEventInfo が interface ではなく abstract class になりました。すべてのカスタム実装を更新して、クラス(data class MyInfo : NavigationEventInfo() など)から継承します。(I1e59c、b/444734264)
  • navigationevent-compose ハンドラ API が更新されました。NavigationEventHandler と NavigationBackHandler(およびバリエーション)が、ホイストされた NavigationEventState を受け取る新しいオーバーロードをサポートするようになりました。(currentInfo を受け取る)シンプルなオーバーロードは保持され、内部でこの新しい状態モデルを使用するようになりました。(Ic3251、b/444734264)
  • Scene API はすべて navigation3-ui から navigation3-runtime に移動しました。つまり、navigation3-runtime でサポートされているすべてのプラットフォームで利用できるようになりました。(I431d0、b/444449993)
  • 装飾する NavEntry のリストを受け取る新しい rememberDecoratedNavEntries オーバーロードを追加しました。入力エントリは、他のエントリ デコレータですでに装飾されている可能性があります。(I5a034、b/444230270)
  • navigation3 ワイルドカード型パラメータを削除(I02540)
  • entryProvider DSL のジェネリクスの処理を改善しました。以前に androidx.navigation3.runtime.entry をインポートしていた場合、今後は必要ありません。(I299fc)
  • リフレクション ベースの NavBackStackSerializer オーバーロードを Android に制限します。これにより、マルチプラットフォーム コードで明示的な SavedStateConfiguration オーバーロードの使用を強制することで、Android 以外のプラットフォームでの暗黙的なランタイム シリアル化の失敗を防ぎます。(I73313、b/420443609)
  • NavigationEvent の swipeEdge を @IntDef にする(Icee54、b/443950342)
  • NavBackStack のシリアル化を Android に制限します。これにより、Android 以外のプラットフォームでのランタイム エラーを防ぐことができます。マルチプラットフォームの状態保存には、明示的な SavedStateConfiguration を使用して rememberNavBackStack オーバーロードを使用します。(I1e418、b/420443609)

バグの修正

  • ネストされた NavDisplay に単一の子エントリがある場合の予測型「戻る」のクラッシュを修正(I2cdc0、b/441933162)

バージョン 1.0.0-alpha09

2025 年 9 月 10 日

androidx.navigation3:navigation3-*:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。

API の変更

  • DecoratedNavEntryProvider が rememberDecoratedNavEntries に置き換えられました。これは、指定されたデコレータのリストで装飾された NavEntry を作成して返します(I0fe1c、b/441328236)
  • NavBackStack は NavKey 型のジェネリックになりました。これにより、アプリとライブラリは NavKey に制限されることなく、バックスタックのカスタムキータイプを定義できます。(I4d190、Iad2f4、b/420443609)
  • NavBackStack が @kotlinx.serialization.Serializable になり、追加のボイラープレートなしで、プロセスの終了や構成の変更をまたいでナビゲーションの状態を保存および復元できるようになりました。(I2c3cf、b/420443609)
  • RememberNavBackStack は、すべてのプラットフォーム ターゲットで提供されるように commonMain に移動しました。(Id69e7、b/420443609)

バグの修正

  • NavDisplay が、個々の NavEntry を正しい Lifecycle.State に正しく移動するようになりました。(I30aac、b/440145700)
  • NavDisplay が NavigationEvent ライブラリの LocalNavigationEventDispatcherOwner を介して設定されたネストされた NavigationEventDispatcherOwner を無視する問題を修正しました。(I6224a)

依存関係の変更

バージョン 1.0.0-alpha08

2025 年 8 月 27 日

androidx.navigation3:navigation3-*:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。

新機能

  • Navigation3 Runtime アーティファクトに新しい Kotlin MultiPlatform(KMP)ターゲットを追加しました。Navigation3 Runtime は現在、JVM(Android とデスクトップ)、ネイティブ(Linux、iOS、watchOS、macOS、MinGW)、ウェブ(JavaScript、WasmJS)の各プラットフォームをサポートしています。(I55078、b/424410398、b/419294028、b/419046226)。注: これは Navigation3 UI アーティファクトの KMP ターゲットを提供しません。他のプラットフォームでは、独自のカスタム NavDisplay を実装する必要があります。サポートをご希望の場合は、こちらの Jetbrains の問題に投票し、進捗状況を追跡して、追加のサポートをご利用ください。
  • NavDisplayInfo オブジェクトが公開され、NavDisplay から表示可能なエントリのリストを取得するために使用できるようになりました。(Ibc91f)

API の変更

  • 状態の復元を行うために rememberNavBackStack と組み合わせて使用する新しい NavBackStackSerializer を追加しました。rememberNavBackStack() は、独自の構成を提供するために使用できる SavedStateConfiguration も受け取るようになりました。(I2f4d2、I4cd58、b/420443609)

バグの修正

  • ナビゲーションで誤ったライフサイクル イベントが発生する問題を修正しました。(I8bf6d、b/425901162、b/434109022)

既知の問題

  • I8bf6d によって導入されたバグにより、ライフサイクルが個々のエントリではなくシーンに基づいており、NavEntry に提供される key が String ではない場合や、NavEntry が contentKey をオーバーライドして key と等しく設定していない場合(これにより、キーを Bundle に保存できるようになります)に、ライフサイクルが機能しなくなっていました。このバグは次のリリースで修正されます。(b/440145700)

バージョン 1.0.0-alpha07

2025 年 8 月 13 日

androidx.navigation3:navigation3-*:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。

MinSdk の更新

API の変更

  • SavedStateNavEntryDecorator は、SaveableStateProvider に組み込まれた SaveableStateRegistry を使用して状態を保存および復元するようになりました。(If8d9a)
  • predictivePopTransitionSpec にスワイプ エッジがパラメータとして渡されるようになり、ユーザーが予測型「戻る」ジェスチャーを開始したエッジに基づいてトランジションをカスタマイズできるようになりました。(I753a8)

バグの修正

  • 最新のシーンが記憶されないため、カスタム シーンが無限に再計算される問題を修正しました。(I7ba84、b/418153031)

依存関係の更新

バージョン 1.0.0-alpha06

2025 年 7 月 30 日

androidx.navigation3:navigation3-*:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれる commit については、こちらをご覧ください。

依存関係の更新

バージョン 1.0.0-alpha05

2025 年 7 月 2 日

androidx.navigation3:navigation3-*:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください。

動作の変更

  • NavEntry の状態は、NavDisplay に渡されたデコレータの現在のリストに厳密に基づいています。つまり、バックスタック内の NavEntry の状態を保持するために、複数のバックスタックがある場合は、デコレータをバックスタックに沿って入れ替える必要があります。それ以外の場合、エントリが(スワップではなく)ポップされたかのように状態がクリアされます。(I7a759、b/428033667)

バージョン 1.0.0-alpha04

2025 年 6 月 18 日

androidx.navigation3:navigation3-*:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください。

API の変更

  • NavEntry.content が非公開になりました。NavEntry コンテンツを呼び出すには、新しい NavEntry.Content() API を呼び出します。この API では、呼び出しに key パラメータは不要になりました。(Icd0fd、b/420991203)
  • NavEntry.key がプライベート フィールドになりました。NavEntry とその関連する状態は、新しい contentKeyFactory ラムダから生成され、NavEntry.key から生成された保存可能なハッシュをデフォルトとする新しい contentKey フィールドで識別される必要があります。(I81a6c、b/422001357、b/420991203 I2d7d4、b/420991203、b/422841812)

依存関係の変更

  • Navigation3 は新しい androidx.navigationevent.compose アーティファクトに依存するようになりました。

バージョン 1.0.0-alpha03

2025 年 6 月 4 日

androidx.navigation3:navigation3-*:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Navigation3 は、スワップアウトされて別の backStack インスタンスに置き換えられた backStacks のデコレータ状態をクリアしなくなります。(I28a42、b/415076044)

バージョン 1.0.0-alpha02

2025 年 5 月 23 日

androidx.navigation3:navigation3-*:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 同じプロパティ値を持つ異なるデータクラスで競合が発生する原因となっていた SavedStateNavEntryDecorator の問題を修正しました。(b/418070648、Iff4775)
  • 明示的な依存関係を宣言せずに実行するとクラッシュする原因となっていたクラスの欠落の問題を修正しました。(b/419049149、I4b4ed)

バージョン 1.0.0-alpha01

2025 年 5 月 20 日

androidx.navigation3:navigation3-*:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

Navigation3 は、Jetpack Compose のアプリ内ナビゲーションを処理するために特別に構築された新しいナビゲーション ライブラリです。androidx.navigation3.runtime アーティファクトはビルディング ブロックを提供し、androidx.navigation3.ui アーティファクトは NavDisplay API を介して UI レイヤを提供します。デベロッパーは、独自の状態を NavDisplay コンポーズ可能な関数に直接提供できます。これにより、デベロッパーの状態の変化に基づいてコンテンツが変化します。

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

詳しくは、Navigation3 ガイドをご覧ください。