App Rejection Fix
Google Play

Google Play Blocked Your Update Over the Target API Level? Here’s How to Get to API 36.

Since 31 August 2026, Google Play only accepts new apps and app updates that target Android 16 (API level 36). The block happens in Play Console at upload, before any review. If you missed it, your next release — even a one-line crash fix — cannot go out until the target SDK is raised, or until Google grants the extension it offers until 1 November 2026. This page explains what the requirement means, what actually changes when you target 36, and how the work is done for native, Flutter, React Native and Unity apps.

Free initial review · No payment required · No source code required initially

On this page (8 sections)

The requirement, exactly

Google Play target API level requirement — current schedule
Deadline Phones & tablets Wear OS Android TV Automotive OS Android XR
31 August 2025 API 35 (Android 15) API 34 API 34 API 34 —
31 August 2026 (current) API 36 (Android 16) API 35 no change API 35 API 34
  • New apps and updates must target the required level. An existing app that is not updated stays on Play, but stops being available to new users on Android versions higher than its target.
  • Extension: Google lets you request an extension to 1 November 2026 from the Policy status page of the affected app in Play Console. It buys weeks, not a waiver.
  • Google raises the requirement every year (the next step, API 37, is expected around August 2027); a modernized project makes each yearly bump routine.

Source: Play Console Help, Target API level requirements for Google Play apps (linked in the sources panel, verified 22 September 2026).

How the block shows up

  • Play Console → Policy status: “Your app must target Android 16 (API level 36) or higher.”
  • Upload of a new release fails with an API-level error, or the release cannot be rolled out.
  • Google warning emails ahead of the deadline that were forwarded to a mailbox nobody reads.

There is nothing to appeal. It is a technical requirement; the only exit is a compliant build or the extension.

If you are not sure what your project currently targets, paste your build.gradle, libs.versions.toml, pubspec.yaml or package.json into the Android update readiness checker. It reads the text in that one request, reports the target and compile SDK it can see alongside the other requirements that block updates, and stores nothing.

What changes when you target API 36

Setting targetSdk = 36 opts the app into Android 16 behaviour. The changes that most often break older apps:

Edge-to-edge is enforced

Apps targeting Android 15 got edge-to-edge by default with an opt-out; on Android 16 the opt-out (windowOptOutEdgeToEdgeEnforcement) is deprecated and no longer honoured. Screens that never handled window insets end up with content under the status bar, buttons hidden behind the navigation bar, and overlapped keyboards. The fix is real inset handling — ViewCompat.setOnApplyWindowInsetsListener, WindowInsets in Compose, SafeArea/MediaQuery.padding in Flutter, SafeAreaView plus edge-to-edge configuration in React Native — screen by screen.

Orientation and resizability on large screens

On displays of at least 600 dp smallest width, Android 16 ignores screenOrientation, resizableActivity, minAspectRatio / maxAspectRatio and setRequestedOrientation() for apps targeting 36. Apps that were “portrait only” must lay out correctly in landscape and in split-screen windows. A temporary opt-out exists (android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY as an activity or application property) but Google states it will not apply once you target API 37 — it postpones the work by one year at most.

Predictive back is on, and onBackPressed is not called

For apps targeting 36 on Android 16 devices, predictive back animations are enabled by default, onBackPressed() is no longer called and KEYCODE_BACK is not dispatched. Apps that intercept the back key to show “discard changes?” dialogs, close drawers or manage custom navigation stacks silently lose that behaviour unless they migrate to OnBackPressedCallback / OnBackInvokedCallback (or temporarily set android:enableOnBackInvokedCallback="false").

Background work, alarms and notifications

Exact-alarm and foreground-service rules that started in Android 14/15 continue to tighten; older code that schedules work or starts services from the background needs a review, and the Play policy declarations for those permissions must match.

Permissions and privacy

Photo picker instead of broad media permissions, the notification runtime permission, and the Data safety form all need to reflect what the modernized app actually does.

Dependencies and the toolchain

Compiling against SDK 36 needs an Android Gradle Plugin that supports it, which in turn needs a Gradle and Kotlin version your old plugins may not compile with. This cascade is usually the largest part of the work, especially in Flutter and React Native projects with abandoned plugins.

Do not raise targetSdk without a device test plan

Everything compiles, the bundle uploads, and then users on Android 16 see broken layouts or crashes in a flow you did not touch. Test on an Android 16 device or emulator, in landscape and split-screen, before rollout — and use a staged rollout.

By framework

Where the target-API change is made and what typically follows
Stack Where to change Typical follow-up work
Native Android app/build.gradle(.kts): targetSdk 36, compileSdk 36; AGP / Gradle bump Edge-to-edge insets, large-screen layouts, deprecated API replacements, dependency upgrades
Flutter android/app/build.gradle(.kts) (or flutter.targetSdkVersion); Flutter SDK + plugin upgrades Plugins with old AGP requirements, Kotlin DSL migration, SafeArea audit, 16 KB alignment of plugin .so files
React Native android/build.gradle targetSdkVersion 36 + RN upgrade Native modules needing the New Architecture, Gradle/Kotlin cascade, react-native-edge-to-edge or manual insets
Unity Player Settings → Target API Level (needs a Unity version that ships SDK 36 support) Unity LTS upgrade, plugin re-import, 16 KB-aligned builds, Unity IAP upgrade
Cordova / Ionic / Xamarin cordova-android / MAUI platform version Often a planned rewrite; we say so in the review when that is the realistic path

Should you request the extension?

Yes, if the migration cannot be finished before your next essential release — the request takes minutes and removes the block until 1 November 2026. No, if you expect to ship the compliant build within days anyway; the form does not speed up anything. Either way, the extension does not remove the requirement.

What we do

  1. Read the notice and the build configuration; confirm the target, compile SDK, AGP, Gradle, Kotlin and framework versions.
  2. List the Android 16 behaviour changes that apply to your app (not the generic list) and the dependencies that must move.
  3. Raise the target, resolve the toolchain cascade, fix insets and large-screen layouts, replace deprecated APIs, and re-verify the Data safety form.
  4. Test on Android 16 devices, produce the release bundle, and hand over a staged-rollout checklist — or roll it out for you if you prefer.

The 16 KB page size requirement and the Play Billing Library 8 requirement usually surface in the same release; we handle them together. See the 16 KB page size fix and the Billing Library upgrade.

Release checklist

  • targetSdk and compileSdk at 36; AGP, Gradle and Kotlin at versions that support it
  • Edge-to-edge handled on every screen, including dialogs, bottom sheets and WebViews
  • Back handling migrated to OnBackPressedCallback / OnBackInvokedCallback (predictive back)
  • Large-screen orientation and split-screen verified
  • Exact alarms, foreground services and notification permission reviewed against the Play declarations
  • Deprecated SDK versions replaced; Play Console policy status clean
  • 16 KB alignment verified; Play Billing Library 8+ where purchases exist
  • Extension requested if the release date is at risk

Frequently asked questions

What does “your app must target Android 16 (API level 36)” actually mean?

It means the targetSdkVersion declared in your build must be 36 or higher before Play Console will accept a new release. It is a build setting, not a judgement about your app, and it is checked at upload — before any human review. Since 31 August 2026 it applies to new apps and to every update; Google offers an extension, requested per app from the Policy status page, that defers the block to 1 November 2026 without removing the requirement.

Related: Target API Level 36 Fix, App Publishing Deadlines

Can a target API level block be appealed?

No. There is no reviewer decision to contest — the upload is refused by a mechanical check. The only two exits are a build that targets API 36 or higher, or the extension Google offers until 1 November 2026. Anyone offering to appeal it, or to get it waived, is describing something that does not exist.

Related: Target API Level 36 Fix

Is raising the target API level really just a one-line change?

The line itself is one line. What follows usually is not. Targeting Android 16 enforces edge-to-edge layouts without the previous opt-out, changes large-screen orientation and resizability handling, tightens background execution and notification behaviour, and frequently forces a Gradle, AGP and dependency upgrade because older analytics, ads, payment and map libraries do not compile against the new toolchain. Plan it as a small project with device testing, not as a version bump.

Related: Target API Level 36 Fix, Legacy App Update & Modernization

Blocked at API level 35 or lower? Let’s get the update out.

Share the Play Console notice and the framework the app is built with. The initial review lists the Android 16 behaviour changes that apply to your app, whether an extension makes sense, and a scoped plan to raise the target and ship.

What happens next: an engineer on our technical team reads the notice you send — not an autoresponder. We work out what it most likely means and what we would check, and reply with that assessment and a recommended next step.

The initial update review is free. Migration work, if you want us to do it, is quoted separately.

Get My Free Update Review

Free initial review · No payment required · No source code required initially