The Case For EAS
In 2023, we are spoiled by all of the C/D technologies that surround us. The likes of Google Cloud Run and GitHub Copilot have made the one-click deployment dream a reality for anyone who is willing to invest a couple of minutes into setup. Unfortunately, the mobile app development space is still a seeming outlier to all this. I personally believe that cross-platform platforms are a bit magical. They work beautifully when they work but they can also behave in ways that seem very inconsistent.
Mobile App Deployments
Mobile App Deployments are a lot more complex than just chucking a SPA build folder into S3. As a result of installing a package on an end user's device, security of the package is vital. Due to this, digital signatures on app bundles are enforced. This in and of itself is the single most difficult part of the mobile app C/D workflow to solve. Just because XCode manages all the certificates on your behalf does not mean it will play nice when you want to run it on a server. As a testament to this, Stack Overflow and GitHub are littered with app build issues.
Generally, if you are looking at automating app builds, you do not have many options. By and far the most popular option is Fastlane and for good reason. Unfortunately, Fastlane is still not a walk in the park. There is quite a lot of configuration that needs to be engineered and maintained
Enter Expo Application Services
Imagine for a moment you open a React Native project to find the
ios directories missing. For those unfamiliar with Expo, the lack of the easiest differentiator between a React SPA and a React Native project would set off alarm bells. Is this the right project? Did someone ruin this project?
With Expo, this can be the norm. Expo Prebuilds mean that you do not even have to sacrifice the necessary evil of native changes; you simply write a quick plugin to reliably and repeatably apply the changes and next time you run a build, the native folders will be automatically generated and your changes applied. For anybody who has been through a React Native upgrade, this is a true godsend.
Expo Application Services is what drives this Expo Build process. It automates key pain points for mobile developers:
React Native upgrades become a simple package version change
App signing certificates can be fully managed
OTA Updates are handled seamlessly
App builds can be run in the cloud or on your own infrastructure with a single command and minimal setup and configuration.
If you have not tried Expo yet, give it a go!