Releasing a FlutterFlow App to the App Store and Google Play
Short answer
To release a FlutterFlow app, either use FlutterFlow's built-in deployment or export the Flutter code and build it yourself, then sign it with your Apple distribution certificate and Android upload key, connect production Firebase settings, and complete both store listings. Most rejections come from missing permission texts, demo accounts, account deletion or privacy declarations, not from Flutter itself.
One-click deploy or exported code
FlutterFlow can build and upload your app to App Store Connect and the Play Console directly. That is the fastest route for a first release. Teams usually switch to exported code when they need custom native configuration, several environments, code review or automated releases. On paid plans you can download the Flutter project or push it to a GitHub repository, typically to a dedicated branch that you merge into your main branch.
Two things to know before exporting: build with the same Flutter version that FlutterFlow uses for your project, or you will chase dependency errors that do not exist in FlutterFlow, and keep custom changes in custom code inside FlutterFlow where possible, so the next export does not overwrite them.
Signing for iOS and Android
- iOS: an App ID with the right bundle identifier and capabilities (push, Sign in with Apple, associated domains), an Apple Distribution certificate and an App Store provisioning profile. In CI, an App Store Connect API key lets tools handle certificates and profiles for you.
- Android: an upload keystore that signs the app bundle, and Play App Signing, where Google holds the final signing key. Store the upload keystore and its passwords in a password manager; losing them means a key reset request with Google.
- Versioning: every upload needs a higher build number. Set version and build number deliberately rather than relying on defaults.
Firebase configuration that breaks in production
FlutterFlow can generate the Firebase configuration files for you, but production builds expose problems that test builds hide:
- Separate projects: use different Firebase projects for development and production, and make sure release builds contain the production files.
- Google Sign-In on Android: with Play App Signing, the SHA-1 and SHA-256 fingerprints of Google's app signing key must be added to Firebase. Otherwise sign-in works in your local build and fails for users who install from Google Play.
- Push on iOS: Firebase Cloud Messaging needs an APNs authentication key uploaded in the Firebase console, and the push capability enabled for the App ID.
- Security rules: test-mode Firestore rules must be replaced before launch.
Store listing and common rejections
Both stores need screenshots, a description, a privacy policy URL, Apple's App Privacy details and Google's Data safety form, a content rating and, on Google, target audience and ads declarations. The rejections we see most often for FlutterFlow apps:
| Reason | Fix |
|---|---|
| Missing or vague permission texts | Write specific camera, photo and location purpose texts in FlutterFlow's permission settings |
| Reviewer cannot sign in | Provide a demo account with sample data |
| No in-app account deletion | Add a delete-account action that removes Firebase Auth user and data |
| Google login without an equivalent option on iOS | Add Sign in with Apple or another option meeting Guideline 4.8 |
| Digital content sold via Stripe | Use in-app purchase, for example via FlutterFlow's RevenueCat integration |
On Google Play, new personal developer accounts must also complete a closed test before production, and Google raises the required target API level every year. Apple's rules are in the App Review Guidelines.
CI with Codemagic or Fastlane
Once code lives in Git, automate releases. Codemagic is built around Flutter and handles code signing through an App Store Connect API key and an uploaded keystore. Fastlane gives more control: match for certificates, build and upload actions for TestFlight and Google Play tracks, run from GitHub Actions or another CI. Either way, keep secrets in the CI's secret store, never in the repository.
How jocapps can help
appsubmitter.io combines AI-assisted checks with experienced App Specialists: CI/CD setup, signing, submission to both stores and hands-on help with rejections, all in your own developer accounts. If your FlutterFlow project needs ongoing development after export, apprat.io combines AI-assisted development with a monthly budget of human developer hours. Read our guide to iOS code signing or book a free 30-minute call via the meeting planner.
Frequently asked questions
Do I need to export code to publish a FlutterFlow app?
No. FlutterFlow can deploy to both stores directly. Exporting becomes useful when you need custom native configuration, multiple environments or automated release pipelines.
Why does Google Sign-In fail only in the Play Store version?
Play App Signing re-signs your app with Google's key. Add that key's SHA-1 and SHA-256 fingerprints from the Play Console to your Firebase project.
Can I keep editing in FlutterFlow after setting up CI?
Yes. Push FlutterFlow changes to a dedicated branch and merge them into the branch your CI builds. Keep custom code in FlutterFlow so exports do not overwrite it.
Which Flutter version should I build with locally?
The one FlutterFlow uses for your project. Mismatched versions are the most common cause of build errors after export.
Guides on this topic
- Store launchiOS Code Signing Explained: Certificates, Profiles and Keys
- Store launchCI/CD for AI-Generated Mobile Apps: A Pipeline That Catches What Agents Miss
- Store launchThe Most Common App Store Rejection Reasons and How to Fix Them
- Store launchGoogle Play Closed Testing Requirement: The 12-Tester Rule Explained
Related solutions
- App Store and Google PlayApp Maintenance After Launch: OS Updates, SDKs, Certificates, Budget
- App Store and Google PlayApp Store and Google Play Screenshots, Videos and Metadata Done Right
- App Store and Google PlayRejected Under Apple Guideline 4.3 Spam? Causes, Replies and Fixes
- App Store and Google PlayFixing an Apple Guideline 5.1.1 Data Collection and Privacy Rejection
Talk to us about your project
Honest advice on your idea, prototype or app.
- 30 minutes
- Free
- No obligation
