[Question] About EAS and OTA Update

Regarding Binary compatibility and runtime versions. If I install a package that changes the native side in some way, how the OTA update works? The doc says that I need to update the runtime version but I’m not sure if it will prevent an incompatible OTA update that may crash the app or will modify my update to get it safe for the apps. To clarify:

  • I have an app already built and in production
  • In DEV, I installed a new native package, changed the runtime version on app.json
  • Then I ran expo publish --release-channel release

You see that I have different runtime versions on both the DEV app and the delivered app. My question is: In this case, will the delivered app (production) receive the OTA update?

May we need a tiny update on DOC to make it more clear.

Thanks.

Hey @isthejack, if the binary in production’s runtimeVersion does not match the runtimeVersion configured in your app.json while running expo publish then it is expected to not receive the update.

Could you let me know how you think we could improve the docs to make this easier to understand?

Cheers,
Adam

1 Like

Thanks @adamjnav. I thought that it was possible to update the app using OTA even for different runtime versions because that part of the doc is not clear about it:

Your native runtime may change on each build, depending on whether you modify the code in a way that changes the API contract with JavaScript. If you publish a JavaScript bundle to a binary with an incompatible native runtime (for example, a function that the JavaScript bundle expects to exist does not exist) then your app may not work as expected or it may crash.

That paragraph recommends updating the runtime version but is not saying that the OTA won’t be possible if you update it:

We recommend using a different runtime version for each binary version of your app. Any time you change the native runtime (in managed apps, this happens if when you add or remove a native library, or modify app.json), you should increment the runtime version.

Maybe just adding a phrase saying that if we update the runtime version, delivered apps with different runtime versions won’t get OTA updates. Maybe it’s an obvious thing for most people, if yes, sorry for that.

Cheers,