
React Native CLI vs Expo: Which Approach Should You Choose?
React Native CLI vs Expo: Which Approach Should You Choose?
1. The React Native Dilemma
React Native developers face a foundational choice: use the bare React Native CLI or Expo. Both build cross-platform mobile apps with React, but they differ significantly in developer experience, flexibility, and build tooling.

2. React Native CLI: Full Control
The React Native CLI gives you direct access to the native Android and iOS projects. You can write native modules, use any native library, and control the full build pipeline. This flexibility comes with setup complexity.
1# Initialize a bare React Native project
2npx @react-native-community/cli init MyApp
3
4# Link native modules (older RN versions)
5npx react-native link
6
7# Build and run on device
8npx react-native run-android
9npx react-native run-ios3. Expo: Developer Experience First
Expo abstracts away the native build process. You develop with Expo's managed workflow, and it handles Xcode and Android Studio configuration. Expo SDK provides a curated set of well-tested native modules.
1# Initialize an Expo project
2npx create-expo-app MyApp
3
4# Development build with Expo Go
5npx expo start
6
7# Create production builds (no Xcode/AS needed)
8npx eas build --platform all
9
10# Submit to app stores
11npx eas submit --platform all4. Feature Comparison
| Feature | React Native CLI | Expo |
|---|---|---|
| Setup Time | Hours (Xcode, Android Studio) | Minutes (Expo Go) |
| Native Modules | Full access | Via Expo SDK or dev client |
| OTA Updates | Manual | Expo Updates (built-in) |
| Build Service | Local Xcode/AS | EAS Build (cloud) |
| App Store Submit | Manual | EAS Submit (cloud) |
| Custom Native Code | First-class | Dev client required |
| Bundle Size | Smaller | Slightly larger |
| Community Libraries | All available | Most available via dev client |
5. When to Choose Expo
Choose Expo for most new projects. The developer experience is significantly better — instant preview with Expo Go, cloud builds with EAS, and OTA updates without app store reviews. You can always eject to the bare workflow later.
6. When to Choose React Native CLI
Choose the bare CLI when you need custom native modules not supported by the Expo SDK, or when you require full control over the native build process. This is common for projects with complex native integrations like Bluetooth, custom camera processing, or proprietary SDKs.
7. Verdict
Start with Expo for rapid development and a better developer experience. Migrate to the bare CLI only if you hit a hard Expo limitation. Most production apps can be built entirely with Expo's managed workflow or the Expo dev client with custom native code.