How to Build and Test iOS Apps on a Physical Phone: Expo EAS and Apple TestFlight (Part 2/3)

Published: (February 15, 2026 at 07:52 PM EST)
2 min read
Source: Dev.to

Source: Dev.to

Building a Production (Store‑Signed) Binary

eas build --platform ios --profile production

When prompted, let EAS manage:

  • certificates
  • provisioning profiles
  • signing

This produces an App Store‑signed IPA.

Resolved "production" environment for the build. Learn more: https://docs.expo.dev/eas/environment-variables/#setting-the-environment-for-your-builds
....
✔ Incremented buildNumber from 3 to 4.
✔ Using remote iOS credentials (Expo server)

✔ Do you want to log in to your Apple account? … yes
› Log in to your Apple Developer account to continue
✔ Apple ID: … cathy.xxxx@xxxxx.com
› Restoring session /Users/cathy/.app-store/auth/cathy.xxxx@xxxxx.com/cookie
› Session expired Local session
› Using password for cathy.xxxx@xxxxx.com from your local Keychain
  Learn more: https://docs.expo.dev/distribution/security#keychain
✔ Logged in New session
› Team Cathy Lai (XXXXXX)
› Provider Cathy Lai (xxxxxxxx)
✔ Bundle identifier registered com.cathyapp1234.oauthpro2
✔ Synced capabilities: No updates
✔ Synced capability identifiers: No updates
✔ Fetched Apple distribution certificates
✔ Fetched Apple provisioning profiles

Project Credentials Configuration

Project                   @cathyapp1234/oauth-pro2
Bundle Identifier         com.cathyapp1234.oauthpro2

Distribution certificates and provisioning profiles are auto‑generated. They act as Apple’s “permission slip” that allows the binary to run on specific devices.

App Store Configuration Details

Distribution Certificate
Serial Number             XXXXXXXDA97EA34FFC3B28C8BA6C44
Expiration Date           Tue, 04 Aug 2026 05:10:17 GMT+1200
Apple Team                XXXXXX (Cathy Lai (Individual))
Updated                   6 months ago

Provisioning Profile
Developer Portal ID       XxXXXXXXXX
Status                    active
Expiration                Tue, 04 Aug 2026 05:10:17 GMT+1200
Apple Team                XXXXXXXXXX (Cathy Lai (Individual))
Updated                   17 days ago

All credentials are ready to build @cathyapp1234/oauth-pro2 (com.cathyapp1234.oauthpro2).

Compressing project files and uploading to EAS Build. Learn more: https://expo.fyi/eas-build-archive
✔ Uploaded to EAS 1s
✔ Computed project fingerprint

See logs: https://expo.dev/accounts/cathyapp1234/projects/oauth-pro2/builds/xxxxxxx

Waiting for build to complete. You can press Ctrl+C to exit.
  Build queued...

Waiting in priority queue
|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 

✔ Build finished
🍏 iOS app:
https://expo.dev/artifacts/eas/xxxxxxxxx.ipa

Automatic App Store Connect Integration

Expo will auto‑create the app record in App Store Connect:

  • App record created
  • Bundle ID registered
  • Build uploaded

The build then appears in TestFlight.

TestFlight screenshot 1

TestFlight screenshot 2

Next Steps

Add testers (via email) so they receive a TestFlight invitation and can download the app.

Video of the whole process is available for reference.

0 views
Back to Blog

Related posts

Read more »

[SD] Sincronizando SwiftData con iCloud

Activar Capability El primer paso para sincronizar SwiftData con CloudKit es activar la Capability iCloud. En Xcode, busca la opción + Capability cerca de la c...