Before You Submit
App store rejections are almost always avoidable. Both Apple and Google publish detailed review guidelines, and most first-time rejections come from missing privacy disclosures, broken links, or incomplete metadata rather than actual functionality problems.
Publishing to Google Play
1. Generate a Signed Build
flutter build appbundle --release
This produces an .aab file, which is now required for new apps instead of a raw APK.
2. Configure Your Keystore
storePassword=yourStorePassword
keyPassword=yourKeyPassword
keyAlias=upload
storeFile=../upload-keystore.jks
3. Complete the Play Console Checklist
- Data safety form (what data you collect and why)
- Content rating questionnaire
- App category and target audience
- Privacy policy URL
Publishing to the Apple App Store
1. Archive and Upload
From Xcode, archive your build and upload it directly to App Store Connect, or use the command line:
xcodebuild -exportArchive \
-archivePath build/App.xcarchive \
-exportPath build/ \
-exportOptionsPlist ExportOptions.plist
2. App Privacy Details
Apple requires a detailed breakdown of every data type your app collects and whether it’s linked to the user’s identity. Fill this out carefully — inconsistent answers between your code and your declaration are a common cause of rejection.
3. TestFlight Before Public Release
Always run at least one TestFlight beta cycle with internal and external testers before submitting for full review. This surfaces crashes and edge cases you won’t catch in local testing.
Common Rejection Reasons
- Broken or placeholder content still visible in the build
- Login-gated apps without a demo account for reviewers
- Missing support URL or contact information
- Permissions requested without a clear in-app justification
Post-Launch Checklist
After going live, monitor crash reports closely for the first 48 hours, set up staged rollouts on Google Play to limit blast radius, and keep a rollback build ready in case a critical bug slips through.