Flutter

Google Play closed testing for Flutter apps

Flutter builds fine. The 14-day, 12-tester requirement is what actually holds Flutter apps back from production. Here is the release path, the Flutter-specific things that break a closed test, and how to staff the tester side.

Getting your build onto Play

  1. 1

    Build a release App Bundle

    Google Play wants an Android App Bundle, not a raw APK. The output lands at build/app/outputs/bundle/release/app-release.aab.

    flutter build appbundle --release
  2. 2

    Check your manifest and Gradle config

    Before building, confirm AndroidManifest.xml declares every permission your packages need, and that build.gradle has the versionCode and versionName you intend to ship.

  3. 3

    Upload to the closed testing track

    Create a closed test in Play Console, upload the AAB, and add TestSlot's single tester group email to the tester list. That one entry grants every TestSlot tester access - no per-tester invites.

  4. 4

    Share the opt-in URL

    Play Console generates an opt-in link for the track. That link is what testers use to join the test and install your app.

What breaks a Flutter closed test

  • Release-mode crashes that never appear in debug

    Flutter apps behave differently in release mode, particularly around method channels and platform-specific code. Test the release build on a physical device before you upload - a crash discovered on day 3 of a 14-day window costs you the whole window.

  • Permissions missing from AndroidManifest.xml

    Flutter packages frequently require Android permissions that are not added automatically. Missing ones surface as silent failures on testers' devices.

  • minSdkVersion mismatched to your distribution settings

    Set minSdkVersion in build.gradle to match what Play Console is distributing to. If your app needs Android 8.0, set minSdkVersion 26 - otherwise testers on older devices cannot install, and they still count against your tester total.

The part most Flutter developers get stuck on

Shipping the build is the easy half. Google still requires 12 real testers who keep your app installed for 14 consecutive days before it will grant production access.

  • TestSlot supplies real people on real Android devices, not emulators or scripts.
  • Each tester's phone confirms roughly hourly that your app is still installed, and reports the time actually spent in it.
  • Streaks are counted server-side, so a changed device clock does nothing to the count.
  • If a tester drops out, replacement coverage keeps you at the required headcount.

Questions

Does Google treat Flutter apps differently in closed testing?
No. Google evaluates the shipped Android App Bundle and the tester activity behind it. The framework you built with is not a factor - a Flutter app faces exactly the same 12-tester, 14-consecutive-day requirement as a native one.
Can I use an APK instead of an AAB?
For the Play Store you need an Android App Bundle. Build it with flutter build appbundle --release rather than flutter build apk.
Do my testers need to know it is a Flutter app?
No. Testers install and use it as an ordinary Android app. The framework is transparent to them, which is exactly what you want - their engagement should look like real usage because it is.
How long until my Flutter app is ready for production access?
The floor is 14 consecutive days with at least 12 opted-in testers actively keeping the app installed. Recruiting the testers is usually the slow part; the testing window itself cannot be shortened.

Read next