Introduction
Deploying Flutter apps to TestFlight and the Play Store is a critical step in the development lifecycle. Whether you’re iterating on features or preparing a public release, mastering Flutter app deployment ensures a smooth user onboarding experience. This tutorial walks through configuring your project, generating signed binaries, and submitting your iOS and Android builds. By the end, you'll have a repeatable workflow for both platforms.
Preparing Your Project for Release
Before creating a build, verify these essentials:
Versioning
Update version in pubspec.yaml: version: 1.2.0+5
The last number (+5) is the Android versionCode and iOS buildNumber.
App Icons & Launch Screens
Use flutter_launcher_icons or manually add assets in ios/Runner/Assets.xcassets and android/app/src/main/res.
Code Obfuscation & Tree Shaking
Enable Dart obfuscation and tree shaking for release:
flutter build apk --release --obfuscate --split-debug-info=./debug-info
flutter build ios --release --obfuscate --split-debug-info=./debug-info
Permissions & Privacy Settings
For iOS, update Info.plist with required keys (NSCameraUsageDescription, etc.).
For Android, update AndroidManifest.xml with <uses-permission> entries.
Deploying to TestFlight
Create an App Store Connect record.
• Log in to App Store Connect → My Apps → “+” → New iOS App.
• Specify bundle identifier, platform, and SKU.
Archive the iOS build.
• Open ios/Runner.xcworkspace in Xcode.
• Select a Generic iOS Device, choose Product → Archive.
Upload via Xcode or Transporter.
• In Xcode’s Organizer, select the archive → Validate → Upload.
• Alternatively, export the .ipa and upload using Apple Transporter.
Configure TestFlight metadata.
• Under your app, click TestFlight → App Information.
• Fill in compliance, version notes, and invite testers.
Distribute to testers.
• After Apple’s processing (typically < 30 minutes), add internal/external testers.
• Testers will receive an email to install via the TestFlight app.
Publishing on Google Play Console
Prepare a Play Console listing.
• Sign in to Google Play Console → All apps → Create app.
• Choose an app name, default language, and account details.
Generate a signed AAB.
• Configure key.properties and signingConfigs in android/.
• Build the Android App Bundle:
flutter build appbundle --release
• The output app-release.aab lives in build/app/outputs/bundle/release/.
Upload to the Play Console.
• Navigate to your app → Release → Production (or Internal testing).
• Create a new release → Upload the .aab.
Complete Store Listing.
• Provide title, short/long descriptions, screenshots, and app category.
• Set content rating, target audience, and privacy policy link.
Rollout & Review.
• Review your release summary and click Start rollout to production.
• Google typically reviews within a few hours to one day.
Common Pitfalls & Tips
Mismatched Bundle IDs/Package Names
Ensure iOS PRODUCT_BUNDLE_IDENTIFIER matches App Store Connect.
Android applicationId in build.gradle must match Play Console.
Missing Signing Keys
Back up your keystore and passwords—losing them prevents updates.
Build Flavors & Environment Variables
Use --flavor with custom schemes in Xcode and Gradle to manage dev/staging/prod.
Automating with CI/CD
Tools like Codemagic or GitHub Actions can automate your Flutter app deployment pipeline.
Vibe Studio

Vibe Studio, powered by Steve’s advanced AI agents, is a revolutionary no-code, conversational platform that empowers users to quickly and efficiently create full-stack Flutter applications integrated seamlessly with Firebase backend services. Ideal for solo founders, startups, and agile engineering teams, Vibe Studio allows users to visually manage and deploy Flutter apps, greatly accelerating the development process. The intuitive conversational interface simplifies complex development tasks, making app creation accessible even for non-coders.
Conclusion
You’ve now configured your Flutter project for release, deployed to TestFlight, and published on the Play Store. A structured Flutter app deployment workflow reduces errors and accelerates feedback loops.