react native-tutorial

React Native Expo Vs React Native CLI

What is React Native Init?

A well-liked framework for creating cross-platform JavaScript apps is React Native. The capability to develop cross-platform apps is its key benefit. They enable providing a UI that is far better than the available hybrid choices on the market and more similar to native apps. React primitives produce native platform user interfaces. This implies that your app will make use of the same native platform APIs as other apps. To get started, you’ll need Xcode or Android Studio.

What is Expo?

Expo is a toolkit for creating React Native applications. It is a group of services and tools made specifically for React Native. It will make it simple for you to start creating React Native apps. It gives you a list of tools that make it easier to create and test React Native apps. Additionally, Expo offers a flexible development methodology that is more advanced and convenient.

React Native: Pros and Cons

The ability to share code between iOS and Android is the key benefit of adopting React Native. Instead, you need to create and maintain two entirely different codebases. Additionally, you can reuse the components of your web app numerous times.

React Native CLI is the best option in the following four circumstances:

  • Working prototypes,
  • UI-simplified apps,
  • cross-platform apps that don’t heavily rely on native APIs,
  • user interface-rich apps,
  • utilities like battery monitors,
  • apps made specifically for one OS,

and apps with few animations are all examples of applications.

Let’s examine some of React Native’s benefits:

  • React Native’s advantages include the ability to include native Java/Objective-C modules.
  • Compared to Expo, creating.apk and.ipa files is significantly simpler.
  • Prebuilt components & reusable code.
  • UI made simpler.
  • support for third-party plugins
  • modular construction.

Although React Native made a significant impact on mobile app development, there are certain drawbacks. Udacity and Airbnb recently discussed their React Native experiences. They’ve come to the conclusion that this platform offers lots of advantages. But you cannot create any sort of mobile apps with it.

Cons of React Native CLI:

  • To run the projects, you need to have XCode and Android Studio installed.
  • Without a Mac, you are unable to create iOS apps.
  • The device can be tested without being connected to a computer through USB.
  • In XCode, typefaces can be imported automatically.
  • You must give the entire.apk or.ipa file if you wish to share someone your programme.
  • You need to link and install things like npm Push-Notifications and Asset Manager.
  • A working project requires careful setup, which can be time-consuming.
  • A high level of configuration is necessary.
  • It requires a fundamental understanding of iOS and Android folder structures.

Expo CLI: Pros and Cons

I want to start by discussing Expo’s drawbacks or limitations because there are several of them. Additionally, you must determine whether Expo is compatible with any special requirements your app may have. to let you know that you shouldn’t even think about utilising Expo.

The limitations of Expo CLI

I won’t go through everything because they have a nice page that outlines some of the restrictions. Before making a choice, I advise reading this list. The fact that you cannot use native modules, though, is the main issue. I’m referring to a project where a React Native link may be used, say, for vector icons.


A particularly well-liked React Native package is the vector icons library. They are not usable if you:

  1. Some of the Android or iOS projects need to be changed;
  2. Touch a Gradle or a CocoaPod;
  3. Write some Kotlin or Swift code.

As a result, Expo CLI does not support linking anywhere.

Expo supports additional libraries in addition to the widely used Vector Icons library. You are free to utilise the versions of various libraries that Expo creates in your projects. The greatest issue I had was that they didn’t support the fast image library I was missing. I needed to link it somewhere in this text, but I was unable to make it function. Therefore, you cannot utilise Expo if you require a certain Native Module Library or Native Module.

There are several unavailable iOS and Android APIs.

Another thing to keep in mind is that not all of the device’s APIs are supported. Lack of Bluetooth and Web RTC is a significant issue as well. However, a lot of things are now being developed, therefore it’s a good idea to review a list of feature requests.

In any case, it’s a major deal. You shouldn’t utilise Expo if you require any of those things. If none of these factors are important to you for your project, I’d say that is the key consideration. Additionally, Expo might be a great option and something I’d suggest if you don’t need native modules.

The next point I wanted to make was that using Expo had a number of benefits, which I discovered and found to be quite useful.

Pros of Expo CLI

No need to link and lots of libraries

I always encountered issues when I had to use a React link or go into CocoaPods to install something. When I linked things or shared a project with others, React Native would always crash. It was one of those situations where the project from my computer wouldn’t work on someone else’s, for whatever reason. So you won’t experience those problems with Expo. You may easily integrate them into the library that Expo has generated for you. I have no issues agreeing with all of the XP libraries, and they integrate quickly and easily, which is a major bonus. The other thing to be aware of is that you may use many JavaScript libraries with Expo.

Improved experience in development

The next point I wanted to make was about how much better the development experience is. The programme would always start with a huge build whenever I would run or build it. Once the packager had started, it ran more quickly. But after that, whether I installed a library or anything else, it took a very long time to restart. I then learned that Expo and the packager work much better together. Another cool feature is that you can use it without connecting your phone to your computer. It can run the app you’re developing via Wi-Fi and, what’s even better, sync between various phones. Therefore, when you type on your computer and make changes, other people’s phones may also be updating. And that is lovely.

Upgrades to new versions are simpler

The upgrading process is also much smoother now. You can find the steps you need to take to upgrade it to a new version in the upgrading document. It can be completed quickly. So this is how upgrading an Expo looks, and I had a really good experience doing it.

Simpler to launch on Google/Apple Store

The process of deploying items to the Apple and Google Play app stores was also made considerably simpler. It manages your keys, certificates, and signing credentials. It makes everything easier.


Leave a Reply

Your email address will not be published. Required fields are marked *