Skip to main content
Glama
ios.md8.91 kB
--- title: Submit to the Apple App Store description: Learn how to submit your app to the Apple App Store from your computer and CI/CD services. --- This guide outlines how to submit your app to the Apple App Store from your computer or from a CI/CD service. ## Submitting your app from your computer <Requirement number={1} title="Sign up for an Apple Developer account"> An Apple Developer account is required to submit your app to the Apple App Store. You can sign up for an Apple Developer account on the [Apple Developer Portal](https://developer.apple.com/account/). </Requirement> <Requirement number={2} title="Include a bundle identifier in app.json"> Include your app's bundle identifier in **app.json**: ```json app.json { "ios": { "bundleIdentifier": "com.yourcompany.yourapp" } } ``` </Requirement> <Requirement number={3} title="Install EAS CLI and authenticate with your Expo account"> Install EAS CLI and login with your Expo account: </Requirement> <Requirement number={4} title="Build a production app"> You'll need a production build ready for store submission. You can create one using [EAS Build](/build/introduction/): Alternatively, you can build the app on your own computer with `eas build --platform ios --profile production --local` or with Xcode. </Requirement> Once you have completed all the prerequisites, you can start the submission process. Run the following command to submit a build to the Apple App Store: The command will lead you step by step through the process of submitting the app. You can configure the submission process by adding a submission profile in **eas.json**: ```json eas.json { "submit": { "production": { "ios": { "ascAppId": "your-app-store-connect-app-id" } } } } ``` How to find <CODE>ascAppId</CODE></>}> 1. Sign in to [App Store Connect](https://appstoreconnect.apple.com/) and select your team. 2. Navigate to the [Apps](https://appstoreconnect.apple.com/apps). 3. Click on your app. 3. Ensure that **App Store** tab is active. 4. On the left pane, under the **General** section, select **App Information**. 5. Your app's `ascAppId` can be found under **General Information** section under **Apple ID**. Learn about all the options you can provide in the [eas.json reference](/eas/json/#ios-specific-options-1). To speed up the submission process, you can use the `--auto-submit` flag to automatically submit a build after it's built: Learn more about the `--auto-submit` flag in the [automate submissions](/build/automate-submissions/) guide. ## Submitting your app using CI/CD services <Requirement number={1} title="Sign up for an Apple Developer account"> An Apple Developer account is required to submit your app to the Apple App Store. You can sign up for an Apple Developer account on the [Apple Developer Portal](https://developer.apple.com/account/). </Requirement> <Requirement number={2} title="Include a bundle identifier in app.json"> Include your app's bundle identifier in **app.json**: ```json app.json { "ios": { "bundleIdentifier": "com.yourcompany.yourapp" } } ``` </Requirement> <Requirement number={3} title="Configure your App Store Connect API Key"> Run the following command to configure your App Store Connect API Key: The command will prompt you to select the type of credentials you want to configure. 1. Select the `production` build profile 2. Log in with your Apple Developer account and follow the prompts 3. Select **App Store Connect: Manage your API Key** 4. Select **Set up your project to use an API Key for EAS Submit** <Collapsible summary="Do you want to use your own credentials?"> **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**. **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. </Collapsible> </Requirement> <Requirement number={4} title="Provide a submission profile in eas.json"> Then, you'll need to provide a submission profile in **eas.json** that includes the following fields: ```json eas.json { "submit": { "production": { "ios": { "ascAppId": "your-app-store-connect-app-id" } } } } ``` <Collapsible summary={<>How to find <CODE>ascAppId</CODE></>}> 1. Sign in to [App Store Connect](https://appstoreconnect.apple.com/) and select your team. 2. Navigate to the [Apps](https://appstoreconnect.apple.com/apps). 3. Click on your app. 3. Ensure that **App Store** tab is active. 4. On the left pane, under the **General** section, select **App Information**. 5. Your app's `ascAppId` can be found under **General Information** section under **Apple ID**. </Collapsible> Learn about all the options you can provide in the [eas.json reference](/eas/json/#ios-specific-options-1). </Requirement> <Requirement number={5} title="Build a production app"> You'll need a production build ready for store submission. You can create one using [EAS Build](/build/introduction/): Alternatively, you can build the app on your own computer with `eas build --platform ios --profile production --local` or with Xcode. </Requirement> Once you have completed all the prerequisites, you can set up a CI/CD pipeline to submit your app to the Apple App Store. ### Use EAS Workflows CI/CD You can use [EAS Workflows](/eas-workflows/get-started/) to build and submit your app automatically. 1. Create a workflow file named **.eas/workflows/submit-ios.yml** at the root of your project. 2. Inside **submit-ios.yml**, you can use the following workflow to kick off a job that submits an iOS app: ```yaml .eas/workflows/submit-ios.yml on: push: branches: ['main'] jobs: build_ios: name: Build iOS app type: build params: platform: ios profile: production # @info # submit_ios: name: Submit to Apple App Store needs: [build_ios] type: submit params: platform: ios build_id: ${{ needs.build_ios.outputs.build_id }} # @end # ``` The workflow above will build the iOS app and then submit it to the Apple App Store. ### Use other CI/CD services You can use other CI/CD services to submit your app with EAS Submit, like GitHub Actions, GitLab CI, and more by running the following command: This command requires a [personal access token](/accounts/programmatic-access/#personal-access-tokens) to authenticate with your Expo account. Once you have one, provide the `EXPO_TOKEN` environment variable in the CI/CD service, which will allow the `eas submit` command to run. ## Manual submissions If you ever need to submit your build without going through EAS Submit, for example, if the service is temporarily unavailable for maintenance, you can upload to the Apple App Store manually from a macOS device. #### Creating an entry on App Store Connect Start by creating an app profile in App Store Connect, if you haven't already: 1. Go to [App Store Connect](https://appstoreconnect.apple.com) and sign in. Make sure you have accepted any legal notices or terms at the top of the page. 2. Click the blue plus button by the Apps header, then click **New App**. 3. Add your app's name, language, bundle identifier, and SKU (this isn't seen by end users, it can be any unique string. A common choice is your app's bundle identifier, for example, "com.company.my-app"). 4. Click **Create**. If this succeeds, then you have created your application record. #### Uploading with Transporter Finally, you need to upload the IPA to the Apple App Store. 1. Download [**Transporter** from the App Store](https://apps.apple.com/app/transporter/id1450874784). 2. Sign in with your Apple ID. 3. Add the build either by dragging the IPA file directly into the Transporter window or by selecting it from the file dialog opened with **+** or **Add App** button. 4. Submit it by clicking the **Deliver** button. This process can take a few minutes, then another 10-15 minutes of processing on Apple's servers. Afterward, you can check the status of your binary in App Store Connect: 1. Visit [App Store Connect](https://appstoreconnect.apple.com), select **My Apps**, and click on the app entry you created earlier. 2. Scroll down to the **Build** section and select your newly uploaded binary.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jaksm/expo-docs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server