Expo
A platform and set of tools that makes React Native development much easier. Expo handles building, deploying, and updating React Native apps without touching Xcode or Android Studio. OTA updates, EAS Build/Submit for app stores. The recommended way to start React Native.
Charlie Cheever, James Ide · Created Expo in 2016
- Starting React Native (recommended).
- Apps using common APIs (no custom native code).
- Teams wanting OTA updates and cloud builds.
- Apps with heavy custom native modules (use bare React Native).
- Apps needing full native control.
Definition
Expo is a framework and platform for React Native. It provides a managed workflow (no native code to touch), SDK with common APIs (camera, notifications, maps), OTA updates (push JS updates without app store), and EAS Build/Submit for cloud builds and store submission.
Why it exists
React Native's native setup (Xcode, Android Studio, Gradle) is complex. Expo abstracts it away so you focus on JS, with cloud builds and OTA updates for fast iteration.
How it works
Create an Expo project (npx create-expo-app). Develop with the Expo Go app (scan QR to run on your phone). Use Expo SDK APIs. EAS Build compiles in the cloud (no local Xcode needed). EAS Submit sends to app stores. expo-updates for OTA JS updates.
Scaling limits
Expo Go doesn't support all native modules (use dev builds for custom native code). EAS Build has free + paid limits. OTA updates can't change native code. Vendor lock-in to Expo's workflow.
Cost shape
Free SDK and Expo Go. EAS Build/Submit has free + paid tiers.
Alternatives
- Bare React Native — Full native control, more setup complexity.
- Flutter — Different language (Dart), own ecosystem.
Failure modes
- Expo Go limitations (no custom native code).
- EAS Build limits on free tier.
- OTA update native code mismatch.