Skip to main content

Submitting a React Native iOS App to the App Store: Complete Guide

· 8 min read
Mobile Developer
Last updated on August 14, 2025

submitting a react native ios app to the app store

Getting your React Native app into the App Store is a thrilling moment-your creation is about to reach iOS users everywhere! Submitting to the App Store might seem intimidating, especially if it’s your first time, but don’t worry. This beginner-friendly guide will walk you through every step of submitting a React Native iOS app using Expo SDK 51, compatible with React Native 0.75.4 and Xcode 16+ (iOS 18 SDK). We’ll cover setting up your project, preparing for Apple’s review, and launching your app, all on macOS (required for iOS submissions). No prior App Store experience is needed, and we’ll explain key terms along the way. For a quicker start, explore prebuilt templates at Instamobile or Dopebase.

By the end, your app will be submitted to the App Store, ready for approval and launch. Let’s get going!


Prerequisites

Before we begin, make sure you have these tools and accounts ready:

  • Node.js (v20.x or later, LTS recommended): Download from nodejs.org.
  • npm (v10.x or later, included with Node.js).
  • Expo CLI: Our go-to tool for React Native projects.
  • Xcode (16+): For iOS builds, with iOS 18 SDK to meet App Store requirements.
  • A code editor like VS Code.
  • Git: For version control.
  • Apple Developer Account: Sign up at developer.apple.com ($99/year).
  • macOS: Required for iOS builds and App Store submissions.

Got your setup ready? Let’s create your app!


Step 1: Create and Configure Your React Native Project

Let’s kick things off by setting up a React Native project tailored for the App Store.

  1. Install Expo CLI globally to streamline your setup:

    npm install -g expo-cli
  2. Create a new project called MyApp:

    expo init MyApp

    Choose the blank (TypeScript) template for a modern, type-safe setup with Expo SDK 51, which supports React Native 0.75.4.

  3. Navigate to your project folder:

    cd MyApp
  4. Configure app.json with App Store essentials:

    {
    "expo": {
    "name": "MyApp",
    "slug": "myapp",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": ".https://docs.instamobile.io/assets/icon.png",
    "splash": {
    "image": ".https://docs.instamobile.io/assets/splash.png",
    "resizeMode": "contain",
    "backgroundColor": "#ffffff"
    },
    "ios": {
    "bundleIdentifier": "com.myapp.app",
    "buildNumber": "1.0.0",
    "supportsTablet": true
    }
    }
    }

    What’s a bundleIdentifier? It’s a unique string that identifies your app in Apple’s ecosystem, typically in reverse-domain format like com.yourcompany.myapp. Think of it as your app’s ID card. Learn more in Apple’s documentation.

    • Use a unique bundleIdentifier (e.g., com.yourcompany.myapp).
    • Prepare a 1024x1024 PNG icon and a 2000x2000 PNG splash screen in assets/.
  5. Test your app locally:

    npx expo start

    Press i to run on an iOS simulator. Make sure everything looks good before moving forward.

Summary: You’ve set up a React Native project with Expo SDK 51 and configured app.json with a unique bundleIdentifier for iOS, laying the groundwork for App Store submission.


Mega Bundle Sale is ON! Get ALL of our React Native codebases at 90% OFF discount 🔥

Get the Mega Bundle

Step 2: Set Up Your Apple Developer Account

With your project ready, let’s set up your Apple Developer account to prepare for submission.

  1. Enroll in the Apple Developer Program ($99/year) at developer.apple.com.
  2. Sign in to App Store Connect with your Apple ID.
  3. Add your app in App Store Connect:
    • Go to My Apps > Click the + > New App.
    • Enter your app’s name, select iOS, and use the bundleIdentifier from app.json.
    • Choose a unique SKU (e.g., com.myapp.2025), which is a unique code for tracking your app internally.
  4. Generate an App-Specific Password for EAS:
    • Visit appleid.apple.com.
    • Under Sign-In and Security, create an app-specific password for EAS to securely connect to your Apple account.

Summary: Your Apple Developer account is set up, and your app is registered in App Store Connect with a unique bundleIdentifier. Let’s move on to building your app!


Step 3: Configure EAS for App Store Builds

Expo Application Services (EAS) simplifies building and submitting iOS apps. Let’s configure it to generate an App Store-ready build.

  1. Log in to Expo:

    eas login

    Authenticate via the browser prompt.

  2. Configure EAS for your project:

    eas build:configure

    This creates an eas.json file:

    {
    "build": {
    "development": {
    "developmentClient": true,
    "distribution": "internal"
    },
    "preview": {
    "distribution": "internal"
    },
    "production": {
    "distribution": "store",
    "ios": {
    "credentialsSource": "remote"
    }
    }
    }
    }
  3. Set up iOS credentials:

    eas credentials

    Follow the prompts to link your Apple Developer account and App Store Connect, using the app-specific password. What’s a provisioning profile or certificate? A provisioning profile is a file that tells Apple which devices can run your app, while a certificate authenticates your developer account. EAS manages these automatically, saving you from manual setup in Xcode. Learn more in Expo’s credentials guide.

Summary: You’ve connected your project to EAS, automating provisioning profiles and certificates for App Store builds. Now, let’s create your iOS binary!


Step 4: Build Your iOS App

With EAS set up, it’s time to build your app for the App Store.

  1. Run the production build:

    eas build --profile production --platform ios

    EAS compiles your app in the cloud, generating an .ipa file (the iOS app package).

  2. Monitor the build in the EAS dashboard or CLI output. It typically takes 10–20 minutes.

  3. Download the .ipa file from the EAS dashboard or via an emailed link.

  4. Test the build locally:

    • Open ios/MyApp.xcworkspace in Xcode.
    • Select a simulator or device and run the app to confirm it works as expected.

Summary: You’ve built an App Store-ready iOS app using EAS. Next, let’s submit it to Apple!


Step 5: Submit to the App Store

It’s go time-let’s get your app into the App Store for review.

  1. Update App Store Connect with app details:

    • In App Store Connect > My Apps, select your app.
    • Under App Information, add:
      • Description: A clear, engaging summary of your app’s features.
      • Keywords: Search terms like “todo, productivity” to help users find your app.
      • Screenshots: 5.5-inch and 6.7-inch iPhone screenshots, plus iPad if supported (use Figma for polished designs).
      • App Icon: Ensure it matches the 1024x1024 icon in app.json.
      • Privacy Policy URL: Required for apps handling user data (try Termly).
    • Set pricing (e.g., free) and availability (e.g., worldwide).
  2. Submit the build via EAS:

    eas submit --platform ios

    Select the .ipa file from your production build. EAS uploads it to App Store Connect.

  3. In App Store Connect, go to Versions, select the uploaded build, and click Submit for Review.

  4. Wait for Apple’s review (usually 1–3 days). Check App Store Connect > Resolution Center and respond quickly to any feedback.

Summary: You’ve submitted your app with all required metadata and are now awaiting Apple’s approval. You’re almost live!


Mega Bundle Sale is ON! Get ALL of our React Native codebases at 90% OFF discount 🔥

Get the Mega Bundle

Step 6: Launch and Maintain Your App

Your app’s approved-congratulations! Let’s launch it and keep it running smoothly.

  1. Launch Your App:

    • In App Store Connect, release your app manually or enable auto-release after approval.
    • Share your app’s App Store link via social media or platforms like Instamobile.
  2. Enable OTA Updates (Optional):

    • Install expo-updates for instant updates:
      npm install [email protected]
    • Update app.json:
      {
      "expo": {
      "updates": {
      "enabled": true,
      "url": "https://u.expo.dev/your-project-id",
      "checkAutomatically": "ON_LOAD",
      "fallbackToCacheTimeout": 0
      }
      }
      }
    • Publish updates:
      eas update --branch production

    What are OTA updates? Over-the-air updates let you push new JavaScript code or assets to users without a new App Store submission, perfect for quick fixes. See Expo’s Updates guide.

  3. Monitor and Update:

    • Use App Store Connect to track downloads, crashes, and user reviews.
    • Address feedback with OTA updates or new builds as needed.

Summary: Your app is live, and you’ve set up OTA updates for quick maintenance, keeping your users happy.


Troubleshooting Tips

  • Build Fails: Verify eas.json and Apple credentials. Rerun eas credentials to fix issues.
  • App Store Rejection: Common causes include missing privacy policies or broken features. Review Apple’s App Store Review Guidelines and resubmit.
  • Simulator Issues: Ensure Xcode 16+ with iOS 18 SDK is used. Clear derived data (rm -rf ~/Library/Developer/Xcode/DerivedData) if problems occur.
  • EAS Errors: Check app.json formatting and confirm your project ID in the EAS dashboard.

Looking for a custom mobile application?

Our team of expert mobile developers can help you build a custom mobile app that meets your specific needs.

Get in Touch

Conclusion

You’ve done it-your React Native iOS app is submitted to the App Store using Expo SDK 51! From setting up your project to navigating Apple’s review process, you’re ready to launch and maintain your app like a pro. For a faster path to market, explore App Store-ready templates at Instamobile or Dopebase. Want to level up? Check out Expo’s documentation for advanced build tips or join the React Native community at reactnative.dev.

Additional Resources