How to Publish Your First iOS App to the App Store using Expo EAS

How to Publish Your First iOS App to the App Store using Expo EAS

2025-06-229 Minutes
React NativeExpoEASiOSApp StoreMobile Development

🍏 First-Time iOS App Publishing with Expo EAS (No Mac Required!)

So, you've built a React Native app with Expo and want to publish it to the iOS App Store? Congratulations!

But now you're here, thinking:

“Do I need a Mac? Xcode? What the heck is a provisioning profile?”

Fear not! With Expo's EAS Build + Submit, publishing your iOS app is totally doable—even from a Windows or Linux machine. This guide walks you through EVERY step with edge cases, screenshots, and gotchas.


🛠️ What You’ll Need

✅ An Apple Developer Account
✅ Your Expo project ready (eas build tested on Android/local)
✅ A paid Apple Developer Program (₹8,900/year or $99/year)
✅ An app icon & splash screen
✅ Expo CLI installed (npm install -g expo-cli eas-cli)
✅ Login to Expo: npx expo login


🔧 Step 1: Configure Your App for EAS

In your project root, run:


npx expo install eas-cli
npx eas build\:configure

Choose:

  • iOS ✅
  • Managed Workflow ✅ (Assuming you're using pure Expo)

This creates an eas.json file with build profiles like development, preview, and production.

Example:

{
  "build": {
    "production": {
      "ios": {
        "buildType": "release"
      }
    }
  }
}

🧾 Step 2: Set Your App Details in app.json or app.config.js

Update your app.json:

{
  "expo": {
    "name": "My First iOS App",
    "slug": "my-first-ios-app",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "cover",
      "backgroundColor": "#ffffff"
    },
    "ios": {
      "bundleIdentifier": "com.yourname.myfirstapp",
      "buildNumber": "1.0.0",
      "supportsTablet": true
    }
  }
}

🧠 Edge Case: bundleIdentifier Must Be Unique

You cannot reuse the same bundle ID for different apps. Once used, it’s locked forever in Apple land.


🔐 Step 3: Login to EAS and Apple Developer

Login to Expo:

npx expo login

Login to Apple using EAS:

npx eas whoami
npx eas account:login

Then:

npx eas credentials

You’ll be prompted:

  • To let Expo handle credentials (YES, let them do the magic)
  • To login to Apple Developer (via browser or Apple app password)

🔐 Edge Case: Apple 2FA

Apple might ask for a two-factor code or app-specific password.


🏗️ Step 4: Build the iOS .ipa File (Cloud Build)

Let’s build the app for iOS:

npx eas build --platform ios --profile production

This will:

  • Upload your code to Expo servers
  • Start a cloud build on macOS
  • Automatically manage provisioning profile, certificates, and signing

🧠 Edge Case: Bundle Identifier Already Used

If your bundle ID is already taken or previously used:

  • Change it in app.json
  • Make sure it’s not tied to another app in App Store Connect

Once build finishes, you’ll get a downloadable .ipa file and a link to open the build page.


📦 Step 5: Create App in App Store Connect

  1. Go to App Store Connect

  2. Click "My Apps" > "+" > New App

  3. Fill in:

    • Platform: iOS
    • Name: App name (must be unique)
    • Bundle ID: Select the same one used in app.json
    • SKU: Internal code, like myfirstapp001
    • User Access: Full access
  4. Click Create


🚀 Step 6: Submit to App Store

You can now submit the app either via CLI or manually.

Option 1: The Expo Way

npx eas submit --platform ios

You’ll be prompted:

  • Use the recent build? ✅
  • Login to Apple (again, if not saved)

This uses Apple Transporter under the hood.

Option 2: Manual Upload via Transporter (macOS only)

  • Download the .ipa file
  • Open Apple Transporter (from Mac App Store)
  • Drag-and-drop .ipa and click “Deliver”

🧪 Step 7: Fill Metadata in App Store Connect

  • Screenshots for iPhone & iPad (required!)
  • Short description, long description
  • Keywords
  • Support & marketing URL (use dummy if not ready)
  • Pricing (free or paid)
  • Version details + "What’s New?"

✅ Step 8: Submit for Review

  1. Click “Submit for Review”

  2. Apple might ask you:

    • “Do you use third-party logins?” → Yes/No
    • “Do you collect user data?” → Select appropriately
    • “Does your app need location, camera, etc.?” → Explain each permission

🕵️‍♂️ Step 9: Review & Approval

  • Review usually takes 24–48 hours

  • If rejected:

    • Check the email
    • Fix issues (UI bugs, metadata, missing screenshots)
    • Resubmit from App Store Connect

🥳 Step 10: Your App is Live!

Once approved, your app will be live globally (or in the countries you chose)!

  • Share your link: https://apps.apple.com/app/idYOUR_APP_ID

🔍 Bonus Tips for First-Time Founders

💡 1. Don’t skip screenshots

Use services like:

💡 2. Add privacy policy

Use Termly or FreePrivacyPolicy

💡 3. Use app.config.js for dynamic builds

Great for white-labeled apps with multiple bundle IDs.


🙌 Final Thoughts

Publishing to the iOS App Store used to require a Mac, Xcode, and some black magic. Now, with Expo EAS, it’s much easier—even for non-Mac users!

So go ahead, ship your dream, impress your friends, and drop that App Store link in your bio! 💪📱