Safeguard
Developer Tools•

Helm chart version vs appVersion: which one do you bump?

In Chart.yaml, version is the chart's own SemVer and appVersion is informational. Which to bump for template changes, app upgrades and shared charts.

Safeguard Security Team
4 min read

Bump version whenever anything in the chart changes, including templates and defaults. Bump appVersion when the application the chart deploys changes. They are independent. Helm uses version for chart identity and treats appVersion as informational only, so a template fix needs a new chart version even when the app is unchanged.

What the Helm docs say

Helm's chart documentation says version must be set on every chart and should follow SemVer 2, though that is not strictly enforced. Non SemVer names are rejected, except forms like x or x.y, which Helm coerces to full SemVer, so v1.2 becomes v1.2.0.

appVersion describes the version of the application the chart contains. The docs state it is unrelated to version, is informational only, and does not affect chart version calculations. Quoting it is recommended.

Which change needs which bump

ChangeversionappVersion
New app release, same templatesPatch or minorYes
Template fix, same appPatchNo
New optional value with safe defaultMinorNo
Rename or remove a valueMajorNo
Change a default that loosens securityMajorNo
Raise kubeVersion floorMajor or minor, state your ruleNo

A chart is shared infrastructure. Its interface is the values file and the objects it renders. Treat changes to either as the thing SemVer tracks.

Why shared charts are strict about this

Consumers pin a chart by version. If you change templates and forget to bump it, two people can have the "same" chart version with different behaviour. For a security default, that is how a quiet regression reaches production.

Consumers should also install by digest where possible, so what they deploy matches what was reviewed. See installing a chart by digest from an OCI registry.

Process steps

  1. Decide whether the change touches templates or values. If yes, version bumps.
  2. Decide whether the application image changed. If yes, update appVersion too.
  3. Classify the bump with the table above and record breaking changes in release notes.
  4. Make a reviewer verify the bump, since a missing one is easy to miss. A required check that compares Chart.yaml in the pull request against the base branch can catch it. This is a convention you build, not a Helm feature.
  5. Publish only from the reviewed commit.

Common mistakes

  • Using appVersion as the chart version. Consumers then cannot tell a template change from an app change.
  • Leaving appVersion unquoted. Helm recommends quoting it.
  • Treating a default change as a patch. Anything that alters rendered objects for existing users can break them.

Related fields

apiVersion: v2 is for charts that require Helm 3 or later. It moved dependencies into Chart.yaml and added the type field. Dependencies are a list of name, version and repository, downloaded by helm dependency update. See bumping a chart dependency and the lock file.

Where Safeguard fits

Safeguard's policies and gates can hold a pull request until required checks and reviewers pass, and its SBOM and dependency scanning covers what your repositories declare. The bump rules are your convention.

Quick check

Does appVersion affect which chart Helm installs?

No. Helm's documentation says it is informational and does not affect chart version calculations.

Must version follow SemVer?

The documentation says it should follow SemVer 2 but is not strictly enforced, and non SemVer names are rejected apart from the x or x.y forms it coerces.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.