We are building a detached app with some customized native modules.
We are starting to think about versioning, and for a way to lock OTA updates to versions compatible with the current user’s build of the native app and modules.
Is there any way to do this? I read about how the “sdkVersion” property in
app.json is used to determine compatibility for OTA updates with Expo SDK versions here: https://docs.expo.io/versions/v32.0.0/distribution/advanced-release-channels/.
I wonder, could we co-opt this value to represent our own versioning for the native build? Is it a simple string equality check? Would this be stable? If not, what’s the recommended best practice here?
SDK version will lock your OTA updates to a particular version only if you’re upgrading your Expo SDK every time you’re putting a new native version in the store. If you change native dependencies without upgrading the Expo SDK, then checking the SDK version will not be help.
Note that I may do several native builds between 105 and 109 that do not break compatibility with the JS. These will often be for things like changing icons, native image assets, other native project properties.
That’s a really interesting solution, thanks! I have been planning to use release channels but not thought of this kind of application. Very helpful to know it has been working well for you!