Expo

Expo is a toolkit and platform that makes building React Native apps dramatically faster. Its managed workflow handles most native configuration for you, and its cloud services — EAS Build, EAS Submit, and over-the-air (OTA) updates — cover building, distributing, and updating apps without wrestling Xcode and Android Studio directly.

The old "Expo can't do native code" objection is outdated: with config plugins and development builds, modern Expo supports most native modules while keeping the managed convenience. For the vast majority of apps, starting with Expo is the fastest, lowest-friction path.

TL;DR

Quick Example

One command scaffolds a runnable app:

Key Concepts

Best Practices

When Expo Is a Great Fit

A great fit when you want rapid iteration, you're building a typical app (network + UI), and you don't need deep custom native platform work. Reconsider a bare/custom setup only when you need a native capability Expo's plugins can't accommodate.

Common Mistakes

Expecting OTA to ship native changes

Environment variable drift

FAQ

Expo or bare React Native?

Start with Expo unless you have a specific reason not to — it removes enormous setup and maintenance friction, and modern Expo (config plugins, development builds, EAS) handles most native needs. Choose bare only when you require a native integration Expo can't support or need full control over the native projects. You can also start managed and adopt a development build or eject later if requirements grow.

What are over-the-air (OTA) updates and what are their limits?

OTA updates let you push JavaScript and asset changes directly to installed apps without going through app-store review — great for quick fixes and content updates. The limit is fundamental: OTA cannot change native code, native dependencies, or anything requiring a rebuild. Those still need a new EAS Build and store submission. Treat OTA like a production deploy with testing and staged rollout, since it reaches users immediately.

Do I still need a Mac or Xcode with Expo?

Largely no — EAS Build compiles iOS and Android apps in the cloud, so you can build and ship an iOS app without a local Mac/Xcode setup. You'll still interact with Apple's developer account for credentials and store submission (which EAS can help automate). This is one of Expo's biggest practical advantages for cross-platform teams.

What's the difference between Expo Go and a development build?

Expo Go is a prebuilt sandbox app for running standard Expo projects instantly — perfect for getting started, but it only includes the native modules Expo bundles. A development build is your own app binary (via EAS) that includes your specific native dependencies and config plugins, giving you Expo's developer experience with custom native code. Move from Expo Go to a dev build once you add native modules.

Related Topics

References