What is Semantic Versioning (SemVer)?

Semantic Versioning (SemVer) is a widely adopted standard for naming software versions. It follows this format:

1
MAJOR.MINOR.PATCH

For example:

1
v1.0.0

Each part of the version number has a specific meaning:

Examples of Stable Releases:

Version Description
v1.0.0 First stable release
v1.1.0 Adds new features, backward compatible
v1.1.1 Bug fix release, backward compatible
v2.0.0 Breaking changes introduced

Pre-release Versions (Testing Versions)

Before an official stable release, you may want to publish a pre-release version for testing purposes. These versions contain experimental features or improvements that need validation.

Naming Format for Pre-release Versions:

1
MAJOR.MINOR.PATCH-identifier.version
Identifier Meaning
-alpha Internal testing version (unstable)
-beta Public testing version (feature-complete but may contain bugs)
-rc Release Candidate (nearly stable, final testing)
-snapshot Nightly or in-development snapshot

Examples of Pre-release Versions:

Version Description
v1.0.0-alpha.1 First alpha version (internal testing)
v1.0.0-beta.2 Second beta version (public testing)
v1.0.0-rc.1 First release candidate
v1.0.0 Final stable version

Other Naming Conventions

In some cases, you might want to add metadata or build information to the version number.

Version Description
v1.0.0+build20240205 Includes build metadata (doesn’t affect version sorting)
v1.0.0-dev Development version
v1.0.0-nightly Nightly build version