I’m trying to understand better how OTA updates release. I’m getting close to releasing a production app using Expo and I’ve seen a number of inconsistencies with OTA updates while testing this during development.
Currently there is a setup where a staging app builds using a release channel and updates are published with
expo publish --release-channel staging. This is all on the same Expo SDK (30).
One thing that has happened is that an update is published (update A), the app downloads it, but then sometime later the app downloads another update and reloads - now the prior update has been “reverted” and is gone and the app is stuck with the prior code (before update A). I have to trigger another publish to try to fix this. This has happened on two separate Android apk installations.
I’ve also seen other issues but I’ll just leave it at that for now since this is the most recent one.
Basically, I am wondering do we just need to publish to the release channel to create a JS update? Does Expo use the
app.json version or any other configuration to determine what the “latest” update is?
Sorry to hear about the issues regarding OTA updates. We’ve gotten reports of this happening on iOS (https://github.com/expo/expo/issues/2424) but it sounds like you’ve experienced the same on Android. Can you make a github issue here with as much relevant detail as you can provide.
To answer your question, you just need to publish if you are pushing out purely JS changes. If you are changing SDK versions, you’ll need to build a new apk/ipa. There are a couple other changes that require a rebuild - usually changes in
app.json - that require a new build as well. You can read about those here.
Our Dev Build has replaced the Prod build Through OTA updates. Is there any way to UNDO the changes? If so please do suggest.
You can use
expo publish:hisotry and
expo publish:rollback. If you are using a release channel, read here: https://docs.expo.io/versions/v30.0.0/distribution/advanced-release-channels#release-channels-cli-tools-3
This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.