Expo VS Vanilla React Native: Which Functionality Is Suitable for Your Project?

Apiko
7 min readMar 11, 2020

--

Most often, many find themselves in the dilemma of using Expo mechanism or choose not to in the development of a ReactNative app. Since experience is the best teacher, I can highlight the benefits and setbacks of both functions. And, as a venture into the core importance of each variant, carefully observe the salient points each mechanism exhibits.

A PROJECT ENGRAVED WITH EXPO

What is Expo?

This mechanism is a toolchain {used to perform a complex software-development task or to create a software product, which is typically another computer program or a set of related programs} in the world of technology carved in or around the React Native process to ensure the quick execution of the application. Furthermore, Expo provides a series of tools that would cut all corners in the development process and testing of React Native app. Moreover, Expo automatically encrypts your app with the components of user’s interfaces and services that are purposefully designed for 3rd party React Native components. As long as Expo is engraved within the core, the rest of its components can always be found in the Expo SDK.

Expo’s Benefits

- Expo installation on a project is fast and simple to execute.
- Expo exhibits many functions such as the Utility Expo CLI that constantly checked the app status, and could establish the device it operates on. Furthermore, it scans QR code or transfers the link secure through email to open the app on the Expo client. Finally, mode of development can be switched from the traditional platform to the Expo server where you can publish your app.
- You can only have access to the app on Google Play and App store, which are a trusted source. During your app development, the platform allows you to open the projects even though they were not developed through Xcode or Android studio.
- Expo clients also allow you to send your app to others for review, an essential attribute in modifications. All changes performed can be observed on the Expo client without developing any APK or IPA files.
- Expo SDK platforms offer the collection of inbuilt solutions such as the device camera, notification, geolocation, accelerometer, etc. All these collections can be seen in the SDK with new solutions.
- Firmware Auto-update {Over the Air}: An outstanding Expo feature for updating your apps without re-download the app in question on either Google Play or Apple store. So, how does it work? Once your client opens the application, the app will automatically ingest the new updates in Javascript code without any significant or technical operation on your client-side. Although, the app icon and other settings may not be updated through the OTA or what I called the firmware auto-update. The limitation section offers an inclusive explanation.
- On Expo client, you can develop and test app performance for iOS without MacOs.
- The automatic management of certificate and app signatures.

Expo Inefficiency

During the development process, there is no room for native modules written in Objective-C, Swift, Java, Kotlin.
- Packages engraved using native languages and required basic or extensive linkages are not recognized on Expo client.
- A typical Expo client app accommodates every Expo SDK solution, which makes its size in the host more voluminous. For example, an app with Hello World is 25mb.
- Most often, the Expo client shows an excellent performance during the test; however, a certain issue may arise later in a standalone app.
The reasons why I won’t recommend the use of Expo.
The demerits highlighted above were just a fragment of the whole scenario. Many tech gurus or developers always encounter one issue or more at the end of the app development, because they have incorporated an Expo client in the process. And, for the sake of confirmation, I will analyze some of the challenges our ReactNative team tackled during each developmental process.

Limitations

Even though the sky is not our limit in the app development process. However, our hands are tied in all Expo functionalities; therefore, all accessible to us is the SDK and package encrypted in Javascript, and won’t require any linkage. Our reason to limit our exploration on the platform is as a result of the plunge in its credibility. Consequently, if you’ve chosen Expo or its service for your project, you are bound to discover its flaws someday.
Our devoted ReactNative team is quite incredible due to their experience in the field. In research, they realize that the detach many claimed to be efficient in carving the core of an app is just a waste of time, and that time is money.
Now, suppose you detached one of the Expo SDK solutions called “Expokit,” the file will be saved on your project. This mechanism is the summation of all models in the Expo SDK where all the native modules can be added if needed. However, I won’t suggest retaining the Expo kits in your project as a result of the salient reasons below:

- The difficulties in debugging.
- The native score causes a lot of problems.
- You can’t share the project using the QR code.
- Over-the-Air updates won’t function.
- And, to simply turn the notifications on, you will need to collect a certificate.

Once you’ve decided to operate on Native Models you had better turn down Expo for another suitable package.

DEPENDENT HIGHLY ON A PARTICULAR REACT NATIVE VERSION

Since the Expo clients are version based programs, you are being tied to a particular React Native version currently in use at the moment. However, do note that whenever an error code surfaces in a version, their engineers get them fixed and make these modifications a new update.
In most app developments that include the Expo configuration, this app determined the React Native version to adopt and can take a whole month to get any updates. Another detriment attribute of Expo client is the issue concerning bugs; which are updated within a month or several months.
From my perspective, Expo client is a perfect choice; if your intention is to carve an app without any specializations {a jack of all trades}. Nevertheless, Expo client management is constantly working none-stop to improve and enhance its function for better performance or results.
Based on this analysis, Expo functions might be improved with impressive features. So, why don’t you take your time reading about Expo objectives here?

React Native without Expo

In our React Native documentation, you can read about how to set up a project without the use of Expo in the configuration. All these are encrypted in “Getting Started” {building projects with native code section}.

Benefits

- You can add Native Modules written in Objective-C, Swift, Java, Kotlin, and packages that require linkage.
- You get to choose the ReactNative version you would like to implement in the app development.

Drawbacks

- You’ll be denied the opportunity to create an iOS app without MacOS since you have to use Xcode in most of the configuration.
- If your app development has recently been switched from the Expo client to ReactNative, keeping your project intact might take some time.

WHY IS IT BETTER TO START YOUR PROJECT WITH VANILLA REACTNATIVE?

Native Modules

An independent React Native app has many advantages beyond being attached to an Expo client. First, you get to connect the packages that process native modules in their core, with your personalized native modules written in native languages. Secondly, you get to use and implement inbuilt functions of any device such as the background geolocation. And, finally, you can add external packages to suppress images, videos, and many more instruments that can enhance your app effectiveness.
In addition to that, you can choose any React Native version you desired, and update to the newer versions. Aside from that, you can alter the code base and rewrite the whole thing to improve its performance. {Airbnb and Microsoft exhibit similar function}.

React Native Fabric Architecture

This is another reason why I recommend the use of ReactNative without Expo configuration. You can learn more about its special function in the video.
Realistically, the time it takes to upload updates on the RN version Expo client decides to incorporate in its process is like a journey to Heaven. And, suppose React Native issue new versions with architecture on a monthly basis, Expo might issue its updates after the sixth month.

OTA Alternative

There is nothing without benefits. As far as I’m inclined, the over-the-air feature in Expo was incredible as you don’t have to redeploy the app on Google Play or Apple store. Nevertheless, I’ve discovered a better option, a remarkable service called Code Push {There entrapped more opportunities and settings}. Do you have a project centered on notifications? The library Onesignal would handle the job effectively and also gives you more access available to Expo clients.

What Should You Do?

Before reaching a conclusion, be aware that the requirements and functionality you would like to incorporate and implement in your app are the major determinants. And, to enrich your decision making, this article has done justice to the salient advantages and disadvantages of the Expo. However, if all aforementioned is merely a minor issue for you, then, Expo may be the perfect option and you can proceed to the development itself!
In conclusion, if your app requires a specific attribute and package with native modules {carved with native languages} you had better go for Vanilla ReactNative. Nevertheless, without Expo; your project setup would accumulate more time, but if you have the in-depth knowledge required in package linkage, and how to set up an app via Android Studio and Xcode, you will easily develop a ReactNative project without the use of Expo.

--

--

Apiko
Apiko

Written by Apiko

Apiko is a software development company that enters markets with digital businesses, using a solid process and clever strategies.

No responses yet