navigation3

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

依存関係の宣言

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

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

Groovy

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.0.0-alpha11"
    implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha11"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11")
    implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11")
}

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

フィードバック

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

新しい問題を報告する

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

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

バージョン 1.0

バージョン 1.0.0-alpha11

2025 年 10 月 8 日

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

API の変更

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

バグの修正

  • rememberNavBackStack() で NavKey のポリモーフィック シリアル化が強制されるようになり、正しい状態復元を保証するように構成されたカスタム SavedStateConfiguration が必要になりました。すべての NavKey サブタイプが提供された SerializersModule に登録される必要があるという要件を反映するように KDoc が更新されました。(I6de37I782f2b/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 オーバーロードを追加しました。(I4025bb/441940314
  • DialogScene を新しいパッケージに移動しました。(Ia5840
  • 公開 API DecorateNavEntry を削除しました。代わりに、rememberDecoratedNavEntries を使用して、デコレータのリストで NavEntry をラップします。(Id8c09
  • Navigation3 UI で新しいデフォルトの transitionSpec プロパティが提供されるようになりました。(Ibcabd
  • シーンの管理に役立つ新しい SceneState オブジェクトを追加しました。また、SceneStateNavigationEventState を取る新しい NavDisplay オーバーロードも提供します。(Idfb46b/444479133
  • NavDisplay では、TransitioncurrentStatetargetState を参照して、Scene の移動元と移動先に基づいてトランジションをカスタマイズできるようになりました。(I906ccb/443872322
  • NavigationEventInfointerface ではなく abstract class になりました。すべてのカスタム実装を更新して、クラス(data class MyInfo : NavigationEventInfo() など)から継承します。(I1e59cb/444734264
  • navigationevent-compose ハンドラ API が更新されました。NavigationEventHandlerNavigationBackHandler(およびバリアント)が、ホイストされた NavigationEventState を受け取る新しいオーバーロードをサポートするようになりました。シンプルなオーバーロード(currentInfo を受け取る)は保持され、内部でこの新しい状態モデルを使用するようになりました。(Ic3251b/444734264
  • Scene API がすべて navigation3-ui から navigation3-runtime に移動しました。つまり、navigation3-runtime でサポートされているすべてのプラットフォームで利用できるようになりました。(I431d0b/444449993
  • 装飾する NavEntry のリストを受け取る新しい rememberDecoratedNavEntries オーバーロードを追加しました。入力エントリは、他のエントリ デコレータですでに装飾されている場合があります。(I5a034b/444230270
  • navigation3 ワイルドカード型パラメータを削除(I02540
  • entryProvider DSL のジェネリクスの処理を改善しました。以前に androidx.navigation3.runtime.entry をインポートしていた場合、今後は必要ありません。(I299fc
  • リフレクション ベースの NavBackStackSerializer オーバーロードを Android に制限します。これにより、マルチプラットフォーム コードで明示的な SavedStateConfiguration オーバーロードの使用を強制することで、Android 以外のプラットフォームでの暗黙的なランタイム シリアル化の失敗を防ぎます。(I73313b/420443609
  • NavigationEventswipeEdge@IntDef にする(Icee54b/443950342
  • NavBackStack のシリアル化を Android に制限。これにより、Android 以外のプラットフォームでのランタイム エラーを防ぐことができます。マルチプラットフォームの状態保存には、明示的な SavedStateConfiguration を使用して rememberNavBackStack オーバーロードを使用します。(I1e418b/420443609

バグの修正

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

バージョン 1.0.0-alpha09

2025 年 9 月 10 日

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

API の変更

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

バグの修正

  • NavDisplay が、個々の NavEntry を正しい Lifecycle.State に正しく移動するようになりました。(I30aacb/440145700
  • NavDisplayNavigationEvent ライブラリの 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)の合計 3 つのプラットフォームをサポートしています。(I55078b/424410398b/419294028b/419046226)。注: これは Navigation3 UI アーティファクトの KMP ターゲットを提供しません。他のプラットフォームでは、独自のカスタム NavDisplay を実装する必要があります。サポートをご希望の場合は、Jetbrains の問題(こちら)に投票して、追加のサポートの進捗状況をご確認ください。
  • NavDisplayInfo オブジェクトが公開され、NavDisplay から表示可能なエントリのリストを取得するために使用できるようになりました。(Ibc91f

API の変更

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

バグの修正

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

既知の問題

  • I8bf6d によって導入されたバグにより、ライフサイクルが個々のエントリではなくシーンに基づいており、NavEntry に提供される keyString ではない場合や、NavEntrycontentKey をオーバーライドして 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

バグの修正

  • 最新のシーンが記憶されないため、カスタム シーンが無限に再計算される問題を修正しました。(I7ba84b/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 の状態を保持するために、デコレータはバックスタックに沿ってスワップされる必要があります。それ以外の場合、エントリが(スワップではなく)ポップされたかのように状態がクリアされます。(I7a759b/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 パラメータは不要になりました。(Icd0fdb/420991203
  • NavEntry.key がプライベート フィールドになりました。NavEntry とその関連する状態は、新しい contentKeyFactory ラムダから生成され、NavEntry.key から生成された保存可能なハッシュをデフォルトとする新しい contentKey フィールドで識別される必要があります。(I81a6cb/422001357b/420991203 I2d7d4b/420991203b/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 のデコレータ状態をクリアしなくなります。(I28a42b/415076044

バージョン 1.0.0-alpha02

2025 年 5 月 23 日

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

バグの修正

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

バージョン 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 ガイドをご覧ください。