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 &mdash; 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