Versioning and support policy
Three things carry versions in a Grona mobile integration: the SDK you ship in your app, the operating systems it supports, and the signed configuration it downloads. This page explains how each is versioned and how Grona keeps new configurations safe for apps already in the field. Read it before you upgrade the SDK or plan how long to support an older app release.
SDK versions
Section titled “SDK versions”The Android and iOS SDKs use semantic versioning (MAJOR.MINOR.PATCH). The current version is 0.1.0.
Under semantic versioning, breaking changes from 1.0 onwards come only in major versions.
Release notes for each platform are in the Android SDK changelog and the iOS SDK changelog.
Minimum OS versions
Section titled “Minimum OS versions”| Platform | Minimum version |
|---|---|
| Android | Android 7.0 (API level 24) or later |
| iOS | iOS 16 or later |
Configuration compatibility
Section titled “Configuration compatibility”Grona changes what your app shows by publishing a new signed configuration, not a new SDK. Older SDKs stay in the field for as long as shoppers keep old app versions, so every configuration says which SDKs may apply it.
Schema version
Section titled “Schema version”Each configuration declares a schema. This version uses schema 1, and the SDK accepts only the schema versions it knows.
min_sdk
Section titled “min_sdk”A configuration and each campaign in it can carry a min_sdk, a semantic version:
- Campaign
min_sdk. A campaign that needs a newer SDK sets its ownmin_sdk. Older SDKs treat that campaign as inactive and apply everything else in the configuration, including every kill. This is how Grona ships new features without stranding older apps. - Configuration
min_sdk. The top-levelmin_sdkis the lowest SDK version that may apply the configuration at all. An SDK older than that rejects it and keeps the configuration it already has.
The superseded state
Section titled “The superseded state”An old SDK can be left behind: a validly signed configuration for its workspace arrives with a higher version, but the SDK must reject it because the schema is unknown or the top-level min_sdk is above its version. The SDK cannot read the new configuration, so it cannot tell whether the new one killed a campaign. It therefore marks the configuration it is running as superseded and fails closed:
| Content | Under a superseded configuration |
|---|---|
| Offers | Stop at once, including on screen |
| Banners whose call to action adds to the basket | Stop at once, including on screen |
| Host-rendered decisions | Stop at once (they can add and replace basket lines) |
| Banners without an add action, progress bars and messages | Continue |
The superseded mark survives restarts. It clears once the SDK accepts a configuration at that version or higher, for example after the shopper updates the app. In debug builds, the debug view names the superseding version, and each stopped campaign reads superseded by v<N>.
Grona avoids this state by never raising the top-level min_sdk or schema while older SDKs are in the field, and by using campaign min_sdk instead.
Configuration version
Section titled “Configuration version”Each configuration also has a version number that only ever increases for a workspace. The SDK remembers the highest version it has accepted on the install and refuses anything lower, so an older configuration cannot be replayed. See Signed configuration.
Support windows
Section titled “Support windows”No support windows or end-of-life dates are published for SDK versions before 1.0.