Jetpack Navigation 3 versi 1.0 sudah stabil 🎉. Mulai gunakan di aplikasi produksi Anda hari ini. JetBrains sudah menggunakannya di aplikasi KotlinConf.
Navigation 3 adalah library navigasi baru yang dibuat dari awal untuk mendukung status Jetpack Compose state. Library ini memberi Anda kontrol penuh atas data sebelumnya, membantu Anda mempertahankan status navigasi, dan memungkinkan Anda membuat tata letak adaptif dengan mudah (seperti detail daftar). Bahkan ada versi lintas platform dari JetBrains.
Mengapa library baru?
Library Jetpack Navigation asli (sekarang Nav2) didesain 7 tahun yang lalu dan, meskipun memenuhi tujuan aslinya dengan baik dan telah ditingkatkan secara berulang, cara aplikasi dibuat sekarang telah berubah secara mendasar.
Pemrograman reaktif dengan UI deklaratif kini menjadi norma. Nav3 mendukung pendekatan ini. Misalnya, NavDisplay (komponen UI Nav3 yang menampilkan layar Anda) hanya mengamati daftar kunci (masing-masing mewakili layar) yang didukung oleh status Compose dan memperbarui UI-nya saat daftar tersebut berubah.
Nav2 juga dapat mempersulit untuk memiliki satu sumber tepercaya untuk status navigasi Anda karena memiliki status internalnya sendiri. Dengan Nav3, Anda menyediakan status Anda sendiri, yang memberi Anda kontrol penuh.
Terakhir, Anda meminta lebih banyak fleksibilitas dan kemampuan penyesuaian. Daripada memiliki satu API monolitik, Nav3 menyediakan API yang lebih kecil dan terpisah (atau "blok penyusun") yang dapat digabungkan untuk membuat fungsi yang kompleks. Nav3 sendiri menggunakan blok penyusun ini untuk memberikan default yang wajar untuk kasus penggunaan navigasi yang ditentukan dengan baik.
Dengan pendekatan ini, Anda dapat:
- Menyesuaikan animasi layar di tingkat global dan individual
- Menampilkan beberapa panel secara bersamaan, dan membuat tata letak fleksibel menggunakan Scenes API
- Mengganti komponen Nav3 dengan implementasi Anda sendiri dengan mudah jika Anda menginginkan perilaku kustom
Baca selengkapnya tentang desain dan fiturnya di blog peluncuran.
Bermigrasi dari Navigation 2
Jika Anda sudah menggunakan Nav2, khususnya Navigation Compose, sebaiknya pertimbangkan untuk bermigrasi ke Nav3. Untuk membantu Anda melakukannya, ada panduan migrasi. Langkah-langkah utamanya adalah:
- Menambahkan dependensi Navigation 3.
- Memperbarui rute navigasi untuk mengimplementasikan NavKey. Rute Anda tidak harus mengimplementasikan antarmuka ini untuk menggunakan Nav3, tetapi jika melakukannya, Anda dapat memanfaatkan fungsi rememberNavBackStack Nav3 untuk membuat data sebelumnya yang persisten.
- Membuat class untuk menyimpan dan mengubah status navigasi Anda - di sinilah data sebelumnya disimpan.
- Mengganti NavController dengan class ini.
- Memindahkan tujuan Anda dari NavGraph NavHost ke entryProvider.
- Mengganti NavHost dengan NavDisplay.
Bereksperimen dengan migrasi agen AI
Anda mungkin ingin bereksperimen dengan menggunakan agen AI untuk membaca panduan migrasi dan melakukan langkah-langkah di project Anda. Untuk mencobanya dengan Gemini di Mode Agen Android Studio:
- Simpan panduan versi markdown ini ke project Anda.
- Tempel perintah ini ke agen (tetapi jangan tekan enter): "Migrate this project to Navigation 3 using ".
- Ketik @migration-guide.md - tindakan ini akan memberikan panduan sebagai konteks kepada agen.
Seperti biasa, pastikan Anda meninjau perubahan yang dilakukan oleh agen AI dengan cermat - agen AI dapat membuat kesalahan.
Kami ingin mendengar pendapat Anda tentang performa Anda atau agen Anda. Silakan kirimkan masukan Anda di sini.
Resep navigasi yang menarik untuk skenario umum
Untuk kasus penggunaan umum tetapi bernuansa, kami memiliki repositori resep. Repositori ini menunjukkan cara menggabungkan Nav3 API dengan cara tertentu, sehingga Anda dapat memilih atau mengubah resep sesuai kebutuhan Anda. Jika resep ternyata populer, kami akan mempertimbangkan untuk "meluluskan" bagian yang tidak bernuansa ke library Nav3 inti atau library add-on.
Saat ini ada 19 resep, termasuk untuk:
- Beberapa data sebelumnya
- Modularisasi dan injeksi dependensi
- Meneruskan argumen navigasi ke ViewModel (termasuk menggunakan Koin)
- Menampilkan hasil dari layar berdasarkan peristiwa dan berdasarkan status bersama
Saat ini kami sedang mengerjakan resep deeplink, plus integrasi Koin, dan telah merencanakan banyak resep lainnya. Seorang engineer dari JetBrains juga telah memublikasikan resep versi Multiplatform Compose.
Jika Anda memiliki kasus penggunaan umum yang ingin Anda lihat resepnya, silakan ajukan permintaan resep.
Ringkasan
Untuk mulai menggunakan Nav3, lihat dokumen dan resep. Selain itu, nantikan konten teknis selama seminggu penuh, termasuk:
- Video mendalam tentang API yang mencakup modularisasi, animasi, dan tata letak adaptif.
- Sesi Tanya Jawab Langsung (AMA) dengan engineer yang membuat Nav3.
Nav3 Spotlight Week dimulai pada 1 Desember 2025.
Seperti biasa, jika Anda menemukan masalah, silakan laporkan di sini.
Lanjutkan membaca
-
Berita Produk
Pada tahun 2025, ekosistem Android telah berkembang jauh melampaui ponsel. Saat ini, developer memiliki peluang untuk menjangkau lebih dari 500 juta perangkat aktif, termasuk perangkat foldable, tablet, XR, Chromebook, dan mobil yang kompatibel.
Fahd Imtiaz • Waktu baca: 2 menit
-
Berita Produk
Setiap tahun, Google I/O menghadirkan pengumuman dan referensi baru di seluruh ekosistem dan produk, termasuk pengembangan Android. Seiring dengan pergeseran pengembangan ke alat bantu yang didukung AI dan agen, kami telah memperluas penawaran untuk mendukung Anda dengan lebih baik, apa pun cara Anda membangun untuk Android.
Simona Milanovic • Waktu baca: 2 menit
-
Berita Produk
Di Google I/O ‘26, kami menunjukkan bagaimana kemajuan terbaru dalam ekosistem Android dapat membantu Anda meningkatkan kualitas aplikasi sekaligus memaksimalkan efisiensi pengembangan.
Ataul Munim • Waktu baca: 3 menit
Terus dapatkan informasi
Dapatkan insight pengembangan Android terbaru yang dikirim ke kotak masuk Anda setiap minggu.