Annoyed by needing XCode and Android Studio to work on your React Native app? Wish it took one button to share your mobile app with other users? Let’s have a look at Expo.
TL;DR . It is required so that Expo can sign your app with a certificate provided by Apple. Without it, it’s not even possible to create an IPA package. Android apps can get away with a self signed certificate.
The standalone app works almost identically to the Expo app, except that there’s no Expo UI the user must launch the app through. It downloads the published JS bundle associated with it and runs it. That’s it.
Updating the app later on
So there is a standalone app and there is a JS bundle. Who knows when to update what? And how?
Whenever you need to change settings from the app.json file, including updating the version of the SDK, then you need to rebuild a standalone app and distribute again.
There is one hiccup that can surprise you, though. Especially during first development runs. When a user opens the app, the JS bundle is downloaded in the background. There won’t be an immediate update during the use of the app. The user would need to actually close the app and, upon reopening, the update will be applied.
If you need to ensure that the user is always using the latest version of the app, there is a gist involved that can help you with that. You might want to expand on it, depending on your needs:
Expo is still a young project and needs to resolve a couple of pain points, but when it does, it could become a major tool for mobile development.
This article is covers only the ideal situation where you’re able to implement your app’s features by using React Native + Expo API only. Once you want more from it, you will have to detach to ExpoKit or leave the safe waters of Expo completely. I have covered the details about this in my follow up article Compile React Native with ExpoKit easily.