How to implement "OTA" / "over the air updates" for a standalone app via Expo ? I tried but not working

fyi: I tried reading the docs and other questions on here, but it didnt solve my issue.

Requirement : I want to publish incremental updates on my already published app on Apple and Google App store.

Ive used exp build: ios to build a standalong ipa and apik file so i assume that expo knows my Apple login info.

So today I wanted to publish changes OTA, so I hit the Publish button on Expo XDE , It gave me the link where it published the changes,

Published to https://exp.host/@username/the(changed-link)

But I dont see any changes in my real App which is on my iphone which i installed from the Apple App store…

What am I missing here ?

Here’s my app.json

{
“expo”: {
“name”: “TheApp(name changed)”,
“description”: “TheApp”,
“slug”: “TheApp”,
“privacy”: “unlisted”,
“sdkVersion”: “20.0.0”,
“version”: “1.0.5”,
“orientation”: “portrait”,
“primaryColor”: “#cccccc”,
“icon”: “./assets/icons/app.png”,
“loading”: {
“icon”: “./assets/icons/loading.png”,
“hideExponentText”: false
},
“packagerOpts”: {
“assetExts”: [“ttf”, “mp4”]
},
“ios”: {
“bundleIdentifier”: “com.TheApp.exp”,
“supportsTablet”: true
},
“android”: {
“package”: “org.TheApp.exp”,
}
}
}

Hi there,

Docs say to just publish and it ought to show up

https://docs.expo.io/versions/latest/guides/building-standalone-apps.html#7-update-your-app

I think “Just Publish” button on XDE works for demo (expo) app only, not for standAlone apps which are being used by the real users.

I want to implement the OTA updates on the ( real ) standAlone App,

Can I do that with Expo ?

Hmm, but standalone apps also should be getting OTA updates.

“Hmm, but standalone apps also should be getting OTA updates. “

How can you say that ?
It’s not happening in my case, can you push OTA updates in your application ?

Well I asked expo teammates and they confirmed it.

I think there might be a mistake somewhere on your end?

@albertkim does it work for your app ?

Hi there - if you updated to a newer SDK version, you’ll need to rebuild and resubmit to Apple and Google, since the old binary currently in the app store doesn’t include the native code for the new SDK version.

If you want to reach users who have the old copy of your app currently in the store, publish your app on the older SDK version.

@ben, okay so OTA updates now works, but still a minor issue, OTA takes affect only after a user closes the app and relauch it. Is ther e a better way ? Or whats the best way to let users know that he/she should close the app and re open it ?

1 Like

It’s generally a better user experience to wait for users to stop the app before launching the new version. If the user is in the middle of using the app, it’d be disruptive to suddenly launch the update. And if the user backgrounds the app temporarily to use another app, it’d be disruptive to wipe out their in-memory application state.

On Android there’s an experimental API (it may be more likely to be removed or changed – use at your own risk) called Expo.Util.addNewVersionListenerExperimental. When the user launches your app on Android, it will look for updates in the background and then call this listener if it finds updates. This would let you show the user a message asking if they’d like to reload the app.

Expo.Util.addNewVersionListenerExperimental only works when the app has been closed.

But it should also check when the app goes back from background to foreground.

or even better: expo should provide a simple api to check whether there is a new version, so that devs can decide when to check