1--- 2title: Submit to app stores 3description: Learn how to submit your app to Google Play Store and Apple App Store from the command line with EAS Submit. 4--- 5 6import { Terminal } from '~/ui/components/Snippet'; 7import { Collapsible } from '~/ui/components/Collapsible'; 8import { BoxLink } from '~/ui/components/BoxLink'; 9import { EasSubmitIcon, EasMetadataIcon } from '@expo/styleguide-icons'; 10import Video from '~/components/plugins/Video'; 11 12**EAS Submit** is a hosted service that allows uploading and submitting app binaries to the app stores using EAS CLI. This guide describes how to submit your app to the Google Play Store and Apple App Store using EAS Submit. 13 14<Video url="https://www.youtube.com/embed/-KZjr576tuE" /> 15 16## Google Play Store 17 18### Prerequisites 19 20- A paid developer account is required — You can create a Google Play Developer account on the [Google Play Console sign-up page](https://play.google.com/apps/publish/signup/). 21- Create a [Google Service Account](https://cloud.google.com/iam/docs/creating-managing-service-accounts) and download its JSON private key. 22- Create an app on [Google Play Console](https://play.google.com/apps/publish/) and upload your app manually at least once. 23- Native app binary signed for Google Play Store submission using EAS Build. If you haven't followed the previous guide, see [Build your project for app stores](/deploy/build-project/) for more information. 24 25> Although it's possible to upload any binary to the store, each submission is associated with an Expo project. That's why it's important to start a submission from inside your project's directory - that's where your [app configuration](/workflow/configuration) is defined. 26 27### Submit binary to Google Play Store 28 29To submit the app binary to Google Play Store, run the following command from inside your project's directory: 30 31<Terminal cmd={['$ eas submit -p android']} /> 32 33The command will lead you through the process of submitting the app. It will perform the following steps: 34 35- Log in to your Expo account and ensure that your app project exists on EAS servers. 36- Prompt for the Android package name unless `android.package` is set in the app config. 37- Ask for which binary to submit. You can select one of the following: 38 39 - The latest finished Android build for the project on EAS servers. 40 - Specific build ID. It can be found on the [builds dashboard](https://expo.dev/builds). 41 - Path to an **.apk** or **.aab** archive on your local filesystem. 42 - URL to the app archive. 43 44 > This step can be skipped if one of the following CLI parameters is provided: `--latest`, `--id`, `--path`, or `--url`. 45 46- Unless `serviceAccountKeyPath` is provided in **eas.json**, you will be prompted for the path to your Google Services JSON key. 47- The summary of provided configuration is displayed and the submission process begins. The submission progress is displayed on the screen. 48- Your build should now be visible on Google Play Console. If something goes wrong, an appropriate message is displayed on the screen. 49 50## Apple App Store 51 52### Prerequisites 53 54- A paid developer account is required to submit an app — you can create an Apple Developer account on the [Apple Developer Portal](https://developer.apple.com/account/). 55- Native app binary signed for Apple App Store submission using EAS Build. If you haven't followed the previous guide, see [Build your project for app stores](/deploy/build-project/) for more information. 56 57### Submit binary to Apple App Store 58 59> If you have not generated an App Store Connect API Key yet, you can let EAS CLI take care of that for you by signing into your Apple Developer Program account and following the prompts. You can also upload your own [API Key](https://expo.fyi/creating-asc-api-key) or pass in an [Apple app-specific password](https://expo.fyi/apple-app-specific-password). 60 61To submit the binary to the App Store, run the following command from inside your project's directory: 62 63<Terminal cmd={['$ eas submit -p ios']} /> 64 65The command will lead you through the process of submitting the app. It will perform the following steps: 66 67- Log in to your Expo account and ensure that your app project exists on EAS servers. 68- Ensure that your app exists on App Store Connect and its [Bundle Identifier](https://expo.fyi/bundle-identifier) is registered on Apple Developer Portal: 69 70 - You will be asked to log in to your Apple Developer account and select your team. You can also provide this information in **eas.json** by setting `appleId` and `appleTeamId` in the submit profile. The Apple ID password has to be set with the `EXPO_APPLE_PASSWORD` environment variable. 71 - The command will look for `ios.bundleIdentifier` in the app config. 72 - If you are submitting your app for the first time, it will be automatically created. 73 Unless `expo.name` in your app configuration is found or `appName` is provided in **eas.json**, you will be prompted for the app name. 74 You can also specify your app's language and SKU using `language` and `sku` keys in **eas.json**. If you have never submitted any app before, you may also have to specify your company name with `companyName`. 75 76 > If you already have an App Store Connect app, this step can be skipped by providing the `ascAppId` in the submit profile. The [ASC App ID](https://expo.fyi/asc-app-id) can be found either on App Store Connect, or later during this command in the _Submission Summary_ table. 77 78- Ensure you have the proper credentials set up. If none can be found, you can let EAS CLI set some up for you. 79 80 <Collapsible summary="Do you want to use your own credentials?"> 81 82 **App Store Connect API Key:** Create your own [API Key](https://expo.fyi/creating-asc-api-key) then set it with the `ascApiKeyPath`, `ascApiKeyIssuerId`, and `ascApiKeyId` fields in **eas.json**. 83 84 **App Specific Password:** Provide your [password](https://expo.fyi/apple-app-specific-password) and Apple ID Username by passing them in with the `EXPO_APPLE_APP_SPECIFIC_PASSWORD` environment variable and `appleId` field in **eas.json**, respectively. 85 86 </Collapsible> 87 88- Ask for which binary to submit. You can select one of the following: 89 90 - The latest successful iOS build for the project on EAS servers. 91 - Specific build ID. It can be found on the [builds dashboard](https://expo.dev/builds). 92 - Path to an **.ipa** archive on your local filesystem. 93 - URL to the app archive. 94 95 > This step can be skipped if one of the following CLI parameters is provided: `--latest`, `--id`, `--path`, or `--url`. 96 97- A summary of the provided configuration is displayed and the submission process begins. The submission progress is displayed on the screen. 98- Your build should now be visible on [App Store Connect](https://appstoreconnect.apple.com). If something goes wrong, an appropriate message is displayed on the screen. 99 100## Next steps 101 102<BoxLink 103 title="App stores metadata" 104 description="Learn how to automate and maintain your app store presence from the command line with EAS Metadata." 105 Icon={EasMetadataIcon} 106 href="/deploy/app-stores-metadata/" 107/> 108 109<BoxLink 110 title="EAS Submit configuration with eas.json" 111 description="Learn how to pre-configure your project using eas.json file with EAS Submit and more about Android or iOS specific options." 112 Icon={EasSubmitIcon} 113 href="/submit/eas-json/" 114/> 115