How does Live Update works in consecutive binary (in)compatible deployments?

According to the article What Are “Binary Compatible Changes”?, the Live Update feature only works on binary compatible changes which makes sense. If we, for example, install and implement a new plugin we want the native changes + web changes to be deployed/available at the same time.

Now how does Live Update works in consecutive deployments of binary compatible changes and not binary compatible changes?

For example, If I deploy a not binary compatible change and then deploy a binary compatible change (web-only change), will the second deployment be blocked from using Live Update since a native app takes time to be approved in app stores?

Thanks in advance!

In the example you have provided, the second deployment can receive a live update. This is because any live update that the second deployment could receive will only change the contents of it’s web app component. So the approval status of a native build should not impact a subsequent builds ability to receive a live update.

But even though a build can technically receive a live update, this does not mean that the build is technically compatible with the live update. Here’s an example where this could be an issue.

Let’s say that you have a native build for version 1.9.0. You create a new native build with the version of 2.0.0. This new version added a plugin that is not available in 1.9.0. Both versions of the native app are configured to receive live updates from the “Production” channel. A web build is created which utilizes the new plugin added in 2.0.0. This web build is used for the latest deployment to the “Production” channel. Both the 1.9.0 and 2.0.0 versions of the app can receive this live update. However, only 2.0.0 would function properly because 1.9.0 does not have the plugins it needs that the web build specified in the live update.

One way to prevent this issue from occurring is to utilize native versioning in order to specify which web builds can be deployed to a native app depending on the app’s native version. So in the above example, when the web build has been built successfully, you can go to the build logs and then to the native versioning tab to specify that the minimum compatible native version for this web build as 2.0.0. Then the web build can be deployed to the “Production” channel.

So technically, the 2nd deployment is eligible for live updates, but ideally you’re using versioning to avoid potential issues. Here’s an article about native versioning for further reference.

1 Like