📄️ Why Versioning
RUF versioning exists to solve a fundamental tension in mobile development: the server deploys continuously, but client apps do not.
📄️ Versioning Formats
RUF supports two version formats. The format is declared once at the root of the spec YAML and applies consistently across all constructs in the application.
📄️ SessionMeta Versioning
SessionMeta carries the application's mutable state across the session lifetime. As the application evolves, the shape of this state may need to change — new fields added, old ones removed, types updated. SessionMeta versioning handles the migration of stored meta from an older shape to the current one.
📄️ Constructs Versioning
Components, actions, and metrics can each declare version-specific variants using a versions: map. The top-level construct definition is always the latest — the variant served to clients on the current version. Older client versions receive the variant declared for their version range.