App Store (iOS)React Native

How to Publish a React Native App on the App Store

Publishing a React Native app to the App Store involves bridging the gap between JavaScript and Apple's native ecosystem. Unlike pure Swift apps, you need to ensure the React Native bridge compiles correctly, your native modules are linked, and your Xcode project is configured for release builds. This guide walks you through every step, from generating a production bundle to navigating App Store Connect.

Prerequisites

  • A Mac with Xcode 15+ installed
  • An Apple Developer Program membership ($99/year)
  • React Native CLI or an ejected Expo project
  • CocoaPods installed (gem install cocoapods)
  • Your app tested on a physical iOS device

Step-by-Step Build Process

1

Generate the release JavaScript bundle

Run `npx react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/main.jsbundle --assets-dest ios` to create the optimized production bundle. Verify the bundle file appears in your ios/ directory.

2

Install CocoaPods dependencies

Navigate to the ios/ folder and run `pod install`. This links all native dependencies. If you encounter version conflicts, try `pod install --repo-update` to refresh the spec repository.

3

Open the Xcode workspace

Always open the .xcworkspace file (not .xcodeproj). Select the correct team under Signing & Capabilities. Set the deployment target to iOS 13.0 or later for maximum compatibility.

4

Configure the release scheme

In Xcode, go to Product > Scheme > Edit Scheme. Set the Build Configuration to 'Release'. This disables the React Native dev menu and optimizes the JavaScript engine for production.

5

Build the archive

Select 'Any iOS Device' as the build target, then go to Product > Archive. This creates an .xcarchive containing your signed app binary. If the archive build fails, check that all native modules have valid architectures.

Code Signing & Certificates

Create an App ID

In the Apple Developer portal, register a new App ID with your bundle identifier (e.g., com.yourcompany.appname). Enable any capabilities your app uses (Push Notifications, Sign in with Apple, etc.).

Generate distribution certificate and provisioning profile

Create an iOS Distribution certificate via Keychain Access. Then create an App Store provisioning profile linking the certificate and App ID. Download and double-click both to install them.

Configure automatic signing in Xcode

Enable 'Automatically manage signing' in Xcode and select your team. Xcode will handle provisioning profile selection. For CI/CD setups, use manual signing with exported profiles.

Store Submission Steps

1

Create the app listing in App Store Connect

Log into App Store Connect, click the '+' button, and create a new app. Fill in the app name, primary language, bundle ID, and SKU. Choose the correct category for your app.

2

Upload the build via Xcode or Transporter

From the Xcode Organizer, select your archive and click 'Distribute App'. Choose 'App Store Connect' and follow the wizard. Alternatively, export the .ipa and upload with the Transporter app.

3

Fill in app metadata

Add your app description, keywords, support URL, and marketing URL. Upload screenshots for required device sizes (6.7" iPhone, 5.5" iPhone, iPad Pro). Write a compelling subtitle under 30 characters.

4

Set pricing and availability

Choose your pricing tier or set the app as free. Select the territories where you want the app available. Configure any in-app purchases or subscriptions.

5

Submit for review

Complete the App Review Information section with contact details and any demo credentials. Click 'Submit for Review'. Apple typically reviews within 24-48 hours.

Common Rejection Reasons & Fixes

Guideline 2.1 - App Completeness

Ensure your app doesn't crash on launch. React Native apps sometimes crash if the JS bundle is missing or if a native module fails to initialize. Test the release build on a physical device before submitting.

Guideline 4.0 - Design: Minimum Functionality

Apple may reject apps that feel like simple web wrappers. Ensure your React Native app uses native components (not just WebViews) and provides meaningful functionality beyond what a website offers.

Guideline 5.1.1 - Data Collection and Storage (Privacy)

Add an App Tracking Transparency prompt if you use any analytics or advertising SDKs. Declare all data collection in App Store Connect's privacy nutrition labels accurately.

Guideline 2.3.3 - Screenshots mismatch

Screenshots must reflect the actual app experience. Don't use mockups or marketing images that don't show real app screens. Capture screenshots from a simulator matching each required device size.

Pro Tips

  • Use Hermes engine for significantly faster startup and smaller bundle size on iOS
  • Enable App Transport Security exceptions only for development — remove them before submission
  • Test on multiple iOS versions using Xcode simulators before archiving
  • Set CFBundleShortVersionString and CFBundleVersion correctly — App Store Connect rejects duplicate version/build number combinations
  • Consider using Fastlane to automate the entire build, signing, and upload process

Skip the hassle. Let us handle it.

Publishing a React Native app on the App Store (iOS) involves dozens of steps, certificates, and potential rejection pitfalls. Our team handles the entire process for you — from build configuration to store approval.

Related Guides