OTA update not working for public testflight

Please provide the following:

  1. SDK Version: 39.0.0
  2. Platforms(Android/iOS/web/all): iOS

Hi everyone !

I have this problem where OTA updates are working for internal testers on testflight but when a “public” tester download the app, they have older versions, before the OTA updates were made.

Is it an expected behavior ?

Thanks in advance !

Depending on your updates configuration in app.json, they may have to kill the app and reopen it to get the OTA update (or maybe they don’t have a network connection, and thus can’t download the update)?

Thanks for your answer charlie!
Actually I shouldn’t have called it OTA updates since they didn’t have the app installed before.

It was their first download thanks to the AppStoreConnect public link
The updates(/changes) that were correctly shown on our internal tests were not shown for users with the public link.
It’s like they had an older version.

Maybe it is not working when there are too many changes compared to the app that was validated by apple ?

As @charliecruzan mentioned, it depends how you have the updates configured. The way it works is, at build time of the IPA, that is the javascript bundle that gets shipped with it by default. Any javascript bundle you publish after that, that isn’t at the time of the build of IPA, is considered an OTA update, even if its their first time downloading the app. The default behavior as mentioned above in the app.json, is to download the new version in the background, and load up whichever version was shipped with the IPA. when you kill the app, and restart it, it should use the latest version it downloaded, (and also check if there is another version to dl and dl it in the background. so on and so forth). you can change this configuration in the app.json to try and download new versions BEFORE the app launches instead of in the background. However, this will require another build, and another publish of your IPA in the app store. Let me know if this is still unclear, and I can try to help more :slight_smile:

2 Likes

@breadboxio it is very clear, each bundle different from the original IPA is considered an OTA updates ! That was the missing part, thanks a lot !

Indeed I had the fallbackToCacheTimeout set to 0, which I will now set to default 30s
to be sure the app is rightly updated before use.

Have a good day :slight_smile:

Hi again ! maybe I had not quite understood it well.
I have removed fallbackToCacheTimeout in App.json, which should make that the app is downloaded and updated in the default 30s timeframe. But still not working.

I’d like the app to be stopped and updated on start when a new update is available.
I’ve tried to do that manually but still not working.

Can anybody help on that ? :slight_smile:

@perroudsky after you changed the fallbackToCacheTimeout, did you create another IPA build? I can’t find it in the documentation, but if I recall correctly, that App.json config option needs a rebuild of the IPA to take effect.

Yes I hade done it and it was not working :frowning:

I’ve made a workaround with appstate which check for updates everytime the app comes to foreground and if it does the app get ‘reloaded’ with the latest version.
It’s ugly and not “user-friendly”, but for now its fine !

If you have other solutions I’d be glad to hear :slight_smile: