Flutter and Android 16 (API 36) in 2026: The Complete Upgrade Guide for Google Play

By · Published 2026-10-31 · Last verified 2026-10-31

Android 16 is API level 36, and since August 31, 2026 it's the target Google Play requires for new apps and app updates. For a Flutter developer, raising targetSdk to 36 is a one-line change that switches on several behavior changes at once. I've written a separate guide for each one I hit while moving CoinDrop, Swappr and IOU to API 36. This hub puts them in the order I'd work through them, with the short version of each, so you can plan the upgrade in one sitting.

Everything here comes from Google's and Flutter's own documentation, linked below. Rules and dates change, so check the source pages before a release.

The deadline in one paragraph

Google's target API page says that from August 31, 2026, new apps and app updates must target Android 16 (API 36) or higher to be submitted. Wear OS and Android Automotive OS apps must target API 35, and Android TV and Android XR apps API 34. Existing apps must target at least API 35 to stay available to new users on devices running a newer Android version. If you need more time, Play Console offers an extension to November 1, 2026. The full rule, the extension and a triage plan for several apps are in Google Play target API 36 in 2026: deadline, extension and upgrade plan.

The upgrade path, step by step

  1. Triage your apps. List each app's current targetSdk, its last update and whether you'll ship before the deadline.
  2. Upgrade the toolchain. On a branch, run flutter upgrade and flutter doctor, install the Android 16 SDK platform, and check what flutter.targetSdkVersion resolves to. If it's below 36, set targetSdk = 36 and compileSdk = 36 explicitly.
  3. Update plugins. Run dart pub outdated and start with plugins that touch Android APIs: notifications, permissions, camera, purchases, ads and background work.
  4. Test the behavior changes covered in the sections below.
  5. Release carefully: internal testing track and pre-launch report first, then a staged rollout.

Behavior changes you get by targeting API 36

Edge-to-edge without the opt-out

Android 15 enforced edge-to-edge for apps targeting it but allowed an opt-out attribute. For apps targeting Android 16, that attribute is deprecated and disabled on Android 16 devices, and Flutter warns that using it there might crash your app. Flutter has made apps edge-to-edge by default since 3.27. The fix is layout work: SafeArea for controls and padding from MediaQuery for scrolling content. My guide to Flutter edge-to-edge on Android 15 and 16 lists the six screens that usually break and includes a 20-minute test plan.

Predictive back is on by default

Targeting API 36 turns on predictive back animations on Android 16 devices. onBackPressed isn't called and KEYCODE_BACK isn't dispatched. In Flutter, the casualty is WillPopScope, which is deprecated and can't tell the system in advance whether back will be handled. Move those routes to PopScope with canPop. There's a temporary manifest opt-out, android:enableOnBackInvokedCallback="false", but Google treats it as a stop-gap. The four migration cases are in Flutter predictive back on Android 16: WillPopScope to PopScope.

Large screens ignore orientation and resizability locks

On displays whose smallest width is 600dp or more, Android 16 ignores orientation, resizability and aspect-ratio restrictions for apps targeting API 36. A portrait-locked phone app will open full-window on tablets and foldables. Test your main screens wide before you release.

Safer intents

Android 16 continues tightening how intents resolve. If you use deep links or explicit intents to other apps, re-test them on an Android 16 device or emulator.

Play requirements that land in the same upgrade

A target API bump is also when older policy issues surface, usually because plugin upgrades change the merged manifest. These guides cover the ones I see most:

A test plan before you upload

Run this on an Android 16 emulator or device with a release build, and repeat the key screens on a tablet-sized emulator:

  1. Open every main screen and check nothing sits under the status bar, navigation bar or camera cutout.
  2. Use the back gesture on every route with a confirmation dialog, form or nested navigator, and confirm the dialog still appears.
  3. Rotate and resize on a large screen, and check layouts don't stretch or clip.
  4. Open every deep link and share target you support.
  5. Check the merged manifest for permissions you didn't expect.
  6. Confirm the bundle supports 16 KB pages: Play Console's App bundle explorer shows a warning if it doesn't.

Release and monitor

Upload to the internal testing track first and read the pre-launch report. Then release with a staged rollout; my staged rollout rules explain when to widen it and when to halt. Watch crash and ANR rates for a couple of days, using the thresholds in my Android vitals guide. If you're on a new personal developer account, remember that production access first needs the 12-tester, 14-day closed test.

Planning next year

In recent years Google has raised the required target level each August, with an extension window into the autumn, and 2026 followed that pattern. A reminder in early summer to bump the target, upgrade Flutter and run the test plan above saves a stressful October. I'll keep this hub updated as Google publishes the next requirement.

FAQ

What is the Google Play target API level for 2026?

From August 31, 2026, new apps and app updates must target Android 16 (API 36) or higher. Existing apps must target at least API 35 to stay available to new users on newer devices. Wear OS, Automotive, TV and XR apps have lower targets.

Can I get more time to target API 36?

Yes. Google offers an extension to November 1, 2026 through forms in Play Console.

Is changing targetSdk to 36 enough?

No. Targeting API 36 turns on Android 16 behavior changes, including edge-to-edge without an opt-out and predictive back by default, so test before you release.

Do I still need WillPopScope changes if my app targets API 35?

Android 16's predictive back default only applies to apps targeting API 36, but migrating to PopScope now means the target bump won't change back behavior unexpectedly.

Is the 16 KB page size requirement part of Android 16?

It's separate. It applies to apps targeting Android 15 or higher, and from 1 February 2027 updates that don't support 16 KB pages can't be released.

Sources