Migrasi targetSdk 36 untuk Flutter dan React Native: Checklist Sebelum 1 November
Informasi Audit & Rilis:
- Tanggal Terbit: 29 Oktober 2026
- Tanggal Revisi Terakhir: 29 Oktober 2026
- Tingkat Kompleksitas: Advanced / Production Critical
- Sumber Primer: Google Play Console Developer Policy & Android 16 SDK Guidelines (developer.android.com)
Ringkasan Eksekutif (BLUF)
Mulai 31 Agustus 2026, Google Play memberlakukan aturan bahwa setiap update aplikasi wajib menargetkan minimal Android 16 (targetSdk 36), dengan batas toleransi perpanjangan waktu (extension window) terakhir yang akan resmi ditutup pada 1 November 2026. Aplikasi Flutter maupun React Native yang masih menargetkan targetSdk 34 atau lebih rendah akan dicekal dari penelusuran perangkat Android modern dan ditolak saat submission update di Google Play Console. Artikel ini memberikan panduan teknis langkah-demi-langkah, mitigasi breaking changes Edge-to-Edge display, serta checklist verifikasi build siap rilis.
1. Latar Belakang Kebijakan & Dampak Nyata pada Aplikasi Mobile
Google Play menerapkan siklus tahunan kepatuhan targetSdk guna menjamin keamanan memori, privasi pengguna, dan konsistensi UI di ekosistem Android. Bagi developer di Indonesia, tidak melakukan migrasi ke target API 36 sebelum 1 November membawa risiko fatal:
- Pencekalan Visibilitas: Pengguna perangkat Android 15 dan Android 16 tidak lagi dapat menemukan atau mendownload aplikasi Anda di Play Store.
-
Penolakan Bundle Release: File
.aabbaru yang diunggah ke Google Play Console akan langsung ditolak sistem dengan error:Your app currently targets API level 34 and must target at least API level 36. - Regresi UX Tampilan: Android 16 memberlakukan kebijakan Enforced Edge-to-Edge secara baku, yang menyebabkan status bar dan navigation bar menimpa elemen interaktif (floating buttons / input form) jika tidak diadaptasi dengan benar.
2. Reproduksi di Lab: Analisis Perubahan Konfigurasi Gradle
Dalam pengujian lab rekayasa kami, migrasi aplikasi Flutter (v3.24+) dan React Native (v0.76+) memerlukan pembaruan serentak pada compileSdk, targetSdk, dan dependensi NDK.
Arsitektur Alur Migrasi Android 16
[Proyek Mobile (Flutter / RN)]
│
▼
[android/app/build.gradle] ──► Ubah compileSdk = 36 & targetSdk = 36
│
▼
[Edge-to-Edge Enforcing] ──► Adaptasi WindowInsets & Safe Area
│
▼
[Foreground Service Check] ──► Deklarasi atribut android:foregroundServiceType
│
▼
[Verifikasi via ADB / CLI] ──► Audit Bundle (.aab) & Lolos Review Play Console
Konfigurasi build.gradle Flutter
Buka berkas android/app/build.gradle:
android {
namespace "com.andikadev.mobileapp"
compileSdk 36
defaultConfig {
applicationId "com.andikadev.mobileapp"
minSdk 24
targetSdk 36
versionCode 104
versionName "2.4.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
Konfigurasi build.gradle React Native
Buka berkas android/build.gradle dan sesuaikan build script variables:
buildscript {
ext {
buildToolsVersion = "36.0.0"
minSdkVersion = 24
compileSdkVersion = 36
targetSdkVersion = 36
ndkVersion = "26.1.10909125"
kotlinVersion = "1.9.24"
}
}
3. Penanganan Breaking Change: Edge-to-Edge Enforcement
Pada Android 16 (API 36), aplikasi secara otomatis dirender dalam format Edge-to-Edge. Konten aplikasi Anda akan berada di balik status bar dan navigation bar transparan.
Solusi di Flutter
Pastikan seluruh root view Anda dibungkus dengan widget SafeArea dan atur System UI Overlay:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
runApp(const ProductionMobileApp());
}
class ProductionMobileApp extends StatelessWidget {
const ProductionMobileApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
useMaterial3: true,
scaffoldBackgroundColor: const Color(0xFFF8FAFC),
),
home: const Scaffold(
body: SafeArea(
top: true,
bottom: true,
child: DashboardScreen(),
),
),
);
}
}
Solusi di React Native
Gunakan pustaka resmi react-native-safe-area-context:
import React from 'react';
import { StyleSheet, View, Text } from 'react-native';
import { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context';
export default function App() {
return (
<SafeAreaProvider>
<MainContainer />
</SafeAreaProvider>
);
}
function MainContainer() {
const insets = useSafeAreaInsets();
return (
<View style={[styles.container, { paddingTop: insets.top, paddingBottom: insets.bottom }]}>
<Text style={styles.heading}>Target API 36 Production Ready</Text>
</View>
);
}
const styles = StyleSheet.create({
container: { flex: 1, backgroundColor: '#0f172a', paddingHorizontal: 16 },
heading: { color: '#f8fafc', fontSize: 20, fontWeight: '700' }
});
4. Perintah Verifikasi di Terminal & Audit Keamanan
Jalankan perintah-perintah berikut di terminal developer Anda sebelum melakukan upload ke Google Play Console:
# 1. Bersihkan cache build lama
cd android && ./gradlew clean
# 2. Periksa apakah terdapat library usang yang mengunci targetSdk lama
./gradlew app:dependencies --configuration releaseRuntimeClasspath | grep -i "compileSdk"
# 3. Build Android App Bundle (.aab) siap rilis
./gradlew bundleRelease
# 4. Verifikasi targetSdk menggunakan alat resmi Google aapt
aapt dump badging app/build/outputs/bundle/release/app-release.aab | grep -E "targetSdkVersion|compileSdkVersion"
# 5. Output yang valid dan wajib muncul:
# targetSdkVersion:'36'
# compileSdkVersion:'36'
Jika Anda ingin memeriksa aplikasi yang sudah terpasang di perangkat uji atau emulator Android 16:
adb shell dumpsys package com.andikadev.mobileapp | grep targetSdk
# Hasil yang diharapkan: targetSdk=36
5. Tabel Komparasi Dampak Kepatuhan targetSdk
| Kriteria | targetSdk <= 34 | targetSdk 35 | targetSdk 36 (Android 16) |
|---|---|---|---|
| Status Play Store Pasca 1 Nov 2026 | ❌ Ditolak / Dibatasi | ⚠️ Masa Transisi | ✅ 100% Lolos Kepatuhan |
| Tampilan UI System Bar | Klasik (Letterbox) | Opsi Edge-to-Edge | Wajib Edge-to-Edge Native |
| Foreground Service Policy | Fleksibel | Wajib Deklarasi Tipe | Validasi Ketat Runtime Type |
| Prediktif Back Gesture | Parsial | Didukung | Standar Default Sistem |
| Performa Thread Rendering | Standar | Dioptimalkan | Peningkatan Refresh 120Hz |
6. Checklist Eksekusi Sebelum 1 November 2026
- [x] Ubah
compileSdkdantargetSdkmenjadi 36 di berkasbuild.gradle. - [x] Perbarui Android Gradle Plugin (AGP) minimal ke versi
8.5.0atau terbaru. - [x] Uji tampilan UI di seluruh layar untuk memastikan tidak ada tombol yang tertutup navbar Edge-to-Edge.
- [x] Validasi manifest untuk seluruh deklarasi
android:foregroundServiceType. - [x] Buat build
.aabrelease bertanda tangan (signed). - [x] Unggah ke track Internal Testing di Google Play Console untuk memverifikasi laporan pre-launch tanpa warning.
7. Kesimpulan & Layanan Rilis Play Store
Migrasi ke target API 36 bukan sekadar formalitas kepatuhan, melainkan jaminan agar aplikasi bisnis Anda tetap dapat diakses oleh jutaan pengguna Android modern. Jangan biarkan aplikasi Anda kehilangan traksi pasar hanya karena kelalaian konfigurasi teknis.
Bagi Anda pengembang, startup, atau korporasi yang membutuhkan bantuan audit teknis, migrasi arsitektur mobile, maupun asistensi jasa upload Google Play Store, tim Andika Putra Dev siap mendampingi proses rilis aplikasi Anda hingga live secara profesional.
Catatan Hak Cipta & Sumber Orisinal: Artikel teknis ini dipublikasikan secara orisinal di Andika Putra Dev. Kunjungi andikadev.com untuk konsultasi kebutuhan rekayasa perangkat lunak, jasa pembuatan website, pengembangan aplikasi mobile, maupun jasa upload Play Store.
Top comments (0)