iOS to TestFlight
Build and deploy your iOS app to TestFlight for beta testing
iOS to TestFlight
This guide walks you through building and deploying your iOS app to TestFlight for beta testing.
Prerequisites
Before you begin, ensure you have:
- macOS with Xcode 14+ installed
- Apple Developer Program membership (Admin or App Manager role)
- Mobile project that builds to iOS (native Swift/Objective-C, React Native, Flutter, Ionic/Capacitor, or Expo)
- MySigner account with App Store Connect credentials configured
Don't have credentials set up? Follow the Getting Started guide first.
Step 1: Verify Your Setup
Run the doctor command to check your configuration:
mysigner doctor
The doctor will verify:
- ✓ CLI authentication
- ✓ App Store Connect credentials
- ✓ Xcode and build tools
- ✓ Project configuration
- ✓ Signing identity and provisioning profiles
If there are issues, the doctor will offer to fix them automatically.
Step 2: Configure TestFlight Beta Groups (Optional)
If you want specific testers to receive builds automatically:
- Go to the MySigner dashboard
- Navigate to your iOS app
- Under TestFlight, configure beta groups
- Add tester emails or sync from App Store Connect
You can also manage testers directly in App Store Connect after the build is uploaded.
Step 3: Ship to TestFlight
From your project's root directory, run:
mysigner ship testflight
This single command:
- Detects your project type (Native, React Native, Flutter, etc.)
- Validates signing configuration
- Builds the app using
xcodebuild - Exports an IPA with App Store distribution signing
- Uploads to App Store Connect (build appears in TestFlight after Apple processes it)
With Options
# Specify a scheme (useful for multi-scheme projects)
mysigner ship testflight --scheme MyApp
# Use a specific build configuration
mysigner ship testflight --configuration Release
# Wait for Apple to finish processing
mysigner ship testflight --wait
Step 4: Monitor Progress
The CLI shows real-time progress:
================================================================================
[1/3] Building Archive
================================================================================
✓ Found: MyApp.xcworkspace (Native iOS)
🎯 Target: MyApp
📦 Bundle ID: com.company.myapp
⏱️ Estimated: 2-5 minutes
🔍 Validating signing setup...
✓ Signing configuration valid
Building archive...
✓ Build complete in 2m 34s
================================================================================
[2/3] Exporting IPA
================================================================================
⏱️ Estimated: 30-90 seconds
✓ Export complete in 45s
📦 IPA: ~/Archives/MyApp.ipa
================================================================================
[3/3] Uploading to TestFlight
================================================================================
Uploading to App Store Connect...
▸ Validating IPA
▸ Uploading... 45.2 MB / 45.2 MB (100%)
▸ Upload complete
================================================================================
🎉 SUCCESS! Your app is on TestFlight!
================================================================================
Step 5: Wait for Processing
After upload, Apple processes your build:
| Phase | Duration |
|---|---|
| Upload validation | 1-2 minutes |
| Build processing | 5-15 minutes |
| TestFlight available | Immediately after processing |
You can add --wait to have the CLI notify you when processing is done:
mysigner ship testflight --wait
⏳ Waiting for App Store Connect to process the build...
This may take 5-15 minutes...
For fully automated processing + submission, usemysigner ship appstoreinstead — it polls every 3 minutes until the build is processed and then auto-submits for review.
Step 6: Distribute to Testers
Once processing completes:
Automatic distribution: If you configured beta groups in MySigner, testers receive notifications immediately
Manual distribution:
- Open App Store Connect
- Navigate to your app → TestFlight
- Select the build and add testers/groups
Workflow Diagram
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Build │────▶│ Export │────▶│ Upload │
│ Archive │ │ IPA │ │ to ASC │
└─────────────┘ └─────────────┘ └─────────────┘
│
▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Testers │◀────│ TestFlight │◀────│ Processing │
│ Notified │ │ Ready │ │ Complete │
└─────────────┘ └─────────────┘ └─────────────┘
Time Estimate
| Step | Duration |
|---|---|
| Build | 2-5 minutes |
| Export | 30-90 seconds |
| Upload | 1-3 minutes |
| Processing | 5-15 minutes |
| Total | 10-25 minutes |
Common Issues
"No signing identity found"
Your Mac doesn't have the distribution certificate.
Fix:
bash
mysigner doctor
Or manually: 1. Open Xcode → Settings → Accounts 2. Select your team 3. Click "Download Manual Profiles"
"Profile doesn't include signing certificate"
The provisioning profile was created with a different certificate.
Fix:
bash
mysigner doctor
Doctor can detect the mismatch and auto-create a new profile with your current certificate. Alternatively, refresh your data first and then let doctor fix it:
mysigner sync --force
mysigner doctor
"Bundle ID not registered"
Your app's bundle ID isn't in App Store Connect.
Fix: ```bash
Register the bundle ID
mysigner bundleid register com.company.myapp
Sync to refresh
mysigner sync ```
Build takes too long
For large projects:
- Use derived data caching in CI/CD
- Clean only when needed:
xcodebuild cleanresets all caches - Disable bitcode if not required (deprecated in Xcode 14+)
Next Steps
- Submit to App Store - Submit for App Store review
- GitHub Actions CI/CD - Automate TestFlight deployments
- Troubleshooting - More issue solutions
Related Commands
ship- Full ship command referencebuild- Build without uploadingdoctor- Diagnose issuesprofiles- Manage provisioning profiles
Related Dashboard Pages
- Releases - Manage release notes (with optional review workflow), release checklists, and locale-specific listings
- Screenshot Studio - Generate the screenshots required for TestFlight beta groups
- Reviews & Ratings - Monitor App Store reviews after the build is approved
- Analytics - Track install / retention / stability metrics post-release