This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
Submit to the Apple App Store with EAS Submit
Edit page
Learn how to submit your iOS app to the Apple App Store with EAS Submit.
EAS Submit is the recommended way to upload your iOS app to the Apple App Store. The eas submit command works the same way on your machine and inside CI/CD. EAS Workflows is the simplest way to run it automatically after a build. EAS Submit works on macOS, Linux, and Windows, so you don't need a Mac to ship iOS builds.
Prerequisites
3 requirements
3 requirements
1.
A paid Apple Developer account is required to submit apps to the Apple App Store. Sign up on the Apple Developer Portal.
2.
Include your app's bundle identifier in app.json:
{ "ios": { "bundleIdentifier": "com.yourcompany.yourapp" } }
3.
Install EAS CLI and log in with your Expo account:
- npm install --global eas-cli && eas loginBuild a production app
You need a production .ipa to submit. Create one with EAS Build:
- eas build --platform ios --profile productionAlternatively, build on your own computer with eas build --platform ios --profile production --local or with Xcode.
Submit with eas submit
Once the build is ready, submit it to the Apple App Store:
- eas submit --platform iosThe command will walk you through selecting a build, prompt for your Apple ID on first run, and upload the binary to App Store Connect. The build appears in TestFlight after processing (usually 10-15 minutes). To release to production, log in to App Store Connect and submit the build for App Review.
Configure a submission profile
Add a submission profile in eas.json with your App Store Connect app ID:
{ "submit": { "production": { "ios": { "ascAppId": "your-app-store-connect-app-id" } } } }
How to find ascAppId
- Sign in to App Store Connect and select your team.
- Navigate to Apps.
- Click your app.
- Ensure the App Store tab is active.
- On the left pane, under General, select App Information.
- Your
ascAppIdis listed under General Information as Apple ID.
See the eas.json reference for every available option.
Build and submit in one step
Pass --auto-submit to eas build to hand the finished build off to EAS Submit automatically:
- eas build --platform ios --auto-submitSee Automate submissions for details.
Automate with EAS Workflows
EAS Workflows runs the same submit step on EAS infrastructure, triggered by a git push or run manually from the CLI. First, configure an App Store Connect API Key so workflows can authenticate with Apple non-interactively:
- eas credentials --platform ios- Select the
productionbuild profile. - Log in with your Apple Developer account and follow the prompts.
- Select App Store Connect: Manage your API Key.
- Select Set up your project to use an API Key for EAS Submit.
Prefer to bring your own credentials?
App Store Connect API Key: Create your own API Key and set it with the ascApiKeyPath, ascApiKeyIssuerId, and ascApiKeyId fields in eas.json.
App-specific password: Provide your app-specific password via the EXPO_APPLE_APP_SPECIFIC_PASSWORD environment variable and set your Apple ID with the appleId field in eas.json.
Create a workflow file named .eas/workflows/submit-ios.yml with the following contents:
name: Submit iOS on: push: branches: ['main'] jobs: build_ios: name: Build iOS app type: build params: platform: ios profile: production submit_ios: name: Submit to TestFlight needs: [build_ios] type: testflight params: build_id: ${{ needs.build_ios.outputs.build_id }}
This builds an iOS app on every push to main and submits it to TestFlight. The pre-packaged testflight job can also share the build with internal and external testing groups. Trigger the workflow manually with:
- eas workflow:run submit-ios.ymlSee the workflow examples guide for more patterns.
Use other CI/CD services
You can run eas submit from any CI/CD service, such as GitHub Actions, GitLab CI, and others:
- eas submit --platform ios --profile productionThis requires a personal access token to authenticate with your Expo account. Set the EXPO_TOKEN environment variable in your CI service so eas submit can run non-interactively.
Manual fallback
If EAS Submit is temporarily unavailable, you can upload to the Apple App Store manually from a Mac with Xcode.
Archive and upload an iOS app to App Store Connect using Xcode on macOS.