Back to Blog
Deployment15 min readMarch 28, 2025

How to Deploy a React Native App to App Store and Play Store (2025)

Step-by-step guide to deploying your React Native app to both the Apple App Store and Google Play Store, including signing, building, and automating with CI/CD.

Deploying a React Native app to the App Store and Play Store is one of the most frustrating parts of mobile development. Between code signing, provisioning profiles, keystores, and store console UIs, it's easy to spend an entire day just trying to ship an update.

This guide walks you through the entire process — from building to submission — for both stores.

Prerequisites

Before you start, make sure you have:

  • **Apple Developer Account** ($99/year) for App Store
  • **Google Play Developer Account** ($25 one-time) for Play Store
  • **Xcode** installed (macOS only, required for iOS builds)
  • **Android Studio** or the Android SDK
  • Your React Native project with a working app

Part 1: Deploying to the Apple App Store

Step 1: Configure Your iOS Project

Open `ios/YourApp.xcworkspace` in Xcode.

Set your bundle identifier:

  • Select your project in the navigator → General tab
  • Set "Bundle Identifier" (e.g., `com.yourcompany.yourapp`)
  • Set "Version" (e.g., 1.0.0) and "Build" (e.g., 1)

Set up signing:

  • Go to Signing & Capabilities
  • Select your team (your Apple Developer account)
  • Xcode will automatically create provisioning profiles

Step 2: Create an App Store Listing

  1. Go to [App Store Connect](https://appstoreconnect.apple.com)
  2. Click My Apps → "+" → New App
  3. Fill in: Platform (iOS), Name, Primary Language, Bundle ID, SKU
  4. Save

Step 3: Build and Archive

# Install pods
cd ios && pod install && cd ..

# Build the release
npx react-native build-ios --mode Release

# Or use Xcode:
# Product → Archive

In Xcode: Product → Archive. Once the archive is built, the Organizer window opens.

Step 4: Upload to App Store Connect

In the Organizer:

  1. Select your archive
  2. Click "Distribute App"
  3. Select "App Store Connect"
  4. Follow the wizard (accept defaults)
  5. Click "Upload"

Step 5: Submit for Review

Back in App Store Connect:

  1. Select your app → the new build will appear
  2. Fill in screenshots, description, keywords
  3. Click "Submit for Review"
  4. Apple reviews in 24-48 hours

Part 2: Deploying to Google Play Store

Step 1: Generate a Signing Key

keytool -genkeypair -v -storetype PKCS12 \
  -keystore my-release-key.keystore \
  -alias my-key-alias \
  -keyalg RSA -keysize 2048 -validity 10000

Save this keystore securely — you'll need it for every update.

Step 2: Configure Gradle for Signing

Edit `android/app/build.gradle`:

android {
    signingConfigs {
        release {
            storeFile file('my-release-key.keystore')
            storePassword 'your-store-password'
            keyAlias 'my-key-alias'
            keyPassword 'your-key-password'
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Step 3: Build the App Bundle

cd android
./gradlew bundleRelease

The output AAB file is at `android/app/build/outputs/bundle/release/app-release.aab`.

Step 4: Create a Play Store Listing

  1. Go to [Google Play Console](https://play.google.com/console)
  2. Create a new app → fill in details
  3. Complete the required sections (content rating, target audience, etc.)

Step 5: Upload and Publish

  1. Go to Production → Create New Release
  2. Upload the `.aab` file
  3. Add release notes
  4. Click "Review Release" → "Start Rollout"

Google reviews in 2-7 hours (much faster than Apple).

The Faster Way: CLI Deployment

All of the above is a lot of manual work. Tools like [Appight CLI](https://appight.com) can automate the entire process:

# One-time setup
appight login
appight init  # Auto-detects React Native

# Deploy to TestFlight
appight deploy appstore --target testflight

# Deploy to Play Store beta
appight deploy playstore --track beta

The CLI handles building, signing, and uploading — you don't need to open Xcode or Android Studio.

CI/CD Automation

For teams, set up automated deployments:

GitHub Actions example:

name: Deploy to Stores
on:
  push:
    tags: ['v*']
jobs:
  deploy:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - run: npx appight deploy appstore --target production
      - run: npx appight deploy playstore --track production

Common Issues

  1. **"No signing certificate"** — make sure your Apple Developer membership is active and you've accepted the latest agreements
  2. **"Version already exists"** — increment your build number in Xcode/Gradle
  3. **"App rejected for screenshots"** — make sure screenshots match the actual app UI
  4. **Play Store "deobfuscation file"** — upload the mapping.txt from your build output

Summary

Deploying React Native apps to stores is tedious but follows a predictable pattern. The key is to automate as much as possible so you can focus on building features, not wrestling with build tools.

Ready to optimize your app?

Appight helps you manage ASO, reviews, deployments, and analytics — all from one platform.

Get Started