Skip to content
beta logo

Beta

beta

Build and upload iOS app to TestFlight

SKILL.md

Full skill instructions

TestFlight Beta Release

Build and upload the iOS app to TestFlight for beta testing.

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

  1. Syncs certificates via Match (appstore type)
  2. Increments build number (unless --skip-build-increment)
  3. Builds release archive with gym
  4. Uploads to TestFlight via pilot
  5. Optionally distributes to external testers (if --external)

Commands

Standard Beta (Internal Testers)

cd project/​product/​swiftui-ios-app  # or your fastlane directory
fastlane beta

Skip Build Number Increment

fastlane beta skip_build_increment:true

External Testers (with changelog)

fastlane beta_external changelog:"Bug fixes and performance improvements"

Troubleshooting

"No value found for 'username'"

Set your Apple ID in fastlane/​Appfile:

apple_id("[email protected]")

"Please sign in with an app-specific password"

  1. Go to https://account.apple.com → Sign-In & Security → App-Specific Passwords
  2. Generate a password named "Fastlane"
  3. Export it:
export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD='xxxx-xxxx-xxxx-xxxx'

rsync error during export

If you see --extended-attributes: unknown option, Homebrew rsync conflicts with Xcode:

brew uninstall rsync  # Use system rsync

After Upload

  • Build will appear in TestFlight within 1-5 minutes
  • Internal testers are notified automatically
  • External testers require beta_external lane or manual distribution in App Store Connect