I used to prefer React Native CLI. Now I use Expo.
Back in 2018, I wrote a post comparing CRNA, Expo, and react-native init, and at the time my conclusion leaned heavily toward React Native CLI.
Fast forward to today — I’ve changed my mind.
Expo has quietly solved most of the problems that originally pushed developers away from it.
For most projects now, Expo is not just beginner-friendly — it’s the most productive and scalable choice.
This post explains why I now default to Expo, and when I still reach for React Native CLI.
The Expo Dev Client completely changed my workflow.
Once installed, development feels closer to web-level iteration speed.
Expo’s CNG means:
Instead of:
“Don’t touch this file or things will break”
You get:
“Change config → regenerate native code → done”
This is exactly how modern tooling should work.
Expo libraries are no longer “nice to have”. They are well-maintained, production-ready, and deeply integrated.
Some benefits:
Things that used to take hours of native setup are now:
npx expo install expo-camera
And it just works — including correct native versions.
This is where old arguments against Expo no longer hold.
With Expo Prebuild:
ios/ and android/ foldersExpo no longer says:
“You can’t do that”
Instead, it says:
“Start simple, go native when needed”
This is the exact flexibility React Native CLI users wanted.
No.
But it’s no longer the default choice.
Use React Native CLI only if:
In short:
CLI only if you know exactly what you are doing.
For everyone else — including experienced developers — Expo now offers faster iteration, safer defaults, and less maintenance burden.
Expo is no longer “the easy option”.
It is the practical option.
You have nothing to lose, and everything to gain.
I used to believe that choosing Expo meant giving something up.
Expo has grown up.
And so has my opinion.
If you’re still thinking of Expo as “just for beginners”, it might be time to take another look.
You may change your mind too.