The upgrade that quietly breaks yesterday's app

Update the OS or a core library and a native app you shipped a year ago can simply stop working. An API is deprecated, a permission model changes, a rendering path is removed — and the build that was fine in production now crashes or refuses to launch. The platform moved on, and your old program did not get the memo.

A mini-program runtime takes the opposite promise. It is versioned, and the contract is that a program shipped against an older base library keeps opening on newer runtimes. The runtime carries the compatibility surface; the program does not have to chase every platform change to stay alive.

What versioned compatibility actually is

The runtime exposes a base library with a major.minor.patch version, and the platform guarantees that newer runtimes still run programs built against older base libraries. WeChat documents this explicitly: new features are gated by minimum base-library version, and developers check compatibility with wx.canIUse or wx.getAppBaseInfo rather than assuming a feature exists. Alipay+'s base library overview and Tuya's changelog state the same principle — basic libraries "maintain backward compatibility" as they add capabilities. WeChat even ships a current and a previous stable base library inside each client release, so older programs keep initializing.

For native apps, none of this is guaranteed: an OS upgrade is a breaking change that lands on users whether the app was ready or not.

Where the gap shows up

StepNative appMini-program runtime (versioned)
New platform versionCan break old buildsOld base library still runs
Deprecated APICrash or blocked launchFeature-detected, graceful
Compatibility checkPer-device, manualcanIUse / version compare
Stability guaranteeNone at OS levelBackward-compatible base library
Program lifetimeTied to OS supportTied to runtime contract

The result is that a published program does not have an expiry date tied to the next platform release. It keeps opening until the developer chooses to drop support.

Why a contract beats hope

A versioned runtime means a developer can ship once and trust that the program keeps running as the platform evolves, with feature detection for anything newer. It also means the base-library floor is a setting, not a gamble: developers pick the minimum version and the runtime handles the rest. The same program stays alive across host upgrades, on every host that honors the base-library contract.

How Cross Mini App applies it

Cross Mini App gives programs a versioned runtime with an explicit compatibility contract: a program built against an older base library keeps opening on newer runtimes, with feature detection for what is new. You ship a program; the runtime guarantees it still launches after the next upgrade. You stop re-shipping just to keep yesterday's build alive.

That is the difference between an app that expires with the OS and a program the runtime promises to keep open.

Sources