Why Expo is so good for my use case

Expo is a toolset for React Native that allows us to build native apps for Android and iOS with the same codebase. We could build more with it, like a web version for example, but we decided to just use it for mobile apps.

I transitioned from a full stack developer to focusing mainly with frontend and mobile dev at work and Expo helped me a lot with this due to it’s simplicity and tooling. I tried React Native bare bones first, and was getting frustrated with all the errors that popup just by trying to create a new project. But Expo? Expo is a lot smoother.

When I started with it at work, no one else had experience with it, so I was kind of alone on this task, and at the time, 6 years ago, Expo was still a bit frowned upon by some React Native developers. For our case the problems raised by those devs wouldn’t matter, we didn’t have the need for any complicated native API’s.

Fast development times

In a matter of 2 months we had rewritten our entire Ionic app to React Native with Expo. Not only was the app way nicer for the users, with better UI and smoother flows it was also nicer for the developers to work on in (only me at the time). It felt risky to bet on Expo at the time, but seeing how it performed it didn’t matter that much, and the truth is that Expo only got better and better.

Expo Go

This was one of the best tools, coming from Ionic, developing was so easy and Expo Go definitely helped a lot with the transition. There were some limitations but by the time we needed to work around those limitations, the dev clients came along and everything became even better. Not going to lie, there were some times we considered ejecting it due to some deeper issues, but we always found a way and everything worked for the better.

Packages

The amount and quality of expo-* packages is just great. It is almost guaranteed that you’ll find an expo-package for your needs. The recent expo-maps package is a very good example of something that some years ago was a bit tricky to work on in React Native that now is very simple because of this package. I try to stick to expo packages as much as possible since they’re always up to date and tested a lot.

Build process

Run a command a 10 minutes later you get a production build ready to submit to the stores? This is magically good! In my use case I prefer to submit to the AppStore and PlayStore manually but if one day I want to automate it, then I know EAS can do it for me, and reliably, judging by the quality of the service in general.

I started writing this post because I’m going to start a new personal project soon, and when I thought about which technology to use for the app, there wasn’t even a doubt, I knew I would pick React Native + Expo instantly. Then I started to think about the good stuff that Expo provides me at work and decided to “tell the world” about this. If you’re a one man band, I don’t think there is a better way to develop native apps than with React Native + Expo.

Rafa Morais Santos