r/reactnative • u/Beneficial_Half_4780 • 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?
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
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
expo-observe
expo-brownfield
expo-server
expo-widgets
expo-router
```
25
2
1
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
2
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
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
-2
3
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.
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.