Deploying Test Builds
Build and deploy internal distribution builds for iOS and Android using EAS Build.
Commands
iOS Development Build (with dev client)
eas build --platform ios --profile development
iOS Preview Build (internal distribution, no dev client)
eas build --platform ios --profile preview
Android Development Build
eas build --platform android --profile development
Android Preview Build
eas build --platform android --profile preview
Live Activity Widget Setup (IMPORTANT)
If your app uses @bacons/apple-targets for Live Activity widgets, you MUST manually configure the capability in Apple Developer Console. EAS does NOT auto-sync com.apple.developer.live-activity.
One-Time Setup for Live Activity
Step 1: Ensure targets/widgets/generated.entitlements contains:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.live-activity</key>
<true/>
</dict>
</plist>
Step 2: Enable Live Activity in Apple Developer Console:
- •Go to https://developer.apple.com/account/resources/identifiers/list
- •Click
com.buddybox.app.widget(your widget bundle ID) - •Scroll down and check "Push Notifications" (required for Live Activity)
- •Save changes
Step 3: Clear the widget's provisioning profile (so EAS regenerates it with the entitlement):
eas credentials --platform ios
Then:
- •Select development profile
- •Choose Build Credentials: Manage everything needed to build your project
- •Choose Provisioning Profile: Delete one from your project
- •Select the widget profile (
com.buddybox.app.widget) - •Confirm deletion
Step 4: Clean prebuild and rebuild:
rm -rf ios && npx expo prebuild --platform ios eas build --platform ios --profile development
General Troubleshooting
Clear All Credentials
If builds fail due to credential issues:
eas credentials --platform ios
Then navigate to delete Distribution Certificate (this removes all provisioning profiles).
Common Issues
- •
Provisioning profile missing entitlement:
- •The capability must be enabled in Apple Developer Console for the bundle ID
- •Delete the provisioning profile via
eas credentials - •Rebuild to regenerate with correct entitlements
- •
Device not registered:
basheas device:create
Then clear credentials and rebuild.
- •
Expired credentials:
- •Clear credentials and rebuild
- •
"Synced capabilities: No updates" for extensions:
- •EAS only syncs capabilities for the main app target
- •Extension capabilities must be enabled manually in Apple Developer Console
Build Profiles
Defined in eas.json:
| Profile | Distribution | Dev Client | Use Case |
|---|---|---|---|
development | internal | yes | Local development with Expo Go replacement |
preview | internal | no | Testing production-like builds |
production | store | no | App Store / Play Store submission |
Unsupported EAS Auto-Sync Capabilities
These must be enabled manually in Apple Developer Console:
- •
com.apple.developer.live-activity(Live Activity) - •HLS Interstitial Previews
- •Any capability not in Expo's supported list