Hi everyone,
I'm currently focused on React and recently started learning React Native. I'm using the React Native CLI, not Expo, because I want more control and flexibility — especially for things like native modules, which are often needed in apps with stricter requirements (like banking apps or apps needing deep system access).
However, I'm finding it difficult to get solid, production-level resources or guidance on how things are done in the real world with the CLI. Most tutorials are either Expo-based or too surface-level.
I'm especially confused about:
How production teams manage native modules with CLI
Best practices for integrating native code (e.g., root detection, biometric auth, security layers)
Folder structure, tooling, and setup used in professional teams
It would mean a lot if someone with real-world experience in React Native (using CLI) could share:
How you approach app architecture in production
Any recommended tools/libraries
Tips or gotchas for working with native modules
Resources that helped you learn beyond the basics
I am trying to develop an app and am not sure which to use. I know Expo is easier and quicker but you can't access native elements. But there should js lib to do most things. Or should I just start using CLI and if I use CLI would I still be able to write on code base and get an app that works for both ios and android?
Videos
Hi everyone,
I'm currently the only mid-level React Native developer in my office. So far, most of my professional work has been with React Native CLI, although I've recently explored Expo through some hobby projects.
Now, as we plan to start a new project, there's an internal discussion about whether we should go with Expo or stick with the React Native CLI. Since I'm leading the decision from the development side, I’d love to hear your insights.
So What would you recommend and why?
I’m looking for well-rounded arguments – performance, ease of development, scalability, build process, maintenance, third-party packages, or anything you want to add.
Would appreciate input from anyone who has made this decision recently or has worked with both in production.
Thanks in advance!
I'm new to React Native and unsure where to begin. While React Native CLI has a good number of installations, Expo seems more straightforward, with a simple installation process. However, as I delved into Expo's documentation, I noticed a significant number of issues reported on GitHub, which has left me uncertain about whether to choose Expo or React Native CLI.
Right now I'm following the Roadmap.sh React Native map and i'm checking out the Env Setup section. It recommends to go with React Native CLI or the Expo CLI. Which is the recommended path? Which one sees more use in the job market?
I don't have any experience with React Native, but I volunteered for the role of a mobile application developer at a startup. The startup is a platform designed to help event-based communities coordinate online. It allows users to publish events, classes, and gatherings once and display them across various online communities. I need to build an application for both iOS and Android for this platform.
I’m unsure whether I should use the CLI or Expo for the project. The approach I'm considering is starting with Expo and then later ejecting to the CLI if needed.
I need to implement features such as:
Mapbox with Marker Clustering
Background Location Tracking
Geofencing / Proximity Notifications
Check-in Functionality (with real-time location updates)
Friend Location Sharing
Advanced Push Notifications (interactive, deep linking)
Offline Map Tiles
Advanced Crash Reporting (Sentry/Firebase Crashlytics)
Image Optimization API (dynamic resizing, compression)
What do you suggest as the best workflow for this project?
Hi!
I’ve been a React Native developer for only 3 and a half years, so relatively new, and I’d like to share my opinion based on my experience regarding the choice of using React Native CLI over Expo CLI, mainly to understand what people think about it.
I know this topic has already been discussed countless times, but the fact remains that a lot of new developers face this crossroad at the beginning.
Until a few years ago, due to some limitations of Expo, it was actually very reasonable to debate the actual convenience of using React Native CLI over Expo CLI (which is also the reason why I started with React Native CLI), but now everything that can be done with React Native CLI can perfectly be done with Expo CLI as well. I recently had to work on a React Native project using Expo and I was quite surprised by its simplicity. I realized how using Expo makes the developer's life easier from every point of view. At the same time, however, I believe that having an idea of how a native Android and iOS project works and is actually structured is quite important for a mobile developer, and Expo completely abstracts away that part.
So, on one hand, I am attracted to the convenience that Expo brings to the development experience, but on the other, I am a bit hesitant about completely losing touch with what is at a lower level. As a mobile application developer, speaking from a professional standpoint, I do not rule out the possibility of developing mobile applications natively with Kotlin or Swift in the future, or even switching frameworks altogether.
For this reason, I remain more inclined to use React Native CLI rather than Expo. Maybe my concerns are just unfounded... I would still like to know what you think about it
Cheers :)
I was asked to setup a react native project for my company, which will be probably mantained for long and thus i have to do it properly. My question is: should i go for Expo or Cli? My answer would be CLI from what i understand now, since expo could lead to some limitations at some point and i don't want that to happen. On the other hand, Expo seems much simpler and many tutorials i see use it instead of CLI. What's your take?
Most of these comments are outdated. Expo managed with eas build and dev-client has all advantages of expo, including over the air updates and you can use any react-native just like with a bare workflow. It’s both the easiest way to get started but also the best way to manage a complex project with any react-native requirement and handle actually being in production with over the air updates.
It’s is no longer true that expo has any limitations compared to any other react-native setup.
Expo will provide you with a much faster workflow as they handle all the tiny differences between platforms as well as their newer service which allows app exports straight from the terminal.
Countering this, you are correct in assuming that Expo has it's limitations once you get further into development. There are a number of native libraries that don't support Expo and will require you to go into the bare workflow anyway.
For me, I've never needed a library that required me to forgo Expo. While starting a project without it will surely give you more control, I'm not sure it's control that a lot of people want to deal with or have the time to deal with (seriously, native code sucks)
Best of luck!
Edit: If you would like, you can always start a project in Expo to lay the foundation, then eject once you feel that you've got it under control
Hey everyone,
I'm diving into app development and I'm torn between using Expo and React Native CLI. I'm aiming for a smooth process that lets me build for both iOS and Android without too many headaches. I also want the flexibility to add custom native modules down the line if needed.
Here’s what I’m looking for:
-
Fast and easy development
-
Access to common mobile features like camera, contacts, etc.
-
Flexibility to integrate native modules
-
Seamless build and deployment process
Any advice on which path I should take? I'd love to hear your experiences and recommendations!
Thanks a ton!
I want to switch from Flutter to React Native. I don’t know if I should use Expo CLI or React Native CLI?
What do you guys think? Please let me know.
I'd start with Expo and see how far you can get with it. It's gotten very mature and simplifies a lot of things, and I haven't had ran into a package I couldn't use in quite a while (wasn't always like that). Worst case you can eject Expo later. It's much easier to go from Expo -> plain RN than the other way IMO.
u/andrejjj17 Why switch from Flutter to React Native?
There is only a “Start a new React Native project with Expo”
Which one is best to develop mobile apps in 2025?
I have recently started app development on react native. I already have experience developing apps in flutter and web development in react js. I am currently going through various tutorials and found some tutorials suggesting react native cli over expo go... Although I have been following on this subreddit since a long time and I have observed many devs preferring expo. Please tell me what is more preferable as I'm supposed to build a payment application with additional support for crypto for a client.
Use expo. Articles suggesting to use react native CLI are probably outdated. The main argument against expo had always been that you can't add native code that is not part of Expo Go. Since the introduction of the expo-dev-client package, this limitation no longer exists.
Expo is easier when you'll build your app and deploy it to the AppStore, RN though have a lot of installable packages that are not suited for Expo since they require Native modules(Mapbox, and more).
I worked with both, I learned more using RN than expo.
Another thing, Expo is also easier if you want to migrate your app to a newer version, RN will be hell.
I don't understand why people are always talking about RN cli vs Expo.
To be clear, I haven't ever used expo and in this post I wanna know why compare at all ?
So here is what I know of Expo and RN cli.
-
While using RN cli you would use 3rd party packages or write your own and bridge it natively. But then why bother when you're getting a nice written logic with good quality open source package.
-
Expo on the other hand, provides its own most used packages and If I'm not wrong, it lets you use 3rd party packages as well.
-
Wait, RN cli also supports Expo packages.
So, now I am confused, if both are compatible with 3rd party packages and expo packages.
-
Then why compare at all ?
Providing packages out of the box can't be the primary and convincing reason use Expo.
-
So why use Expo anyway ?
Hi, I really like to ask this question to you guys, please guide me here thanks. This is my question what setup do you guys recommend for react native development. Using "React native EXPO" or "React Native CLI"? Thanks, guys :)
React Expo is good for trying out React Native with less hassle. However you will most likely hit roadblocks, because it does not support native modules. So unless they have already included it, you will be forced to switch anyway.
I transitioned a project to React Native CLI because of that need, and I'm happy I did. I do however frequently run into weird issues I have to google. So if you just want to toy around or make something simple I'd start with Expo.
Honestly depends on the app you're trying to build. I'm currently using expo to build a basic project management app with expo and firebase and so far it's working out really well because expo has a really smooth and fast workflow with most native functionalities available. But some native things like image uploading to firebase via expo are still not available/buggy so if the app you're building involves a lot of native interaction I'd say go with React Native CLI. Otherwise if it's mostly an information manipulation app then expo is a fun and convenient option. React Native CLI is safer either way, just takes longer to develop on.
Hello everyone, I would like to ask for a recommendation on whether to use expo or react native cli. I have these needs:
- I must with Firebase to use FCM
- I must connect with graphql
- I must be able to use firebase or auth0 authentication
- I should receive push notifications
I was helping out a facebook friend with his project and ended up trying Expo for the first time. Man, Expo is ridiculously easy to work with! After spending the past eight months on React Native CLI, constantly dealing with configurations, dependency handling errors, and all that headache, switching to Expo felt like a game-changer. No more stressing over linking dependencies or breaking builds—it just works! With EAS (Expo Application Services), I realized I can even use third-party libraries that don’t have built-in Expo support by making a custom build using EAS Development Clients.
At first, I thought Expo had major limitations, like not supporting certain libraries or having strict build restrictions. But I found out that if a third-party library doesn’t work with Expo Go, I can still use it by creating a custom development client with EAS. I can test and debug locally using expo run:android or expo run:ios, and when it’s ready, I can build it with EAS Hosting. The free EAS tier does have some build limits, but I can still build locally when needed.Did I get this right? Are there any downsides to using Expo long-term compared to React Native CLI?
I’ve been using React Native for a few years, and I noticed a shift — more official tooling, tutorials, and updates seem to center around Expo (especially with create-expo and EAS).
Is this a conscious direction from the React Native core team? Is the classic CLI approach going away in the future?
Just curious if long-term we’ll all be expected to use Expo for even "bare workflow" apps.
Would love to hear others’ thoughts — especially from devs working on large-scale projects.
Hi all,
I am a newbie in React Native world and need advices regarding to creating react native app template.
My background, I am a experienced ReactJS developer.
On the React Native website https://reactnative.dev/docs/environment-setup it shows two possibility how to create apps, namely EXPO CLI or React Native CLI.
I find that EXPO CLI is more beginner friendly and React Native CLI is more advanced. EXPO is not always support the newest version of React Native, for exmaple EXPO 42 supports React Native 0.63. With EXPO, you always depends on EXPO team about releases and that is kind of drawback for me.
My question is, should I go with EXPO CLI or React Native CLI?
Thanks