So we want to create a new react native app and as it turns out we actually get two options for that. If you search for React Native you’ll find the official page and on that official page if you click on get started you actually have two options here. You have the Expo CLI quick start and the React Native CLI quick start.
So we can use the Expo CLI, the expo tools for generation, And managing our react native app or we use the React Native CLI.
Now if you first have that choice you would probably go for the React Native CLI because you want to build a React Native app After all, right?
Well, let’s have a look at what expo is. It’s a third-party service that is completely free to use you don’t need to sign up to get started and you don’t have to pay to build an app that you can publish to the app store so it’s really free to use.
What expo gives you is a kind of a managed app development workflow. It takes a lot of the Complexity away from you because building React Native apps can be very complex, especially when it comes to integration Curtain native device features like accessing the camera and expo simply gives you a lot of Conveniences there, It makes Development of React native app a breeze and so much easier.
The Downside is that you’re limited to the expo ecosystem because expo in the end is like a wrapper you could say around your app a thin extra layer between your app and the native raw.
Expo Vs React Native CLI
React Native experience and you still get a native app in the end and you still use react native under the hood that’s all happening but expo abstracts away some the complexity which also means if of course removes some of the Finegrained control you would normally have if you build a raw .
React Native app because if we have a look at that other workflow the React native CLI that’s in the end managed but the React Native team or parts of the React Native community and there you have a barebone development setup which means you get a native app.
You need to install Android studio you need to install Xcode to build that app and you need to Configuer and manage a lot on your own As soon as you start adding certain native device Featuers like let’s say as soon as you want to use the device camera you will have to bring in third party packages where the set up process can be quite complex and therefore this can be more cumbersome.
So if you are a Super advanced developer and you already know you’ll be building a very complex app where you need to do a lot of manual workarounds a lot of Fine-grained configuration then you definitely want the full Bare Bones Experience on the right. If you are getting started on if you’re building a normal app then the Expo CLI will very likely give you everything you need.
It gives you wrappers for the most common native device features you need like using the camera like using maps, that’s all made super simple and if you ever get to a point where you find out oh I need more control then you can always also switch from the expo workflow to the native workflow, you can eject and then you have the full Flexibility.
Therefore nothing speaks against getting started with expo you can always switch to the other experience if you need to and well use expo . Because it’s simpler because it gives you everything you need for most apps because it’s so much more convenient to work with it and because you can always switch.
I will also give you an introduction to the more bareboned workflow we’ll work with the expo.
Now on your native device or on the simulator, you will install Extra app from the app store the Expo client app and well do that together.
Now your app can then be loaded into the client app which is this extra Wrapper to see it there to run it there to test it there and that’s, of course, great for development you can also publish your app as expo app so that other people who have the expo client installed can easily run your app, they don’t even need to install it from the google play store or the Apple app store but of Course,
Typically you to build an app which you can publish to these app stores and no worries that’s possible with expo too.
That extra client app which you have which wraps your app is great for development because it speeds up the entire development workflow but if you want a standalone app so an app that is not relying on the expo client which most of your potential users probably won’t have installed well then expo also allows you to build and publish Standalone apps.
So apps that do not rely on the expo client being installed. SO therefore with the expo, you can build normally apps which are distributed to the normal app stores standalone where your user Don’t need any special app installed but you have that extra convenience during development which is great and as I mentioned before if you would need to you can always switch or eject as it’s called to the non-expo development flow as well.
If you like this post, don’t forget to share 🙂