How to Submit an Expo App to the App Store with EAS Submit

A practical walkthrough for taking your finished EAS iOS build and submitting it to App Store Connect using EAS Submit, plus what to prepare for App Store review.

What EAS Submit Does

EAS Submit is the piece of Expo Application Services that uploads your finished iOS binary to App Store Connect. It automates a step that traditionally required a Mac with Xcode or Transporter.

Instead of manually exporting and uploading, you run a single command and EAS delivers the build to Apple.

This matters because the submission step is another point where non-Mac users historically got stuck. EAS Submit removes that barrier.

Once your build lands in App Store Connect, you complete the store listing and send it for review through Apple's web interface.

Prerequisites Before You Submit

You need a successful iOS build from EAS Build. If you have not built yet, do that first and confirm you have a valid .ipa in your build history.

You need an active Apple Developer Program membership. Submission is impossible without it.

You also need an App Store Connect record for your app. This is where you define the app name, bundle identifier, and store metadata.

Have your Apple credentials handy. EAS will use them, or an App Store Connect API key, to authenticate the upload.

Step 1: Create the App in App Store Connect

Log in to App Store Connect and create a new app entry. You will provide a name, primary language, bundle identifier, and SKU.

The bundle identifier must match the one in your Expo project configuration. Consistency here prevents upload rejections later.

If you set your bundle identifier in app.json or app.config.js, confirm it exactly matches what you register in App Store Connect.

This one-time setup establishes the container that will hold your builds and metadata. You only do it once per app.

Step 2: Run EAS Submit

From your project directory, run eas submit --platform ios. EAS will ask which build you want to submit.

You can submit the latest build automatically, or point to a specific build from your history. For a fresh release, the latest successful build is usually correct.

EAS then authenticates with Apple. It may prompt for your Apple ID or use an App Store Connect API key if you have configured one.

Using an API key is the more robust approach for teams and automation. It avoids repeated interactive Apple sign-ins and handles two-factor prompts more gracefully.

Step 3: Wait for Processing

After EAS uploads the binary, Apple processes it on their side. This is separate from the build and submit steps and happens within App Store Connect.

Processing can take anywhere from a few minutes to longer. During this time the build shows as processing in your TestFlight and app version screens.

You may receive an email from Apple if there are issues with the binary, such as missing compliance information or invalid entitlements.

Once processing completes, the build becomes available to attach to a TestFlight group or an App Store version.

If processing seems stuck for an unusually long time, it is usually still on Apple's side rather than a problem with your submission. Waiting is generally the right response before re-uploading.

Re-submitting the same binary repeatedly can create duplicate uploads and confusion. Give the first upload time to finish processing before deciding something has gone wrong.

Step 4: Complete Your Store Listing

While or after the build processes, fill in the store metadata in App Store Connect. This includes your description, keywords, screenshots, and category.

Screenshots must match Apple's required device sizes. Prepare these carefully, as incomplete or incorrectly sized screenshots are a common cause of rejection.

You also complete privacy details, including the App Privacy questionnaire describing what data your app collects.

Attach your processed build to the version you are preparing. Then answer the export compliance and content questions Apple presents.

Step 5: Submit for Review

With metadata complete and a build attached, submit the version for review. Apple's team evaluates it against the App Store Review Guidelines.

Review timelines vary. Many apps are reviewed within a day or two, but complex or flagged apps can take longer.

If Apple rejects the app, they provide a reason in the Resolution Center. Address the feedback and resubmit.

Once approved, you control the release. You can publish immediately, schedule a date, or release manually when you are ready.

Setting Up an App Store Connect API Key

For anything beyond a one-off submission, an App Store Connect API key is worth configuring. It lets EAS authenticate with Apple without repeated interactive sign-ins.

You generate the key in App Store Connect under the Users and Access section, in the area for integrations and keys. Apple provides a key file that you download once.

Store that key securely, because it grants access to your account's App Store Connect operations. Treat it like any other sensitive credential.

EAS can use this key to upload builds automatically, which is especially valuable in continuous integration where interactive prompts are not possible.

For solo developers submitting occasionally, the interactive Apple ID flow is fine. For teams and automation, the API key is the cleaner, more reliable path.

Using TestFlight Before Public Release

TestFlight is Apple's beta distribution channel, and it is a natural stop between submitting and releasing publicly. Once a build finishes processing, you can add it to a TestFlight group.

Internal testers, who are members of your App Store Connect team, can install almost immediately after processing. This is ideal for a quick sanity check on real devices.

External testers, invited by email or a public link, require a brief Beta App Review before they can install. Plan for that small delay if you rely on outside testers.

Testing through TestFlight surfaces problems the simulator hides, including performance, permissions prompts, and device-specific behavior. It is the closest thing to the real App Store experience before you actually ship.

Getting comfortable with TestFlight also de-risks your public launch. By the time you submit for full review, you already know the build runs correctly on real hardware.

Common Pitfalls and Limitations

The most frequent snag is a mismatched bundle identifier between your Expo config and App Store Connect. Double-check this before submitting.

Missing compliance answers also stall submissions. Export compliance and the privacy questionnaire are mandatory and easy to overlook.

Remember what you are shipping. Your app is a React Native build, not native Swift, and it must still comply with all App Store guidelines like any other app.

Apple reviews the substance of your app, not the framework. A thin or non-functional app can be rejected regardless of how it was built, so ensure it delivers genuine value before you submit.

Frequently Asked Questions

Can EAS Submit upload to the App Store without a Mac?

Yes. EAS Submit uploads your iOS binary to App Store Connect from the cloud, so no Mac or Xcode is needed for the submission step. An Apple Developer Program membership is still required.

What is the difference between EAS Build and EAS Submit?

EAS Build compiles your app into an installable binary. EAS Submit takes that binary and uploads it to App Store Connect for review and distribution.

Should I use an App Store Connect API key?

For teams and automated workflows, yes. An API key avoids repeated interactive Apple sign-ins and handles two-factor authentication more smoothly than password-based login.

Why was my Expo app rejected by Apple?

Common reasons include mismatched bundle identifiers, missing screenshots or metadata, incomplete privacy answers, or the app not meeting App Store Review Guidelines. Apple provides specifics in the Resolution Center.

How long does App Store review take?

It varies. Many apps are reviewed within a day or two, but the timeline depends on Apple's queue and the complexity of your app.