This article explains how to ensure version compatibility between Bundle and Lynx Engine, and how to handle challenges that come with Lynx Engine version evolution.
A simple way to ensure compatibility is to always build the Bundle with the Host application from source.
However, in a complex project, the relationship between Bundle and Lynx Engine is not one-to-one:
A Bundle might run in applications with different Lynx Engine versions
An application can run multiple Bundles maintained by different teams
In this case, you need to set the engineVersion
to ensure compatibility.
When the Bundle's engineVersion
is greater than the Lynx Engine version, it will not be able to run.
For example: a Bundle with engineVersion
3.3 can run on Lynx Engine 3.3 and later versions, but cannot run on 3.2.
When a Bundle needs to run on multiple Lynx Engine versions, its engineVersion
must be lower than all Lynx Engine versions.
When running multiple Bundles on a single Lynx Engine version, each Bundle can set different engineVersion
s, but none can be greater than the Lynx Engine version.
If you try to run a Bundle on a lower version of the Lynx Engine, a Fatal level error with code 10204 will occur, and the rendering process will stop. This mechanism prevents potential runtime issues caused by version incompatibility.
The engineVersion
is a string containing two version numbers, and you can specify it in your configuration file:
As Lynx Engine evolves, new features are added and some features may be deprecated. Their compatibility is also managed by engineVersion
.
Some new features will not affect existing Bundles, but if engineVersion
is lower than the version where they were introduced, runtime detection is needed, for example:
While some new features cannot run on lower versions of the Lynx Engine at all, so they will only be enabled when engineVersion
is greater than or equal to the corresponding version.
Some features may be deprecated during iteration, and their behavior may change when a higher engineVersion
is set.
engineVersion
, there will be no compatibility issuesengineVersion
are upgraded, you need to read the CHANGELOG to ensure there are no unexpected behavior changesLynx provides compatibility tables for each API, built-in component, and CSS property. Here's an example for the gap
property:
LCD tables only load in the browser