Google Play's target API level 36 requirement for 2026
Updated
Every year Google Play raises the minimum API level an app must target, and every August some developers find out when an upload is refused. The 2026 step happened on 31 August 2026.
What does Google require now?
In Google's words: "New apps and app updates must target Android 16 (API level 36) or higher to be submitted to Google Play." The exceptions are by platform:
- Wear OS and Android Automotive OS apps: API level 35 or higher.
- Android TV and Android XR apps: API level 34 or higher.
- Permanently private apps restricted to one organisation for internal distribution are exempt.
Apps already on Google Play have a separate, lower bar: they must target Android 15 (API level 35) or higher to stay available to new users on devices running a newer Android version. An app below that can still be used by the people who have it, but new users on newer phones cannot install it.
How do I check what my build actually targets?
Check the built file, not your config. The most common version of this problem is a project that says 36 and an upload built before the change, or a framework default that was never overridden.
For an APK, either of these prints the target SDK from the compiled manifest:
aapt2 dump badging app-release.apk
apkanalyzer manifest target-sdk app-release.apk
In the aapt2 output, look for targetSdkVersion:'36'. Both tools come with
the Android SDK build tools and command-line tools.
How do I change it?
Set targetSdk to 36, and compileSdk to 36 or higher: you cannot target an API level you do not compile against.
Native Android (Gradle)
In app/build.gradle.kts:
android {
compileSdk = 36
defaultConfig {
targetSdk = 36
}
}
In a Groovy build.gradle, the same settings are compileSdk 36 and
targetSdk 36.
Flutter
Open android/app/build.gradle.kts. By default it reads:
compileSdk = flutter.compileSdkVersion
// ...
targetSdk = flutter.targetSdkVersion
Those values come from your Flutter version. Flutter's documentation says you
can replace them with specific numbers when you need to, so either upgrade
Flutter to a version whose default is 36, or set targetSdk = 36 and
compileSdk = 36 yourself.
React Native
In a React Native project the versions usually live in android/build.gradle:
buildscript {
ext {
compileSdkVersion = 36
targetSdkVersion = 36
}
}
Upgrading React Native is the cleaner route when your version is old, because the native dependencies expect the SDK levels the template was built for.
Expo
Each Expo SDK version sets its own Android SDK levels, so upgrading Expo is the
usual fix. To set them explicitly, use the expo-build-properties plugin in
your app config:
{
"expo": {
"plugins": [
["expo-build-properties", { "android": { "compileSdkVersion": 36, "targetSdkVersion": 36 } }]
]
}
}
Then build again. Changing the config does nothing to a build you already made.
What changes when my app targets 36?
Targeting a new level turns on that level's behaviour changes for your app. For API 36 (Android 16), Google's list includes:
- Edge-to-edge is no longer optional. The attribute apps used to opt out,
windowOptOutEdgeToEdgeEnforcement, is deprecated and disabled, so your layouts must handle drawing behind the status and navigation bars. - Predictive back is on by default on Android 16 devices:
onBackPressedis no longer called andKEYCODE_BACKis no longer dispatched, unless you opt out withandroid:enableOnBackInvokedCallback="false". - Orientation and resizability restrictions are ignored on large screens
(smallest width of 600dp or more):
screenOrientation,resizableActivityand aspect-ratio limits no longer apply there. - Body sensor permissions become granular health permissions, such as
READ_HEART_RATEinstead ofBODY_SENSORS.
Test on an Android 16 device or emulator before you upload. Your closed testers are the right people to catch what changed.
Check it before Google does
The target API level is one line in the manifest, and so are the permissions that need a Play Console declaration. The pre-launch checklist covers the rest of what Google looks at before an app goes live.