App Store Production Release
Submit the iOS app to App Store Connect for review and release.
Pre-flight Checks
- •Fastlane installed: !
fastlane --version 2>/dev/null | grep "fastlane " | head -1 || echo "✗ Not installed - run: brew install fastlane" - •Fastfile exists: !
ls fastlane/Fastfile 2>/dev/null && echo "✓ Found" || echo "✗ Not found - run /setup-fastlane first" - •App-specific password: !
[ -n "$FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD" ] && echo "✓ Set" || echo "⚠️ Not set - export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD='xxxx-xxxx-xxxx-xxxx'"
Arguments: ${ARGUMENTS:-none}
What This Does
fastlane release (Submit Existing Build)
- •Selects latest TestFlight build already uploaded
- •Submits for App Store review
- •Ideal when you've already tested a beta build
fastlane release_full (Full Pipeline)
- •Syncs certificates via Match (appstore type)
- •Bumps version number (if
version:provided) - •Increments build number
- •Builds release archive with gym
- •Uploads to App Store Connect
- •Submits for review
- •Auto-releases after approval (if
auto_release:true)
Commands
Submit Existing TestFlight Build
bash
cd project/product/swiftui-ios-app # or your fastlane directory fastlane release
Full Release with Version Bump
bash
fastlane release_full version:"1.1.0"
Full Release with Auto-Release
bash
fastlane release_full version:"1.2.0" auto_release:true
This will automatically release to the App Store once Apple approves the build.
Workflow Recommendation
- •Test first: Run
fastlane betato upload to TestFlight - •Verify in TestFlight: Ensure the build works correctly
- •Submit for review: Run
fastlane releaseto submit the tested build - •Or full pipeline: Use
fastlane release_fullfor a fresh build + submit
Troubleshooting
"No value found for 'username'"
Set your Apple ID in fastlane/Appfile:
ruby
apple_id("your@email.com")
"Please sign in with an app-specific password"
- •Go to https://account.apple.com → Sign-In & Security → App-Specific Passwords
- •Generate a password named "Fastlane"
- •Export it:
bash
export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD='xxxx-xxxx-xxxx-xxxx'
"The provided entity includes an attribute with a value that has already been used"
The version number already exists. Increment the version:
bash
fastlane release_full version:"1.0.1"
Build rejected or needs changes
- •Address Apple's feedback
- •Increment build number and re-upload:
bash
fastlane beta
- •Submit again:
bash
fastlane release
After Submission
- •Review time: Typically 24-48 hours (can be longer)
- •Check status: App Store Connect → My Apps → Your App → App Store
- •If rejected: Review feedback, fix issues, increment build, resubmit
- •If approved with auto_release: App goes live immediately
- •If approved without auto_release: Manually release in App Store Connect