Agent skill
testflight
TestFlight and App Store distribution guide. Use when preparing app for TestFlight, creating production builds, or submitting to App Store Connect.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/testflight
SKILL.md
TestFlight & App Store Distribution
Prerequisites
- Apple Developer Program membership ($99/year)
- Xcode installed
- EAS CLI installed:
npm install -g eas-cli - Expo account:
eas login
Build Profiles (eas.json)
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal",
"ios": {
"simulator": false
}
},
"production": {
"ios": {
"buildConfiguration": "Release"
}
}
},
"submit": {
"production": {
"ios": {
"appleId": "your-apple-id@example.com",
"ascAppId": "your-app-store-connect-app-id"
}
}
}
}
Environment Variables for Production
# mobile/.env.production
EXPO_PUBLIC_SIGNALING_SERVER_URL=https://webrtc-signaling-xxxx.onrender.com
Build Commands
cd mobile
# Configure EAS (first time)
eas build:configure
# Development build (for testing)
eas build --platform ios --profile development
# Preview build (internal distribution)
eas build --platform ios --profile preview
# Production build (App Store)
eas build --platform ios --profile production
# Submit to App Store Connect
eas submit --platform ios --latest
TestFlight Distribution Steps
-
Create Production Build
basheas build --platform ios --profile production -
Submit to App Store Connect
basheas submit --platform ios -
Configure in App Store Connect
- Go to https://appstoreconnect.apple.com
- Select app → TestFlight tab
- Wait for build processing (5-30 minutes)
- Add test information if required
-
Add Testers
- Internal testers: Up to 100 (Apple Developer team members)
- External testers: Up to 10,000 (requires brief review)
-
Tester Installation
- Testers receive email invitation
- Install TestFlight app from App Store
- Open invitation link → Install app
App Store Submission Checklist
- App icons (all required sizes)
- Screenshots for required device sizes
- App description and keywords
- Privacy policy URL
- Support URL
- Age rating questionnaire
- Export compliance information
- Production environment variables set
Common Issues
| Issue | Solution |
|---|---|
| Build fails with signing error | Check Apple Developer certificates in Xcode |
| "Missing compliance" | Complete export compliance in App Store Connect |
| Build stuck in processing | Wait up to 30 minutes, or rebuild |
| TestFlight invite not received | Check spam folder, verify email address |
EAS Build Troubleshooting
npm workspaces との競合
問題: npm ci can only install packages when your package.json and package-lock.json are in sync
原因: npm workspacesを使用しているモノレポ構成では、子ディレクトリ(mobile/)に独立したpackage-lock.jsonが生成されない。EAS Buildはnpm ciを使用するため、package-lock.jsonが必要。
解決方法:
// root package.json - mobile を workspaces から除外
{
"workspaces": [
"web",
"server"
// "mobile" を削除
]
}
その後、mobile/ で独立した package-lock.json を生成:
cd mobile
rm -rf node_modules package-lock.json
npm install
⚠️ TestFlight アプリが起動直後にクラッシュする(最重要)
症状: EAS Build は成功、App Store Connect に提出成功、TestFlight からインストール成功、しかしアプリを開くと即座にクラッシュ。
原因: Expo SDK 54 と互換性のない依存関係バージョンを使用している。
確認方法:
npx expo install --check
解決方法: 以下のバージョンに厳密に合わせる:
{
"dependencies": {
"react": "19.1.0",
"react-dom": "19.1.0",
"react-native-gesture-handler": "~2.28.0",
"react-native-safe-area-context": "~5.6.0",
"react-native-screens": "~4.16.0"
}
}
注意: react@19.2.1 など推奨より新しいバージョンを使うと、開発ビルドでは動作するが本番ビルドでクラッシュする。
バージョン修正後:
rm -rf node_modules package-lock.json
npm install
eas build --platform ios --profile production
expo-router のピア依存関係
問題: Unable to find a specification for RNScreens depended upon by ExpoHead
原因: expo-router は react-native-screens などのピア依存関係を必要とするが、明示的にインストールされていない。
解決方法: mobile/package.json に以下を追加:
{
"dependencies": {
"react-native-gesture-handler": "~2.28.0",
"react-native-safe-area-context": "~5.6.0",
"react-native-screens": "~4.16.0"
}
}
Xcode 16 / iOS SDK 26 互換性
問題: no member named 'move' in namespace 'std' (RNSScreenStackHeaderConfig.mm)
原因: react-native-screens の古いバージョンは Xcode 16 / iOS SDK 26 と互換性がない。
解決方法: react-native-screens を ~4.16.0 以上にアップグレード:
npx expo install react-native-screens
推奨 eas.json 設定
{
"build": {
"production": {
"env": {
"EXPO_PUBLIC_SIGNALING_SERVER_URL": "https://your-server.com",
"NPM_CONFIG_LEGACY_PEER_DEPS": "true"
},
"node": "22.12.0"
}
},
"submit": {
"production": {
"ios": {
"appleId": "your-apple-id@example.com",
"appleTeamId": "YOUR_TEAM_ID"
}
}
}
}
ビルド成功のためのチェックリスト
-
npx expo install --checkでバージョン互換性を確認 - react が 19.1.0(19.2.x はクラッシュの原因)
- mobile が npm workspaces から除外されている
- mobile/ に独立した package-lock.json がある
- expo-router のピア依存関係がインストールされている
- eas.json に appleTeamId が設定されている
- Info.plist に必要な権限が設定されている(下記参照)
Info.plist の必須権限(App Store 提出用)
// app.json の ios.infoPlist
{
"NSMicrophoneUsageDescription": "音声通話のためにマイクを使用します",
"NSSpeechRecognitionUsageDescription": "音声を文字に変換するために使用します",
"NSPhotoLibraryUsageDescription": "プロフィール画像の設定に使用します",
"NSCameraUsageDescription": "ビデオ通話のためにカメラを使用します",
"ITSAppUsesNonExemptEncryption": false
}
注意: これらがないと App Store Connect が自動拒否 (ITMS-90683) します。
Important Notes
- TestFlight builds expire after 90 days
- Each new build requires incrementing version or build number
- External testers require Apple review (usually 24-48 hours)
- Keep production signaling server running on Render
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?