There’re plenty of open-source developer tools, which results in the various apps we at Apiko browse and download today. The feel and the look of a certain app depends on what scope of work was done starting from the very backbone. That’s why the powering technology choice, the way of writing the code and additional resources that were used during the creation process matters. In this article we’d like to make a review of Expo.io - a UI library and a set of tools for React Native app development, and tell you why devs (including our team) ❤️ this product for native app development with the use of JavaScript.

What exactly Expo is and what it’s used for

Think of Expo as of a toolkit created for React Native app developers that contains ready-made UI elements for smoother and faster native iOS or android app development.

The tool’s documentation page for developers states the same: “Expo is a set of tools, libraries and services which let you build native iOS and Android apps by writing JavaScript.”

Besides, Expo is one of the great open source developer tools out here.

We guess a 2-minute explanation perfectly fits in here:

Why do developers like to use Expo? Why is Expo just the right technology for development?

First and foremost, Expo boosts the very beginning of React Native app development. How exactly?

You can use native modules separately, to provide the scope of functionality you need for a native app development, i.e. access to camera, microphone, contacts, finger scanner, location, oauth (social login), notifications,etc. Be ready, though, to possibly face modules incompatibility issues and fix them, which would take you more time.

In its turn, with utilizing Expo SDK (that contains modules with the functionality already mentioned above and more) you can make the process of react native app development less buggy and robust.

All of the modules Expo SDK has, by the way, are a good match for native iOS or android app development. Utilizing Expo SDK you don’t have to figure out how to deal with the insignificant bugs after the React Native version update. Expo team have already taken care of the small troubles that might bother you in the process of native app development. Besides, Expo SDK updates every month (for now, it runs on v22.0.0). Pay attention also to which Expo versions correlate with React Native’s versions.

Expo SDK and React Native cross-compatible versions

You can see the rich list (left) of functionality Expo SDK for native android or iOS app development

Expo contains already embedded graphic elements of navigation, like SVG icons, that are implemented with the help of react-native-svg module. You can also initiate the use of react-native-elements for the React Native app examples you’re working on, the module with the complete abundance of ready-made UI elements, like:

The modules fit for native iOS app and android app development

With the help of ExpoSnack, you can share the very bones of your React Native app example(s) with the team to check the things out or receive a useful piece of advice. Apart from this, there’s a way to download and look at the beta (or release-prepared) version of the app by scanning a QR code or receiving the link to the app within Expo environment.

ExpoSnack

You can download the Expo app and scan the QR code to receive the app on your phone

React Native developers state that with Expo the updates come at ease. When not using Expo, RN updates happen to take from several hours to several days. Another reason why some React Native app developers utilize the old version(s) of RN is because during the update some packages might cause you incompatibility troubles. This creates significant obstacles to test the new React Native features when in the process of react native app development. With such technology for development as Expo in your ‘handcuff’, you are guaranteed by Expo team that everything will be fine.

All of these aspects mentioned make Expo the right technology for mobile apps development.

You can showcase your Expo apps in Expo apps library. We’ve created Perfi, an open-source financial app for which we’ve used React Native and Expo. You can download and check it out here: expo.io/@danilichev/perfi

Featured Expo projects

We’ve enlisted our app in the Expo app library

Generally speaking, Expo is the collection of ready-made plugins which you simply need to adjust to your device

Expo is supported by people who stand behind React Native development. That makes the most of work with Expo + React Native. Given the fact that both Expo and React Native are listed in GitHub, it makes them perfect open source developer tools to use and make contributions to.

With the use of ExpoKit, a Java and Objective-C library, you can create nicely-performant apps. Generally speaking, this allows to add to your Javascript React Native project native features and functionality. As ExpoKit’s documentation states, Expo is aimed for JavaScript app development, but : “If you created an Expo project in XDE and you want a way to add custom native modules[...]”. The tool provides some “out-of-the-box native capabilities”. As the result, Expo can be enlisted among the native app development tools.

Create a secure React Native app examples with Expo

SecureStore is a security measure that allows to securely store data on the device (if put simply, the tool makes content on the device ‘private’ or ‘public’ for browsing and/or use). There’s an entire map of options you can implement: from the data access only when the device is unlocked to a requirement to enter the specific password.

Among all other tools for developers, Expo is probably one of the most respected ones out here.

Final words

As you can see, Expo has proved its necessity when creating React Native app examples. The tool makes React Native app developers’ work several times faster and easier. This is the reason why we choose and use Expo for our React Native projects. If you’re looking for how to build a native app with React Native, Expo might be the technology for development you need.

We'll be incredibly happy if you let us know what the other useful tools for React Native, JavaScript app developers are. We're always open for productive communication.