1. Home
  2. Documentation
  3. Release Management

Release Management

Semantic Versioning

Freemius supports a variation of Semantic Versioning 2.0.0:
major.minor[.patch[-pre_major[.pre_minor[.pre_patch]]]][+metadata]

Given a version number major.minor.patch, increment the:

  • major version when you make incompatible API changes,
  • minor version when you add functionality in a backwards compatible manner, and
  • patch version when you make backwards compatible bug fixes.
  • A pre-release version may be denoted by appending a hyphen (-) and a series of dot separated identifiers immediately following the patch version. Identifiers must comprise only ASCII alphanumerics and hyphens [0-9A-Za-z-]. Identifiers must not be empty. Numeric identifiers must not include leading zeroes. Pre-release versions have a lower precedence than the associated normal version. A pre-release version indicates that the version is unstable and might not satisfy the intended compatibility requirements as denoted by its associated normal version. Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92.
  • Build metadata must comprise only ASCII alphanumerics and hyphens [0-9A-Za-z-].

Valid version examples:
* 1.2.7-alpha
* 1.2.7-alpha.1
* 1.2.7-beta
* 1.2.7-rc.2
* 1.2.7
* 1.2.7.3
* 1.2.8-rc.1+20210411

Important versions hirerachy:
* 1.2-beta < 1.2 < 1.2.0 < 1.2.1 < 1.2.2 < 1.2.10 < 1.2.10.1
* 1.2.7-alpha < 1.2.7-alpha.1 < 1.2.7-beta < 1.2.7-rc.2 < 1.2.7
* 1.2+20210411 == 1.2+whatever
* 1.2.7-RC < 1.2.7.rc (ASCII(‘UPPERCASE’) < ASCII(‘lowercase’))

Articles