Submitting to the Apple App Store
This guide outlines how to submit your app to the Apple App Store from your own computer and from CI.
A paid developer account is required to submit an app — you can create an Apple Developer account on the
Apple Developer Portal.
You'll need a built native app binary. You can either use the
EAS Build service or do it on your own.
To submit the binary to the App Store, run eas submit -p ios
from inside your project directory. The command will lead you step by step through the process of submitting the app. To see all possible options along with example usages, run eas submit --help
.
Although it's possible to upload any binary to the store, each submission is assigned to an Expo project. That's why it's important to start submission from inside your project's directory - that's where your
app configuration is defined.
To upload your iOS app to the Apple App Store, run eas submit --platform ios
and follow the instructions on the screen.
The command will perform the following steps:
Log in to Expo account and ensure that your app project exists on EAS servers
Ensure that your app exists on App Store Connect and its
Bundle Identifier is registered on Apple Developer Portal:
You will be asked to log in your Apple Developer account and select your team. You can also provide this information by using the --apple-id
, --apple-team-id
params and the EXPO_APPLE_PASSWORD
environment variable.
The command will look for ios.bundleIdentifier
in your app configuration, or you can provide it directly using the --bundle-identifier
flag.
If you are submitting your app for the first time, it will be automatically created.
Unless expo.name
in your app configuration is found or an --app-name
param is provided, you will be prompted for app name.
You can also specify your app's language and SKU using --language
and --sku
params respectively. If you have never submitted any app before, you may also have to specify your company name using --company-name
parameter.
If you already have an App Store Connect app, this step can be skipped by providing the
--app-asc-id
param. The
ASC App Id param can be found either on App Store Connect, or later during this command in the
Submission Summary table.
Ask for your Apple ID (if not provided earlier) and for your Apple app-specific password. They can be also provided using --apple-id
param and EXPO_APPLE_APP_SPECIFIC_PASSWORD
environment variable, respectively.
Ask for which binary to submit. You can select one of the following:
A summary of the provided configuration is displayed and the submission process begins. The submission progress is displayed on the screen.
Your build should now be visible on
App Store Connect. If something goes wrong, an appropriate message is displayed on the screen.
The
eas submit
command is able to perform submissions from a CI environment. All you have to do is ensure that all required information is provided with command parameters and environment variables. Mainly, providing the archive source (
--latest
,
--id
,
--path
or
--url
) is essential. Also, make sure that the iOS Bundle Identifier is present in your
app configuration file, unless you provide the
--bundle-identifier
flag.
For iOS submissions, you have to provide EXPO_APPLE_APP_SPECIFIC_PASSWORD
environment variable along with Apple ID (--apple-id
) and ASC App ID (--asc-app-id
) parameters. The --asc-app-id
flag is required to skip Apple developer login, which will likely not be possible on CI due to the 2FA prompt.
Example usage:
EXPO_APPLE_APP_SPECIFIC_PASSWORD=xxxxx eas submit -p ios --latest --apple-id=user@example.com --asc-app-id=1234567890