Article summary
Expo is a tool for developing cross-platform applications. It’s been around for almost 10 years and has matured a lot in that time. Years ago, I recall working with the platform and, while it had nice features, I was not particularly wowed. Lately, though, I’ve begun using it again and it’s been a delightful experience.
Expo’s impressive tooling makes it a compelling option for anyone looking to develop a cross-platform mobile application swiftly. Here are a few reasons it’s worth your consideration when making your next mobile app tech selection.
Developer Friendliness
Something Expo does well is make developers’ lives easier. One way it does this is by managing the native portions of your application. This allows developers to focus on the core application and less on iOS pod installs and Android manifest tweaks.
While Expo’s managed approach simplifies the project, there are a couple of caveats. First, without the native portions of a traditional React Native app, there is nowhere to configure the app’s name, icons, and other various properties. To remedy this, Expo allows extensive configuration of these properties through its app.json file.
Second, third-party libraries typically require some unique configuration to work with Expo. Popular packages typically provide plugins or some level of support for Expo within their readmes. To further ease the pain, Expo offers its own robust SDK that skirts around the need for most of those configurations altogether. At this point, the Expo SDK can provide access to most device and system functionality and is suitable for delivering commonly-requested app features.
Expo Go
The Expo Go app is a really cool offering from Expo. It allows you to run your React Native application without building the native portion of it. During development, Expo Go is the primary way of running the app. It also helps facilitate internal sharing of your app by allowing users to view and run previously-bundled versions of your JavaScript code. Users can directly navigate to different versions or jump directly to them by opening a link or scanning a QR code. This robust ability to share and switch between versions makes Expo Go really handy for testing.
Another cool byproduct of running only the JavaScript code is that it allows the development of an iOS app from a Windows machine. This requires that you have an iOS device available with the Expo Go app downloaded.
It’s possible to outgrow Expo Go if your application begins requiring custom native code. Fortunately, you can create a development build of your app which offers the same features described above but it does require a build.
EAS
Expo Application Services (EAS) is a set of services intended to assist with the building and deployment of applications. In my opinion, EAS Update is the most exciting of these tools. It enables developers to push updates to applications without rebuilding and redeploying the native app code to the app stores. With EAS Update, small changes and bug fixes can be delivered to users in significantly less time. Any updates deployed this way are accessible within the Expo Go.
EAS Build is used to build your application remotely on Expo’s servers. While it’s still possible to build locally, EAS Build is now the recommended way of building an application. Since building is done remotely, you don’t need a Mac to build an iOS app with Expo.
EAS Submit is used to publish builds of your application to the Play Store and App Store. This helps round out the automation of workflows.
Each service is available through Expos eas-cli
. It’s important to mention that EAS is a paid service once you reach a certain tier of usage, but the free tier is quite reasonable.
Expo for Convenience
I like to think of Expo as React Native with bumpers. You certainly don’t need bumpers when bowling, but it’s undeniable that it makes it easier. That said, if you’re not bowling, then bumpers aren’t that useful. Choosing the right technology for a project merits careful consideration of the tradeoffs. For a relatively standard cross-platform mobile application, React Native checks a lot of the boxes. Expo extends React Native by offering even more convenience.