App Store / Google Play / Flutter

Flutter App Release Checklist (2026): What Ten Apple Rejections Taught Me

PEAKSTW is a real cross-platform app that I developed, submitted, and still operate. Ten Apple review rejections did not teach me how to predict a reviewer. They taught me to put accounts, subscriptions, review access, real devices, backend state, and release evidence into one gate before pressing Submit.

· 13 minute read · Printable checklist

Need only the checks that apply? Open the free Flutter App Release Checklist Generator. Choose iOS, Android, first launch or update, accounts, and purchases; it returns a tailored Markdown checklist without sign-in.
Scope and freshness: This checklist is aimed at Flutter and other cross-platform apps with sign-in, cloud data, or subscriptions. I rechecked every volatile platform claim against current Apple and Google documentation on August 13, 2026. Policies can change, so revisit the linked first-party sources on submission day. This is not legal advice and cannot guarantee approval.

Two dated requirements to check first

Some submission failures happen before review begins because the uploaded build no longer meets a platform floor. These requirements are time-sensitive and should stay at the top of the release ticket:

For a Flutter app, an SDK bump is not merely a number change. Rebuild and exercise permissions, background work, notifications, billing, file access, edge-to-edge layout, and every native plugin that crosses the platform boundary.

The 15-minute pre-submission pass

1. Accounts and privacy: functional is not policy-complete

Account deletion is a lifecycle, not a button

Apple’s App Review Guidelines say that an app supporting account creation must also offer account deletion within the app. Apple’s dedicated account deletion guidance distinguishes deletion from temporary deactivation and explains additional considerations for Sign in with Apple and active subscriptions.

Google Play adds an off-device requirement. Its User Data policy guidance requires an in-app deletion path and a web resource entered in the Data safety form so a person who has uninstalled the app can still request deletion.

Third-party sign-in depends on equivalent capabilities and exceptions

Apple Guideline 4.8 applies when a third-party or social login service authenticates the app’s primary account. The guideline describes an equivalent login option with data-minimization and privacy characteristics, and it also lists exceptions such as certain enterprise, education, business, government, or industry-backed identity systems. Do not mechanically add a button because an old blog post says “Google login always requires Apple login.” Read the current guideline and map your actual account flow to the rule or an exception.

2. Subscriptions: verify entitlements, not only checkout

Store billing has at least four layers. A green purchase sheet proves only one of them:

LayerEvidence to collectCommon false green
CatalogProduct is active in the intended region; app displays the store-returned localized price and term“It exists in the console, so every tester can buy it”
CheckoutSuccess, cancellation, pending payment, duplicate taps, interruption, and recoveryOne successful sandbox transaction
EntitlementRestore, reinstall, device change, renewal, expiry, refund, revocation, upgrade, and downgradePermanent local Pro flag after purchase
BackendSignature verification, idempotency, stale/out-of-order events, reconciliation, and audit trailNotification endpoint returned HTTP 200

The Google Play productId trap

Google Play’s current subscription model lets one subscription product contain more than one base plan and offer. A monthly plan, annual plan, free trial, and win-back offer do not necessarily have separate product IDs. Code that treats productId as the only price-plan key can collapse distinct choices or grant the wrong entitlement.

Notifications say “something changed,” then you fetch truth

Google’s RTDN reference says that a notification reports a purchase-state change but does not carry the full purchase status; the backend must call the Google Play Developer API. Apple provides App Store Server Notifications V2 and the App Store Server API for transaction and subscription state. Test the handler, not just the URL: validate signatures, associate the correct user, tolerate retries, handle event ordering, reconcile missed events, and retain enough evidence to explain an entitlement change.

3. Test store behavior across environments

Local mocks are useful, but they do not prove the store-facing configuration or server path. Apple’s StoreKit testing guide separates Xcode testing, Sandbox, and TestFlight. It explicitly includes restores, subscription offers, renewals, refunds, revocations, cancellation, and expiry scenarios. Google recommends license testers and Play Billing Lab in its billing test guide, including declined, delayed, pending, and chargeback-like paths.

4. Review access: do not make the reviewer reverse-engineer your product

Apple’s submission overview points developers to App Review information for context that helps the review team. A core flow hidden behind a short-lived OTP, company VPN, empty account, location condition, or undocumented hardware dependency is not review-ready simply because it works for the developer.

5. Real-device and cross-platform boundaries

A Flutter test suite can prove Dart behavior and still miss native configuration, store identity, OS lifecycle, signing, permission, or plugin failures. The release candidate should survive the boundaries the stores and users actually exercise:

6. Google’s 12 testers / 14 days rule has a scope

Google’s current testing requirement applies to personal developer accounts created after November 13, 2023. Before applying for production access, the app needs a closed test with at least 12 testers continuously opted in for at least 14 days. The developer then answers questions about testing, feedback, changes, and production readiness.

7. Turn “submitted” into an auditable release gate

After ten rejection rounds, the most expensive pattern was fixing one symptom, resubmitting immediately, and discovering an old neighboring problem in the next round. I now inspect each risk family together and save runtime evidence before submission:

A successful upload is therefore submitted, not approved. A passing checklist is release eligibility, not traffic. Until analytics access exists, downloads, store impressions, page views, and conversions remain not measured; do not infer them from a green CI job, accepted binary, valid feed, or social reactions.

What this checklist cannot guarantee

It cannot guarantee first-pass approval. It cannot replace the current App Review Guidelines, Google Play policy, legal advice, or requirements for regulated categories such as health and finance. Storefront, app category, data types, commerce model, hardware, and regional rules can add obligations. What the checklist does guarantee is a better incident record: you know which artifact was submitted, what was tested, which policy interpretation was used, and what changed after review.

To remove the items that do not apply to your release, use the free 2026 App Release Checklist Generator. It filters by store, first launch or update, account features, and purchases, then exports the result as Markdown. For a broader evidence contract, continue with the AI Agent Production Readiness Checklist or the production readiness tool.

Stuck in app review, subscriptions, or cross-platform release work?

DrNoGreasy Studio builds Flutter, iOS, Android, subscription, and backend systems with review preparation, device testing, permission boundaries, and production verification included.

Contact the studio or browse more evidence-first developer resources.