Fix: "App must target Android 16 (API level 36) or higher"
What triggers it, the official deadline, and the fix by stack. Sources checked 2026-10-02.
| Google source | Quote |
|---|---|
| Target API level requirements | “Starting August 31, 2026: New apps and app updates must target Android 16 (API level 36) or higher to be submitted to Google Play. You will be able to request an extension to November 1, 2026 if you need more time to update your app.” |
| Set up the Android 16 SDK | “Install the Android 16 SDK Platform and the matching Build-Tools from the SDK Manager, then set compileSdk and targetSdk to 36 in your Gradle config.” |
Fix by stack
Flutter
targetSdk is set by the Android embedding, not by Flutter itself: in android/app/build.gradle, set targetSdk 36 and compileSdk 36. This is a separate fix from the engine-version question on our Flutter 16 KB page below — doing one doesn’t do the other.
React Native / Expo
Bare RN: set targetSdkVersion and compileSdkVersion to 36 in android/build.gradle. Managed Expo: use the expo-build-properties config plugin to set android.targetSdkVersion, then create a new EAS build — editing android/build.gradle directly gets overwritten on the next prebuild.
Unity
Player Settings → Android → Other Settings → Target API Level (or your Gradle template if you use a custom one). See Google’s build-in-Unity guide and the Unity manual’s Android compatibility notes.
Not sure which of these applies to you? All four Google Play native-code deadlines are on one page, and the free dependency checker or check16k.py will tell you if 16 KB alignment specifically is your problem.
The paid kit ($12, v2.1) contains the complete measured fix map for all 80+ libraries as JSON and a table, every raw per-version measurement, the spot-check evidence, and the CI checker. This page and the checker script stay free.
Get the kit ($12)Full refund within 14 days if the kit didn't help you find or fix your blocker, no questions — email us and we process it via Polar's Refunds API.