I think realistically this needs to be solved (i.e. made not-an-issue) with two things:
- Bundling the JS (and some
app.json-chosen assets) in the standalone app - no initial download on first install.
- Doing any update to the JS/assets in the background and allowing the app to run on the existing/old version until next boot.
- Also useful: giving the developer programmatic access to a “JS has just finished updating” event and a way to alert the user to this and ask them if they’d like to restart the app to get the latest code. I think there’s a canny request for this so won’t discuss here.
As I understand it (from https://docs.expo.io/versions/latest/guides/offline-support.html), the first point is already done - the IPA/APK should already contain your JS, and with the latest SDK, you can even bundle some assets, using
app.json. That page also suggests that 2 is done too - Android has always done this, and on iOS it can be enabled with
So, what we really need to work out is how well does this work? Theoretically it’s shipped and works, but plenty of people still complain about long loading times, especially on slow connections, which rather suggests it is a download issue (rather than a slow device booting the app’s code), so what’s going on here?