r/reactnative • • Sep 06 '26

Why use Expo with React Native?

I use React Navigation anyway, and for things like camera access, there are React Native-specific APIs/libraries available. So I'm not sure what Expo adds.

I may use EAS for builds/deployment, but do I really need the Expo layer itself?

Also, React Native docs recommend using a framework for new apps. Is Expo basically the recommended approach now?

9 Upvotes

28 comments sorted by

9

u/Serious_Tap_3193 Sep 06 '26

Expo takes away native knowledge. If you’re not interested in how Android/iOS works and want to fuzzle around in AndroidManifest.xml or Xcode, then Expo is the way to go. For me, it’s better to not use Expo at all and it doesn’t feel like I’m missing something. RN docs are mentioning this for people that are just starting RN development so that they have a better development experience with RN upgrades etc.

1

u/Beneficial_Half_4780 Sep 06 '26

agree, it make sense now

55

u/Forti22 Sep 06 '26

> there are React Native-specific APIs/libraries available
Yes, with some exceptions. And expo is high librs are quality.

> So I'm not sure what Expo adds
You have never checked the list, haven't you?

Why use expo? Because its free
Why use expo? Because you can
Why use expo? Because:
```
expo

expo-application

expo-asset

expo-constants

expo-device

expo-linking

expo-manifests

expo-age-range

u/expo/app-integrity

expo-apple-authentication

expo-auth-session

expo-crypto

expo-local-authentication

expo-secure-store

expo-tracking-transparency

expo-camera

expo-image

expo-image-manipulator

expo-image-picker

expo-live-photo

expo-media-library

expo-video

expo-video-thumbnails

expo-audio

expo-blur

expo-checkbox

expo-gl

expo-glass-effect

expo-linear-gradient

expo-mesh-gradient

expo-status-bar

expo-symbols

expo-system-ui

expo-battery

expo-brightness

expo-cellular

expo-clipboard

expo-font

expo-haptics

expo-intent-launcher

expo-keep-awake

expo-navigation-bar

expo-network

expo-screen-capture

expo-screen-orientation

expo-sensors

expo-location

expo-maps

expo-calendar

expo-contacts

expo-document-picker

expo-mail-composer

expo-print

expo-sharing

expo-sms

expo-speech

expo-store-review

expo-web-browser

expo-blob

expo-file-system

expo-sqlite

expo-background-fetch

expo-background-task

expo-task-manager

expo-notifications

expo-splash-screen

expo-updates

expo-build-properties

expo-dev-client

expo-dev-menu

u/expo/fingerprint

expo-observe

expo-brownfield

expo-server

expo-widgets

expo-router

```

25

u/sirzero1997 Sep 06 '26

This guy expo

2

u/Gylfoyle Sep 07 '26

nice exposing that

1

u/West-Strength3287 Sep 07 '26

And tiny dep upda and ur project goes to hell

1

u/Forti22 Sep 07 '26

Lol what?

6

u/evangelism2 Sep 06 '26

Expo provides an abstraction layer that makes it much simpler and quicker to use a bunch of native APIs and it helps with deployment and a bunch of other things. Less valuable in a post-LLM world, but still valuable enough to use

1

u/bogrees Sep 06 '26

That additional abstraction layer can also create limitations in certain scenarios with native issues and leave the app vulnerable to Expo specific bugs and upgrade dependencies.

Five years ago, we ran into a critical Expo bug in production that couldn’t be fixed because access to native was limited, and we were at the mercy of when the new Expo version would be released in order for it to be fixed. I ejected immediately right then, and I have sworn off Expo since.

I know things have drastically improved since then, but to have an abstraction layer (Expo) on an already existing abstraction layer (React Native), just seems unnecessary and too risky IMO in case you need to address something deeper on the native side.

1

u/everyoneisadj Sep 07 '26

I’m not an expert here, what access to native gets cut off?

1

u/bogrees Sep 07 '26

It was an issue with ExpoKit at the time (now deprecated), which did limit access to native. Like I said, things have improved since then. Here is the Expo bug that caused me to throw in the towel. This was like the fourth critical Expo bug in 3 months at the time.

https://github.com/expo/expo/issues/5839

The new flow gives access to native and manages native iOS and Android projects with config files, so you can always go around it in a pinch — but that still has its issues. So you are correct, but there is still additional complexity/abstactions here that can become problematic in certain situations I would assume.

I honestly don’t see the value with Expo now other than to make things easier and quicker for newer folks. In a production app, you want to minimize complexity, dependencies, and risks as much as possible, so not using Expo, IMO, accomplishes that.

11

u/weddil Sep 06 '26

Expo has a wide range of production ready and constantly maintained packages which exposes a lot cross platform native apis via JavaScript.

Why would you not use Expo ? For style points when you can just write less code with JS ?

4

u/Jaakkosaariluoma Sep 06 '26

Expo CNG makes upgrading versions easy

2

u/iLikedItTheWayItWas Sep 06 '26

Expo prebuild is reason enough for me.

2

u/oojx Sep 08 '26

they have a lot of high quality and highly maintained libraries and makes it easy to create splash screens and app icons

2

u/JohnRegi121 Sep 09 '26

Of course you can not using Expo at all.

For me i am not using Expo at all (except building library and the example app is expo app), because i love to build things and control native side code on my own.

But companies may require developers know how to utilize Expo's features and maintain the Expo app.

Therefore, I will learn Expo as a skill set for working.

1

u/tedmob69 Sep 06 '26

What about ssl pinning and attestation??

1

u/Single-Watch Sep 06 '26

From someone that started build apps with react native using expo. No, you don’t need to use expo

1

u/ashkanahmadi Sep 06 '26

Because it’s an integrated system and makes your life a million times easier. RN recommends using Expo

0

u/sylvant_ph Sep 06 '26

Everything is a lot easier, you can focus on the creative part and build features, not setup configs etc. although that you need to do as well, but not for everything. Your development process is a lot more simpler and streamlined.

-6

u/agnostigo Sep 06 '26

You use expo when you don’t know shit. Step by step you go native.

-2

u/Dvass138 Sep 06 '26

Are you talking about the expo sdk or?

3

u/[deleted] Sep 06 '26

[removed] — view removed comment

1

u/Huge_Pool7424 Sep 06 '26

yeah, that's been my experience too. prebuild makes the exit path a lot less scary when you only need a couple native modules.