Persyaratan target API level 36 di Google Play berarti rilis yang dibuat untuk versi di bawah Android 16 tidak bisa dipublikasikan. Per Oktober 2026, Play menolak setiap aplikasi baru dan setiap update yang menargetkan level lebih rendah, sering kali dengan pesan Target SDK of artifact is too low. Aplikasi yang menerima peringatan kebijakan bisa meminta tambahan waktu, tetapi perpanjangan itu berakhir pada 1 November 2026. Panduan ini membahas apa yang masih bisa Anda dapatkan dari perpanjangan tersebut, cara memindahkan Expo, Flutter, dan React Native ke API 36, serta apa saja yang biasanya rusak setelahnya.
Apa sebenarnya yang diblokir oleh persyaratan target API level 36?
Yang diblokir adalah pengiriman. Sejak 31 Agustus 2026, Anda tidak bisa mengunggah aplikasi ponsel baru atau update kecuali build tersebut menargetkan API 36. Aplikasi yang sudah tayang dan menargetkan API 35 atau lebih tinggi tetap tersedia sepenuhnya, termasuk bagi pengguna baru.
Menurut persyaratan target API level dari Google, "Aplikasi baru dan update aplikasi harus menargetkan Android 16 (API level 36) atau lebih tinggi agar dapat dikirim ke Google Play." Persyaratannya berbeda menurut jenis perangkat, dan satu-satunya pengecualian penuh berlaku untuk aplikasi privat permanen yang ditujukan untuk distribusi internal dalam satu organisasi.
| Jenis perangkat | Aplikasi baru dan update (mulai 31 Agu 2026) | Aplikasi yang sudah ada tetap tersedia penuh jika menargetkan |
|---|---|---|
| Ponsel, tablet, Android Auto | API 36 | API 35 atau lebih tinggi |
| Wear OS | API 35 | API 34 atau lebih tinggi |
| Android Automotive OS | API 35 | API 32 atau lebih tinggi |
| Android TV | API 34 | API 33 atau lebih tinggi |
| Android XR | API 34 | API 34 atau lebih tinggi |
Aplikasi lama yang berada di bawah level tersebut "hanya akan tersedia di perangkat yang menjalankan Android OS yang sama atau lebih rendah dari target API level aplikasi Anda." Orang yang sudah menginstalnya tetap bisa memakainya seperti biasa. Namun, pengguna ponsel yang lebih baru akan diberi tahu bahwa aplikasi tersebut "dibuat untuk versi Android yang lebih lama."
Apakah perpanjangan masih bisa didapat sebelum 1 November 2026?
Hanya jika Play mengirimkan peringatan kebijakan untuk aplikasi Anda dan formulir permintaannya masih muncul. Bahkan dalam kasus itu, perpanjangan paling lambat berakhir pada 1 November 2026, jadi ini hanya tambahan beberapa hari untuk perbaikan yang hampir selesai, bukan rencana baru.
Google menyatakan bahwa mereka mengirim "tautan formulir permintaan perpanjangan melalui Notifikasi" ke aplikasi yang terdampak, dan formulir tersebut "tersedia melalui halaman detail peringatan atau masalah di halaman Status kebijakan." Google tidak menampilkan formulir ini untuk aplikasi yang sudah patuh.
- Buka Play Console dan pilih aplikasinya.
- Periksa Kotak masuk atau Notifikasi untuk pesan tentang target API level. Jika ada, ikuti tautannya.
- Jika tidak ada, buka Status kebijakan, buka peringatan atau masalah target API level, lalu cari formulir permintaan perpanjangan di halaman detailnya.
- Isi formulir untuk setiap aplikasi yang terdampak. Setiap aplikasi memiliki peringatannya sendiri.
- Terlepas dari apakah perpanjangan dikabulkan atau tidak, rencanakan untuk mengunggah build API 36 sebelum 1 November 2026. Setelah tanggal itu, update wajib menggunakan API 36.
Bagaimana cara menaikkan Expo, Flutter, dan React Native ke API 36?
Cara paling rapi adalah upgrade ke versi framework yang sudah menargetkan API 36: Expo SDK 54, React Native 0.81, atau Flutter 3.38. Jika belum bisa upgrade, Anda bisa menaikkan angkanya secara manual, tetapi Anda juga harus menangani sendiri perubahan perilaku Android 16.
| Stack | Menargetkan API 36 secara default mulai | Lokasi angkanya | Cara manual jika belum bisa upgrade |
|---|---|---|---|
| Expo (managed / CNG) | SDK 54 (React Native 0.81) | Dihasilkan oleh prebuild; timpa dengan expo-build-properties | targetSdkVersion: 36 dan compileSdkVersion: 36 di plugin expo-build-properties |
| React Native (bare) | 0.81 | android/build.gradle | Setel compileSdk dan targetSdk ke 36, lalu nonaktifkan predictive back di manifest |
| Flutter | 3.38 (flutter.targetSdkVersion = 36) | android/app/build.gradle(.kts) | Ganti nilai 35 yang di-hardcode dengan 36 atau dengan flutter.targetSdkVersion |
Expo. Changelog SDK 54 menyebutkan bahwa SDK 54 dan React Native 0.81 "kini menargetkan Android 16." Lakukan upgrade dengan npx expo install expo@^54.0.0 --fix, jalankan npx expo-doctor@latest, dan jika Anda memakai Continuous Native Generation, "Hapus direktori android dan ios jika Anda membuatnya untuk versi SDK sebelumnya." Di SDK 53 Anda bisa mencoba menyetel targetSdkVersion: 36 melalui plugin expo-build-properties, tetapi React Native 0.79 masih menangani tombol kembali lewat onBackPressed, jadi baca bagian berikutnya sebelum merilisnya.
Flutter. Catatan rilis Flutter 3.38 mencantumkan nilai default flutter.compileSdkVersion (API 36) dan flutter.targetSdkVersion (API 36), serta "sangat menganjurkan Anda menggunakan variabel API level yang disediakan Flutter SDK di file build Anda." Versi 3.38 juga memerlukan minimal Java 17. Jika targetSdk = 35 di-hardcode di modul aplikasi Anda, upgrade Flutter tidak akan mengubahnya, jadi periksa file tersebut.
React Native bare. Setel compileSdkVersion dan targetSdkVersion ke 36 di android/build.gradle. Di versi 0.81 ke atas, pekerjaan Anda hampir selesai. Di versi lebih lama, tambahkan juga android:enableOnBackInvokedCallback="false" ke <application> di AndroidManifest.xml. Tanpa itu, tombol kembali fisik dan gestur kembali akan melewati navigasi JavaScript Anda.
Apa yang rusak saat aplikasi mulai menargetkan Android 16?
Navigasi kembali dan tata letak layar besar paling sering rusak. Dengan API 36 sebagai target, Android berhenti memanggil onBackPressed, tidak lagi mengizinkan Anda menonaktifkan edge-to-edge, dan mengabaikan kunci orientasi serta resizability pada layar dengan lebar minimal 600dp.
Perubahan yang paling berpengaruh bagi aplikasi lintas platform, dari perubahan perilaku Android 16 milik Google:
- Predictive back: "
onBackPressedtidak dipanggil danKeyEvent.KEYCODE_BACKtidak lagi dikirimkan." Menyetelandroid:enableOnBackInvokedCallback="false"adalah cara menonaktifkan sementara. - Edge-to-edge:
windowOptOutEdgeToEdgeEnforcementkini "tidak digunakan lagi dan dinonaktifkan", sehingga header atau tombol bawah bisa tertutup status bar atau gesture bar. - Layar besar: pada layar 600dp ke atas,
screenOrientation,resizableActivity, dan batas rasio aspek diabaikan, sehingga tata letak khusus potret bisa tampak melebar. Game dikecualikan.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITYadalah cara menonaktifkan sementara yang "tidak akan berlaku saat menargetkan API level 37." - Teks:
elegantTextHeightdiabaikan, yang dapat mengubah tinggi baris untuk aksara Arab, Thai, Tamil, dan beberapa aksara lain. - Sensor kesehatan:
BODY_SENSORSdigantikan oleh izin kesehatan granular sepertiREAD_HEART_RATE.
Masalah apa yang dialami developer lain saat pindah ke API 36?
Laporan publik sejauh ini menunjukkan dua jenis masalah: perilaku tombol kembali yang berubah tanpa error apa pun, dan library yang membuat target level di bundle yang diterima Play berbeda dari yang tertulis di file proyek.
Audius (React Native 0.79). Di pull request #14635, tim Audius menyebutkan bahwa Google Play menolak dua kali unggahan Android versi 1.5.186 dengan pesan Target SDK of artifact is too low. Mereka menaikkan compileSdk dan targetSdk dari 35 ke 36, menyetel build tools ke 36.0.0, dan menambahkan android.suppressUnsupportedCompileSdk=36, karena "RN 0.79 mengunci AGP 8.8". Mereka juga menyetel enableOnBackInvokedCallback="false", karena tanpa itu tombol kembali "akan melewati React Navigation." PR berikutnya menghapus opt-out tersebut setelah mereka pindah ke React Native 0.81, yang mendaftarkan OnBackPressedCallback secara mandiri.
Sebuah aplikasi Flutter 3.35.2. Di Flutter issue #174516, seorang developer menyetel targetSdk 36 di Gradle dan manifest, tetapi Play Console masih melaporkan "Your bundle targets SDK 34, but uses a Play Core library that cannot be used with that version." Menghapus library lama com.google.android.play:core:1.10.3 memicu error R8 "Missing classes". Setelah itu diperbaiki, muncul pesan "You can't rollout this release because it doesn't allow any existing users to upgrade to the newly added app bundles." Bundle akhirnya diterima setelah mereka menambahkan aturan keep ProGuard, menyetel minSdk secara eksplisit, dan menonaktifkan split bahasa, density, dan ABI, dengan konsekuensi ukuran unduhan yang lebih besar.
Pelajaran umumnya: mengubah angka di Gradle tidak menyelesaikan pekerjaan. Audius harus memperbaiki perilaku runtime, dan developer Flutter tersebut harus memperbaiki dependensi yang mengubah apa yang dibaca Play dari bundle. Periksa artefak hasil build dan uji di perangkat Android 16, bukan hanya file konfigurasinya.
Bagaimana cara memeriksa build API 36 sebelum mengunggahnya?
Baca target level langsung dari bundle rilis, lalu taruh bundle tersebut di jalur pengujian internal atau tertutup dan coba navigasi kembali, inset, serta tata letak tablet di Android 16. Penolakan atau bug di produksi memakan waktu jauh lebih banyak daripada pemeriksaan ini.
Contoh kasus: aplikasi Expo SDK 53 yang menargetkan API 35 dan masih membutuhkan satu update lagi.
- Jalankan
npx expo install expo@^54.0.0 --fix, lalunpx expo-doctor@latest, dan perbaiki apa pun yang dilaporkannya. - Jika proyek memakai Continuous Native Generation, hapus folder
androiddaniosyang lama lalu build ulang. Jika tidak, terapkan perubahan upgrade native secara manual. - Build AAB rilis, misalnya dengan
eas build -p android --profile production. - Pastikan targetnya dengan
bundletool dump manifest --bundle app.aab --xpath /manifest/uses-sdk/@android:targetSdkVersion. Hasilnya harus36. - Unggah ke pengujian internal. Di ponsel Android 16, tekan tombol kembali di setiap layar bertingkat, pastikan header dan tombol bawah tidak tertutup system bar, lalu putar tablet atau emulator yang bisa diubah ukurannya.
- Promosikan ke produksi dengan catatan rilis yang menyebutkan perbaikan untuk Android 16.
Agar pengujian lebih cepat, gunakan pengaturan tester di panduan closed testing Google Play kami, dan ambil inspirasi kalimat untuk teks update dari contoh catatan rilis kami. Jika Anda lebih suka menyerahkan proses rilis, layanan pengiriman App Store kami mencakup Play Console dan App Store Connect seharga $599 untuk kedua store. Biaya akun developer terpisah.
Pertanyaan yang sering diajukan
Apa yang terjadi jika saya melewatkan perpanjangan target API pada 1 November 2026?
Listing Anda saat ini tetap tayang. Aplikasi ponsel yang menargetkan API 35 atau lebih tinggi tetap tersedia bagi pengguna lama maupun baru. Play Console akan menolak setiap rilis baru, termasuk perbaikan bug mendesak, sampai bundle menargetkan Android 16 (API 36). Aplikasi di bawah API 35 hanya bisa diinstal di perangkat yang menjalankan versi Android tersebut atau yang lebih lama.
Apakah aplikasi Wear OS dan Android TV wajib menargetkan API 36?
Tidak. Per Oktober 2026, aplikasi baru dan update untuk Wear OS dan Android Automotive OS wajib menargetkan API 35, sedangkan aplikasi Android TV dan Android XR wajib menargetkan API 34. Hanya aplikasi ponsel, tablet, dan Android Auto yang memerlukan API 36. Satu-satunya pengecualian penuh adalah aplikasi privat permanen yang didistribusikan di dalam satu organisasi.
Bisakah saya menargetkan API 36 tanpa upgrade Expo SDK?
Di SDK 53 Anda bisa menyetel targetSdkVersion dan compileSdkVersion ke 36 di plugin expo-build-properties, dan sebagian developer sudah melakukannya. React Native 0.79, yang dipakai SDK 53, masih meneruskan tombol kembali lewat onBackPressed, padahal Android 16 tidak lagi memanggilnya di API 36. Anda perlu menonaktifkannya dengan menyetel enableOnBackInvokedCallback ke false. Upgrade ke SDK 54 adalah jalur yang didukung resmi.
Apa perbedaan compileSdkVersion dan targetSdkVersion?
compileSdkVersion adalah versi API Android yang dipakai untuk mengompilasi kode Anda. targetSdkVersion memberi tahu Android perilaku versi mana yang sudah diadopsi aplikasi Anda, dan nilai inilah yang diwajibkan Google Play. compileSdk harus sama dengan atau lebih tinggi dari targetSdk, jadi pindah ke target 36 berarti mengompilasi dengan API 36 atau yang lebih baru. Sebagai contoh, Expo SDK 58 mengompilasi dengan API 37 dan menargetkan API 36.
Mengapa Play Console masih menyebut aplikasi saya menargetkan API level lama setelah saya mengubah build.gradle?
Play membaca target level dari bundle yang Anda unggah, bukan dari file sumber. Nilai yang di-hardcode di modul lain, plugin yang usang, atau library seperti Play Core versi lama dapat mengubah manifest hasil penggabungan. Jalankan bundletool dump manifest pada AAB rilis untuk melihat targetSdkVersion yang sebenarnya, dan pastikan Anda mengunggah build baru, bukan artefak lama.
Sumber & bacaan lanjutan
Kebijakan bisa berubah. Periksa dokumentasi resmi sebelum mengajukan.
- Persyaratan target API level untuk aplikasi Google Play (Bantuan Play Console) ↗Diperiksa 30 Okt 2026
- Perubahan perilaku: Aplikasi yang menargetkan Android 16 atau lebih tinggi (Android Developers) ↗Diperiksa 30 Okt 2026
- Changelog Expo SDK 54 ↗Diperiksa 30 Okt 2026
- Yang baru di Flutter 3.38 ↗Diperiksa 30 Okt 2026
- fix(mobile): menargetkan Android SDK 36, AudiusProject/apps PR #14635 ↗Diperiksa 30 Okt 2026
- Flutter 3.35.2 memaksa SDK 34 meski sudah ditimpa secara eksplisit, flutter/flutter issue #174516 ↗Diperiksa 30 Okt 2026
Ayo bawa aplikasi Anda sampai garis finis.
Panggilan terfokus untuk mencari tahu apa yang masih menghalangi aplikasi Anda tayang di store.
Jadwalkan panggilan ↗

