- Created a new PostCSS configuration file to integrate Tailwind CSS. - Added a skills lock file containing various Expo skills with their respective source and computed hashes.
1.6 KiB
1.6 KiB
TestFlight
Always ship to TestFlight first. Internal testers, then external testers, then App Store. Never skip this.
Submit
npx testflight
That's it. One command builds and submits to TestFlight.
Skip the Prompts
Set these once and forget:
EXPO_APPLE_ID=you@email.com
EXPO_APPLE_TEAM_ID=XXXXXXXXXX
The CLI prints your Team ID when you run npx testflight. Copy it.
Why TestFlight First
- Internal testers get builds instantly (no review)
- External testers require one Beta App Review, then instant updates
- Catch crashes before App Store review rejects you
- TestFlight crash reports are better than App Store crash reports
- 90 days to test before builds expire
- Real users on real devices, not simulators
Tester Strategy
Internal (100 max): Your team. Immediate access. Use for every build.
External (10,000 max): Beta users. First build needs review (~24h), then instant. Always have an external group—even if it's just friends. Real feedback beats assumptions.
Tips
- Submit to external TestFlight the moment internal looks stable
- Beta App Review is faster and more lenient than App Store Review
- Add release notes—testers actually read them
- Use TestFlight's built-in feedback and screenshots
- Never go straight to App Store. Ever.
Troubleshooting
"No suitable application records found" Create the app in App Store Connect first. Bundle ID must match.
"The bundle version must be higher"
Use autoIncrement: true in eas.json. Problem solved.
Credentials issues
eas credentials -p ios