When building mobile apps with React Native, one of the earliest choices developers face is whether to use Expo CLI or the bare React Native CLI workflow. For years, Expo carried the reputation of being a tool only good for prototypes, MVPs, or simple apps—while React Native CLI was considered the “serious” option for production.
That landscape has changed. Today, Expo has evolved into the recommended default for production apps, and many of the previous limitations no longer apply. But we still see people writing about this limitation till today, and even if you ask LLM like ChatGPT with React Native CLI vs Expo CLI it will still bring the same old limitation, which is why most people still include it in their article because the most likely generated part of their articles without their own personal experience input.
Let’s look at the current reality of the ecosystem.
1. Expo CLI: Then vs Now
Old perception: Expo was limited—you could only use what the Expo SDK provided, and if you needed custom native code, your only path forward was “ejecting” into a bare React Native workflow.
Now: The eject option has been deprecated and replaced with expo prebuild
, which generates the same native projects (Xcode/Android Studio) you’d get with React Native CLI. From there, you can:
- Add custom native modules.
- Modify iOS and Android projects directly.
- Still use Expo’s managed features like OTA updates, EAS builds, and the Expo SDK.
This means Expo offers up to 95% of the flexibility of bare React Native, with additional tooling that makes development and maintenance easier.
2. Bare React Native CLI: Where It Stands
Using React Native CLI directly gives you full control from day one:
- You configure Gradle and CocoaPods manually.
- You install and link all libraries yourself.
- You manage upgrades manually (which can be painful for large projects).
While this offers maximum freedom, it also introduces overhead. You become responsible for CI/CD pipelines, OTA update solutions, and navigating complex upgrades. For apps with extremely specialized native requirements, this control is valuable—but for most teams, the tradeoff is high.
3. Advantages of Expo Beyond Development Speed
Expo isn’t just about fast prototyping anymore. It also brings post-development benefits that make it a strong choice for production apps:
- Smoother upgrades: Expo maintains compatibility across the ecosystem, so upgrading React Native versions is often significantly easier than in bare projects.
EAS (Expo Application Services): Provides managed CI/CD pipelines, cloud builds, and app store submission without manual configuration.
OTA (Over-the-Air) updates: Ship instant fixes and feature updates without going through the app store review process. (While CodePush offered similar benefits, it has been deprecated, leaving Expo’s OTA as the modern solution.)
Rich SDK: Camera, notifications, sensors, biometrics, and more—all maintained and tested to work with React Native’s latest versions.
4. Official Recommendation
The React Native documentation itself now recommends starting with Expo for new projects:
“Yes. You can use React Native without a Framework. However, if you’re building a new app with React Native, we recommend using a Framework.
In short, you’ll be able to spend time writing your app instead of writing an entire Framework yourself in addition to your app.”
— React Native Docs: Environment Setup
The only time you should reach for bare React Native CLI from the start is if:
- You already know Expo’s tooling won’t fit your project needs.
- You have a strong team with the expertise and resources to maintain a fully custom setup.
For most developers and teams, Expo should be the default choice.
5. TL;DR
- Expo is no longer just for prototypes—it’s fully production-ready.
-
Ejecting is gone; replaced by
expo prebuild
, which provides nearly the same flexibility as bare React Native. - Expo offers significant long-term benefits like easier upgrades, EAS, and OTA updates.
- The React Native team recommends Expo as the default starting point for production apps.
Unless Expo’s solutions don’t meet your needs—and you’re ready to take on the complexity of maintaining everything yourself—you should start with Expo.
✅ Final Thoughts
The old “Expo vs React Native CLI” debate is outdated. Today, Expo is the recommended production pathway, and the limitations that once justified avoiding it are mostly gone.
Top comments (0)