navigation3

  
Navigation 3 adalah library navigasi baru yang dirancang untuk bekerja dengan Compose.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
8 Oktober 2025 - - - 1.0.0-alpha11

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada navigation3, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

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

Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Tidak ada catatan rilis untuk artefak ini.

Versi 1.0

Versi 1.0.0-alpha11

8 Oktober 2025

androidx.navigation3:navigation3-*:1.0.0-alpha11 dirilis. Versi 1.0.0-alpha11 berisi commit ini.

Perubahan API

  • Metode calculateScene pada SceneStrategy tidak lagi @Composable. Sebagai gantinya, pertimbangkan untuk memindahkan pekerjaan ini ke konstruksi metode SceneStrategy (yaitu, dalam metode rememberMySceneStrategy()) yang sepenuhnya memungkinkan Anda menentukan masa aktif nilai rememberSaveable atau pernyataan remember utama dari nilai yang benar. (If1733, b/448709506)
  • Parameter onBack untuk SceneStrategy.calculateScene telah dipindahkan ke cakupan penerima baru SceneStrategyScope untuk memperjelas bahwa ini adalah parameter opsional dan menyediakan titik ekstensi untuk fitur Navigation3 mendatang. (I3aea3, b/448460407)
  • Lambda onBack yang diteruskan ke NavDisplay dan ke SceneStrategy Anda tidak lagi menyediakan parameter count: Int untuk menunjukkan kapan beberapa entri harus dikeluarkan. Sebagai gantinya, lambda () -> Unit kini akan dipanggil beberapa kali berturut-turut dalam kasus langka saat Scene Anda meminta beberapa entri muncul. (Idedb5, b/446989346)
  • Hapus class NavEntryWrapper dan ganti fungsinya dengan class NavEntry akhir dengan konstruktor sekunder baru yang menggunakan NavEntry dengan konten baru. Hal ini akan memungkinkan dukungan berkelanjutan untuk membungkus entri dengan konten baru. (I7da2a, b/444447130)
  • Fungsi navEntryDecorator yang membuat dan menampilkan NavEntryDecorator telah dihapus dan diganti dengan class NavEntryDecorator yang kini dibuat publik dan terbuka untuk sub-classing. (If81f8, b/444447434, b/447381176)
  • SavedStateNavEntryDecorator diganti namanya menjadi SaveableStateHolderNavEntryDecorator karena menghiasi entri dengan SaveableStateHolder. Dekorator juga telah difaktorkan ulang dari fungsi menjadi class karena secara fungsional merupakan factory untuk NavEntryDecorator. (Ie6013, b/447381176)
  • Tampilan kustom yang menggunakan SceneState sebagai alternatif untuk menggunakan NavDisplay tidak lagi diwajibkan untuk menggunakan komposisi lokal LocalEntriesToRenderInCurrentScene, yang kini bersifat internal. (Ic40ef, b/414668196)
  • Menghapus SceneSetupNavEntryDecorator dan rememberSceneSetupNavEntryDecorator() dari tampilan API publik. Fungsi ini kini disertakan secara default tanpa mengharuskan Anda menyertakannya secara manual. (Ieae42, b/444479133)
  • NavEntry, DialogScene, SinglePaneScene, dan SceneState kini mengimplementasikan equals. (I96121)
  • Antarmuka adegan memiliki kolom metadata baru untuk melampirkan metadata khusus adegan untuk NavDisplay. Hal ini memungkinkan Scene mengganti metadata pada NavDisplay, misalnya dengan transisi. (I1fd96, b/443955625)
  • Sederhanakan tanda tangan rememberNavBackStack dengan menghapus parameter jenis generik yang berlebihan. Fungsi ini kini menerima vararg elements: NavKey. (I03e45)
  • Animasi default untuk NavDisplay kini menjadi bagian dari API umum yang memungkinkan animasi tersebut dipanggil dari semua platform. (I71af9, b/447147159)
  • Ganti nama EntryProviderBuilder menjadi EntryProviderScope untuk mencerminkan secara akurat bahwa class tersebut adalah DSL Kotlin yang menyediakan cakupan untuk membangun NavEntries. (Ia7465)

Perbaikan Bug

  • rememberNavBackStack() kini menerapkan serialisasi polimorfik untuk NavKey dan memerlukan SavedStateConfiguration kustom yang dikonfigurasi untuk memastikan pemulihan status yang benar. KDoc telah diperbarui untuk mencerminkan persyaratan bahwa semua subjenis NavKey harus didaftarkan di SerializersModule yang disediakan. (I6de37,I782f2, b/446664383)

Versi 1.0.0-alpha10

24 September 2025

androidx.navigation3:navigation3-*:1.0.0-alpha10 dirilis. Versi 1.0.0-alpha10 berisi commit ini.

Perubahan API

  • Menambahkan overload NavDisplay baru yang menggunakan daftar NavEntry<T> yang telah dihiasi oleh rememberDecoratedNavEntries. (I4025b, b/441940314)
  • Memindahkan DialogScene ke paket baru. (Ia5840)
  • Menghapus API publik DecorateNavEntry. Sebagai gantinya, gunakan rememberDecoratedNavEntries untuk membungkus NavEntry dengan daftar dekorator. (Id8c09)
  • UI Navigation3 kini menyediakan properti transitionSpec default baru. (Ibcabd)
  • Menambahkan objek SceneState baru untuk membantu mengelola adegan. Hal ini juga menyediakan overload NavDisplay baru yang menggunakan SceneState dan NavigationEventState. (Idfb46, b/444479133)
  • NavDisplay kini memungkinkan Anda menyesuaikan transisi berdasarkan tujuan dan asal Scene dengan melihat currentState dan targetState Transition. (I906cc, b/443872322)
  • NavigationEventInfo sekarang menjadi abstract class, bukan interface. Perbarui semua implementasi kustom untuk mewarisi dari class (misalnya, data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)
  • API handler navigationevent-compose telah diupdate. NavigationEventHandler dan NavigationBackHandler (serta variannya) kini mendukung penggantian baru yang menerima NavigationEventState yang diangkat. Overload sederhana (mengambil currentInfo) dipertahankan dan kini menggunakan model status baru ini secara internal. (Ic3251, b/444734264)
  • Semua Scene API telah dipindahkan dari navigation3-ui ke navigation3-runtime. Artinya, kini tersedia di semua platform yang didukung oleh navigation3-runtime. (I431d0, b/444449993)
  • Menambahkan overload rememberDecoratedNavEntries baru yang menggunakan daftar NavEntry untuk menghias. Entri input dapat didekorasi dengan dekorator entri lain. (I5a034, b/444230270)
  • Menghapus parameter jenis kartu pengganti navigation3 (I02540)
  • Meningkatkan penanganan generik untuk DSL entryProvider. Jika sebelumnya Anda mengimpor androidx.navigation3.runtime.entry, hal ini tidak diperlukan lagi. (I299fc)
  • Batasi penggantian NavBackStackSerializer berbasis refleksi ke Android. Hal ini mencegah kegagalan serialisasi runtime implisit pada platform non-Android dengan menerapkan penggunaan penggantian SavedStateConfiguration eksplisit dalam kode multiplatform. (I73313, b/420443609)
  • Jadikan swipeEdge NavigationEvent sebagai @IntDef (Icee54, b/443950342)
  • Membatasi serialisasi NavBackStack ke Android. Hal ini mencegah kegagalan runtime di platform non-Android. Untuk penyimpanan status multiplatform, gunakan penggantian rememberNavBackStack dengan SavedStateConfiguration eksplisit. (I1e418, b/420443609)

Perbaikan Bug

  • Memperbaiki error selama kembali prediktif saat NavDisplay bertingkat memiliki satu entri turunan. (I2cdc0, b/441933162)

Versi 1.0.0-alpha09

10 September 2025

androidx.navigation3:navigation3-*:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit ini.

Perubahan API

  • DecoratedNavEntryProvider telah diganti dengan rememberDecoratedNavEntries yang membuat dan menampilkan NavEntry yang dihiasi dengan daftar dekorator yang disediakan (I0fe1c, b/441328236)
  • NavBackStack sekarang bersifat generik untuk jenis NavKey. Hal ini memungkinkan aplikasi dan library menentukan jenis kunci kustom untuk tumpukan belakangnya, bukan hanya dibatasi pada NavKey. (I4d190,Iad2f4, b/420443609)
  • NavBackStack kini menjadi @kotlinx.serialization.Serializable, sehingga memungkinkan penyimpanan dan pemulihan status navigasi di seluruh penghentian proses dan perubahan konfigurasi tanpa boilerplate tambahan. (I2c3cf, b/420443609)
  • RememberNavBackStack telah dipindahkan ke commonMain untuk memastikan bahwa RememberNavBackStack disediakan di semua target platform. (Id69e7, b/420443609)

Perbaikan Bug

  • NavDisplay kini memindahkan setiap NavEntry ke Lifecycle.State yang benar dengan benar. (I30aac, b/440145700)
  • Memperbaiki masalah saat NavDisplay mengabaikan NavigationEventDispatcherOwner bertingkat yang ditetapkan melalui LocalNavigationEventDispatcherOwner library NavigationEvent. (I6224a)

Perubahan Dependensi

Versi 1.0.0-alpha08

27 Agustus 2025

androidx.navigation3:navigation3-*:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.

Fitur Baru

  • Menambahkan target Multiplatform Kotlin (KMP) baru ke artefak Navigation3 Runtime. Navigation3 Runtime kini mendukung total platform berikut: JVM (Android dan Desktop), Native (Linux, iOS, watchOS, macOS, MinGW), dan Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Catatan: Ini tidak menyediakan target KMP untuk artefak Navigation3 UI. Di platform lain, Anda harus menerapkan NavDisplay kustom Anda sendiri. Jika Anda ingin melihatnya didukung, pilih masalah Jetbrains di sini dan pantau progresnya untuk mendapatkan dukungan tambahan di sana.
  • Objek NavDisplayInfo sekarang bersifat publik dan dapat digunakan untuk mengambil daftar entri yang terlihat dari NavDisplay. (Ibc91f)

Perubahan API

  • Menambahkan NavBackStackSerializer baru untuk digunakan bersama rememberNavBackStack guna melakukan pemulihan status. rememberNavBackStack() kini juga menggunakan SavedStateConfiguration yang dapat digunakan untuk memberikan konfigurasi Anda sendiri. (I2f4d2, I4cd58, b/420443609)

Perbaikan Bug

Masalah Umum

  • Ada bug yang diperkenalkan oleh I8bf6d yang menyebabkan Siklus Proses didasarkan pada adegan, bukan entri individual, yang merusak Siklus Proses untuk kasus apa pun saat key yang diberikan ke NavEntry bukan String atau NavEntry Anda belum mengganti contentKey dan menyetelnya sama dengan key (perhatikan bahwa tindakan ini memastikan kunci Anda dapat disimpan ke Bundle). Bug ini telah diperbaiki untuk rilis berikutnya. (b/440145700)

Versi 1.0.0-alpha07

13 Agustus 2025

androidx.navigation3:navigation3-*:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.

Pembaruan MinSdk

Perubahan API

  • SavedStateNavEntryDecorator sekarang menggunakan SaveableStateRegistry yang dibuat ke dalam SaveableStateProvider untuk menyimpan dan memulihkan status. (If8d9a)
  • predictivePopTransitionSpec kini menyediakan tepi geser sebagai parameter, sehingga Anda dapat menyesuaikan transisi berdasarkan tepi tempat pengguna memulai gestur Kembali Prediktif. (I753a8)

Perbaikan Bug

  • Memperbaiki masalah yang menyebabkan adegan kustom dihitung ulang tanpa batas karena adegan terbaru tidak diingat. (I7ba84, b/418153031)

Pembaruan dependensi

Versi 1.0.0-alpha06

30 Juli 2025

androidx.navigation3:navigation3-*:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.

Pembaruan Dependensi

Versi 1.0.0-alpha05

2 Juli 2025

androidx.navigation3:navigation3-*:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.

Perubahan Perilaku

  • Status NavEntry kini sepenuhnya didasarkan pada daftar dekorator saat ini yang diteruskan ke NavDisplay. Artinya, dekorator harus ditukar bersama data sebelumnya jika ada beberapa data sebelumnya untuk mempertahankan status NavEntry pada data sebelumnya. Jika tidak, status akan dihapus seolah-olah entri dikeluarkan (bukan ditukar). (I7a759, b/428033667)

Versi 1.0.0-alpha04

18 Juni 2025

androidx.navigation3:navigation3-*:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.

Perubahan API

  • NavEntry.content kini bersifat pribadi. Untuk memanggil konten NavEntry, panggil API NavEntry.Content() baru yang tidak lagi memerlukan parameter key untuk dipanggil. (Icd0fd, b/420991203)
  • NavEntry.key kini menjadi kolom pribadi. NavEntry dan status relevannya harus diidentifikasi oleh kolom contentKey baru yang dihasilkan dari lambda contentKeyFactory baru dan secara default menggunakan hash yang dapat disimpan yang dihasilkan dari NavEntry.key (I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812)

Perubahan Dependensi

  • Navigation3 kini bergantung pada artefak androidx.navigationevent.compose yang baru.

Versi 1.0.0-alpha03

4 Juni 2025

androidx.navigation3:navigation3-*:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.

Perbaikan Bug

  • Navigation3 tidak akan lagi menghapus status dekorator untuk backStacks yang telah ditukar dan diganti dengan instance backStack lain. (I28a42, b/415076044)

Versi 1.0.0-alpha02

23 Mei 2025

androidx.navigation3:navigation3-*:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah pada SavedStateNavEntryDecorator yang menyebabkan konflik untuk berbagai class data dengan nilai properti yang sama. (b/418070648, Iff4775)
  • Memperbaiki masalah class yang hilang yang akan menyebabkan error saat dijalankan tanpa mendeklarasikan dependensi eksplisit. (b/419049149, I4b4ed)

Versi 1.0.0-alpha01

20 Mei 2025

androidx.navigation3:navigation3-*:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.

Fitur Baru

Navigation3 adalah library navigasi baru yang dibuat khusus untuk menangani navigasi dalam aplikasi Jetpack Compose. Artefak androidx.navigation3.runtime menyediakan blok penyusun, sedangkan artefak androidx.navigation3.ui menyediakan lapisan UI melalui NavDisplay API. Developer dapat memberikan statusnya sendiri langsung ke fungsi composable NavDisplay, yang mengubah konten berdasarkan perubahan status developer.

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

Untuk mengetahui informasi selengkapnya, lihat panduan Navigation3.