So this isn’t really news, so much as it is news to me, but I thought I’d write a little bit about my experience. React Native is a clever toolkit for writing (mostly) mobile applications for both iOS and Android. Your code is written using JavaScript and a markup/styling system that isn’t HTML and CSS, but isn’t not HTML and CSS. Their tagline is “Learn once, write anywhere”, which is a parody of “write once, run anywhere”. The idea is that if you know React, you’ve got pretty much everything you need to write a mobile application. While this isn’t entirely true, as I think there are things you need to know to develop a good mobile app that have nothing to do with what platform you’re using, but that’s neither here nor there.

Performance is pretty good. Not amazing. Good enough for most things. The main advantage is that you don’t have to learn Java or Objective-C to use it, and more or less you can have one codebase for both iOS and Android. The real problem, though, is that the process of getting an app onto a phone or even a simulator for testing is a royal pain in the ass. There are guides on how to do it, and once you get it going it more or less works, but dang if you’re not going to spend a week learning the tooling before you really get going.

The other big thing is that React Native is good for building UIs, but if you want to go much beyond that to interact with the phone you’re going to need to drop back to producing native code. Then you’re going to have to ship that code with your app. It adds another layer of complexity to the process and means you have to maintain at least three codebases if you want to have something that works on iOS and Android.

Enter expo. Expo is a soup to nuts setup for developing cross-platform React Native apps. It wraps React Native, but exposes a huge set of APIs for doing all the useful things you’d normally need native code to do. It also makes development super easy. Set up some easily installed prerequisites and run a few console commands and you’ve got a working app that can be immediately deployed to a simulator, a web browser, or a phone. The last one is interesting, because instead of loading the app onto the phone directly, they have a little client app that you install on the phone to make that super easy. The CLI tools upload your app to Expo servers, then the app can easily pull it down and run it. They’ve put an incredible amount of thought and work into making the development process as streamlined as possible. I had a real, live, authenticated and talkin’-to-a-backend mobile app only a few hours after installing the thing. Pretty impressive.

So if you’re thinking about getting into mobile development (and you probably are) Expo is not a bad way to go. Easy to set up, well documented and dead simple to deploy, it’s worth a closer look.

← AWS Amplify Is Almost Great Create a Workflow System Pt. 1 →