Why I Now Choose Expo Over React Native CLI

3 min read

I used to prefer React Native CLI. Now I use Expo.

A Change of Mind (After Many Years)

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.


Why Use Expo Today

1. Expo Dev Client (This Is a Game Changer)

The Expo Dev Client completely changed my workflow.

  • Run the app directly on a real device
  • Resume the app instantly without rebuilding
  • No cable juggling
  • Easy Port Switching (and therefore can run multiple projects side-by-side)

Once installed, development feels closer to web-level iteration speed.


2. CNG (Continuous Native Generation) Is Awesome

Expo’s CNG means:

  • Native code is generated from config
  • You don’t manually maintain Android/iOS files unless you want to
  • Native changes are reproducible and deterministic

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.


3. Expo’s Library Ecosystem Is Mature

Expo libraries are no longer “nice to have”. They are well-maintained, production-ready, and deeply integrated.

Some benefits:

  • Consistent APIs
  • Sensible defaults
  • Actively updated with React Native releases
  • Fewer breaking surprises

Things that used to take hours of native setup are now:

npx expo install expo-camera

And it just works — including correct native versions.


4. Expo Prebuild = Best of Both Worlds

This is where old arguments against Expo no longer hold.

With Expo Prebuild:

  • You get full ios/ and android/ folders
  • You can write custom native modules
  • You can open Xcode or Android Studio anytime
  • You are not locked in

Expo 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.


So… Is React Native CLI Dead?

No.

But it’s no longer the default choice.

Use React Native CLI only if:

  • You fully understand native build systems
  • You need complete manual control from day one
  • You are building highly custom native integrations
  • Your team is already deeply invested in RN CLI workflows

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.


My Current Recommendation

  • New project? → Expo
  • Prototype or MVP? → Expo
  • Production app? → Expo (with Prebuild)
  • Heavy custom native from day one? → RN CLI

Expo is no longer “the easy option”.

It is the practical option.

You have nothing to lose, and everything to gain.


Final Thoughts

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.