Publishing a React Native app with Expo uses EAS (Expo Application Services) for cloud builds and store submission.

Install EAS CLI

  npm install -g eas-cli
eas login
eas init
  

This creates eas.json in your project.

Configure eas.json

  {
    "build": {
        "production": {}
    },
    "submit": {
        "production": {}
    }
}
  

App Icons and Splash

Place assets in the assets/ folder and reference them in app.json:

  {
    "expo": {
        "icon": "./assets/icon.png",
        "splash": {
            "image": "./assets/splash.png",
            "resizeMode": "contain",
            "backgroundColor": "#ffffff"
        }
    }
}
  

Icon: 1024×1024 PNG. Splash: 1284×2778 PNG recommended.

Build for Production

  eas build --platform ios --profile production    # iOS
eas build --platform android --profile production  # Android
  

EAS builds in the cloud — no local Xcode or Android Studio required.

Store Submission

iOS: Enroll in the Apple Developer Program, then:

  eas submit --platform ios
  

Android: Create a Google Play Console account, then:

  eas submit --platform android
  

Version Management

Update before each release in app.json:

  {
    "expo": {
        "version": "1.2.0",
        "ios": { "buildNumber": "3" },
        "android": { "versionCode": 3 }
    }
}
  

Over-the-Air Updates

Push JavaScript updates without a store review:

  npx expo install expo-updates
eas update --branch production --message "Fix login bug"
  

OTA updates work for JS/asset changes only — native code changes require a new store build.

Pre-Launch Checklist

  • Test on physical iOS and Android devices
  • Add privacy policy URL and store screenshots
  • Verify permissions and offline behavior

Congratulations — your React Native app is ready for the world.