This guide outlines the complete process for deploying the Mood Tracker app to the Apple App Store.
- macOS with Xcode: Latest version of Xcode installed
- Apple Developer Account: Active paid Apple Developer Program membership ($99/year)
- Flutter SDK: Installed and configured for iOS development
- Physical iOS Device: For testing (recommended)
- Transporter App: Apple's official app for uploading to App Store Connect
- Valid Apple ID: Associated with your developer account
- Code Signing Certificates: Properly configured in Xcode/Keychain
- I open the Apple Developer Portal
- Navigated to "Certificates, Identifiers & Profiles" & created a new identifier for this project
- Fill in the details:
- Bundle ID:
com.capturedHeart.moodTracker(Explicit) - App Services: Select required capabilities (In my case, there was no special capabilities to set, the app is basic)
- Bundle ID:
- Bundle ID must match exactly with your Xcode project configuration
- Cannot be changed after first App Store submission
- Must be unique across the entire App Store
- I open the App Store Connect website
- Created a "New App"
- And finally completed the required information:
- Platforms: iOS
- Name: Mood Tracker (Cordelia)
- Primary Language: English (U.S.)
- Bundle ID: Select
com.capturedHeart.moodTracker - SKU: Unique identifier
I didn't have to set app information for Internal testingon TestFlight
I ensured the bundle identifier matches across all configurations:
Current Configuration:
- Bundle Identifier:
com.capturedHeart.moodTracker - Display Name:
Mood Tracker (Cordelia) - Bundle Name:
Mood Tracker (Cordelia) - Version Number: i set the version and build number 0.0.2+2
Configured supported orientations in Info.plist:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>Set in Info.plist:
<key>CFBundleDisplayName</key>
<string>Mood Tracker (Cordelia)</string>
<key>CFBundleName</key>
<string>Mood Tracker (Cordelia)</string>- Open Xcode project:
ios/Runner.xcworkspaceand on the "Runner" target - I went to "Signing & Capabilities" tab and checked "Automatically manage signing", and also selected my development team
- Finally, i ensured the bundle identifier matches:
com.capturedHeart.moodTracker
I made use of Icon Kitchen on the web to generate AppIcon for both Android and iOS
Execute the following commands in sequence:
# Clean all previous builds
flutter clean
# Install/update all dependencies
flutter pub get
# Build IPA for distribution
flutter build ipa- Build Location:
build/ios/archive/Runner.xcarchive - IPA Location:
build/ios/ipa/mood_tracker_assessment.ipa
- I signed in my Apple account and follow the steps to upload the IPA file.
- Clicked on "Verify" after uploading to Transporter, and when the verification passed, i finalize the proocess by clicking on "Deliver"
After successful upload via Transporter:
-
I go to App Store Connect,I navigated to "TestFlight" and confirmed the build was successful delivered from Transporter. Note: The build processing (can take up to 30 minutes - 2 hours)
-
The build will appear under "iOS Builds"
- I wil add internal testers basedon requests
✅ Completed Steps:
- Apple Developer Portal app identifier created
- App Store Connect app created and configured
- Xcode project configured with proper bundle ID and display name
- Device orientations configured (supports all orientations)
- App bundle name and version updated
- Release build successfully generated using
flutter build ipa - IPA file uploaded to App Store Connect via Transporter app
- App ready for TestFlight or App Store review
🔄 Next Steps:
- Complete App Store Connect metadata (screenshots, description, etc.)
- Internal testing via TestFlight (optional)
- Submit for App Store review
- Monitor review status and respond to any feedback