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 (seperti daftar-detail) dengan mudah. 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 navigasi 3.
- Memperbarui rute navigasi untuk menerapkan NavKey. Rute Anda tidak harus menerapkan 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 dengan cermat perubahan yang dilakukan oleh agen AI - 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, serta 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 Live (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
Dengan senang hati kami mengumumkan bahwa dukungan resmi untuk Unreal Engine dan Godot telah hadir untuk Android XR. Kami juga meluncurkan alat baru yang dirancang untuk meningkatkan produktivitas Anda dan mengaktifkan kemampuan XR baru: Android XR Engine Hub dan Android XR Interaction Framework.
Luke Hopkins • Waktu baca: 4 menit
-
Berita Produk
Dengan rilis Android 17, kami beralih ke standar pengembangan pertama yang adaptif. Pengguna Anda tidak lagi mengandalkan satu faktor bentuk; mereka beralih antara ponsel, perangkat foldable, tablet, laptop, layar otomotif, dan lingkungan XR imersif sepanjang hari.
Fahd Imtiaz • Waktu baca: 4 menit
Terus dapatkan informasi
Dapatkan insight pengembangan Android terbaru yang dikirim ke kotak masuk Anda setiap minggu.