Based on the ESP-IDF Versions page, the key difference is:
| Stable Release | Release Branch | |
|---|---|---|
A tagged version such as v5.5.4, v5.5.3, v6.0.2 |
A branch such as release/v5.5, release/v5.4 |
|
| Fully released and officially published | Ongoing maintenance branch for a release series | |
| Fixed snapshot in time | Continues to receive bug fixes before the next bugfix release is tagged | |
| Recommended for production | Useful when you need a fix that has landed after the latest release | |
Example: checkout tag v5.5.4 |
Example: checkout branchrelease/v5.5 |
docs.espressif.com |
How to identify them in Git
Stable release (tag):
git tag -l
Examples:
v5.5.4
v5.5.3
v6.0.2
``
Release branch:
git branch -r
Examples:
origin/release/v5.5
origin/release/v5.4
When to use which?
Use a stable release when:
-
Building a production product.
-
You want a validated version.
-
You need reproducible builds across your team. ESP-IDF explicitly recommends the current stable version for production use. docs.espressif.com
Use a release branch when:
-
A required fix is already merged into the release branch but not yet published in the next bugfix release.
-
You need newer maintenance updates without moving to the master branch. The documentation specifically mentions using a release branch when a needed feature/fix is not yet available in a stable release. docs.espressif.com
Practical example
Assume latest published release is:
v5.5.4
Then:
release/v5.5
may already contain commits that will become:
v5.5.5
in the future.
So:
v5.5.4 <-- stable, frozen
|
+---- release/v5.5 <-- receives bug-fix commits
|
+---- future v5.5.5 tag
For K2600 production firmware, I'd strongly recommend tracking a tagged stable release (for example v5.5.x) rather than a release branch unless you need a specific unreleased fix. docs.espressif.com