Skip to main content

Versioning

Use one product release version across the app and a monotonic build number for each store artifact. Also retain the exact Git revision and build inputs so support can identify the running bytes.

IdentityPurposeExample
Product versionHuman-facing release2.4.0
Platform build numberStore/sideload ordering24017
Git revisionExact sourcea1b2c3d
Environment and app profileResolved behaviorprod, brand-b
Artifact checksumExact released bytesSHA-256

Platform Sources

In the current sample-project layout:

  • Roku reads major_version, minor_version, and build_version from platforms/roku/src/manifest.
  • iOS and Apple TV read MARKETING_VERSION and CURRENT_PROJECT_VERSION from their files under platforms/native/apple/.
  • Android and Android TV read android.versionName and android.versionCode from platforms/native/android/app.properties.
  • Web has no store-defined build number; expose a project-owned release record in the static artifact if support needs runtime identification.

The shared package.json version may identify the repository or sample rather than a customer release. Do not make it the product version unless the project explicitly defines that contract.

Runtime Build Identity

If the app exposes version information in a support screen or logs, generate one sanitized runtime file during the release build. Include only non-secret data such as product version, build number, Git revision, environment, app profile, and build timestamp.

assets/meta/build-info.json is a reasonable project convention, not a Hosanna-required filename. Add it to each target’s asset-copy rules and test that production packages include the intended file.

Release Rules

  1. Allocate product and platform versions before building.
  2. Stamp every platform from the same release record.
  3. Build and test immutable artifacts.
  4. Record checksums, config-source manifest, and toolchain versions.
  5. Tag the source only when the tested artifacts are accepted.
  6. Never reuse a platform build number for different bytes.
Talk to us