# Extension version is semver compliant and updated

- **Pattern:** `ab-001344` (`extension-store-readiness.store-listing.version-semver`)
- **Severity:** high
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001344
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001344)

## Why it matters

Chrome Web Store requires the `version` field to use a dot-separated numeric format (e.g., `1.0.0`). A version string prefixed with `v` or using fewer than three segments is rejected by the store validator. Beyond compliance, a version at `0.0.1` signals an untested pre-release to both reviewers and users, reducing install confidence even after approval. Proper semver also enables the store's update delivery mechanism — malformed versions cause update notifications to fail, leaving installed users on stale builds.

## Severity rationale

High because a malformed version string triggers store validator rejection and breaks the auto-update delivery mechanism for installed users.

## Remediation

Set a proper three-segment numeric version in `manifest.json`. Never prefix with `v`.

```json
{
  "version": "1.0.3"
}
```

Increment correctly: MAJOR for breaking changes, MINOR for new features, PATCH for bug fixes. If your extension is genuinely pre-release, use `0.x.x` intentionally and note it in your store listing description. The Chrome Web Store rejects versions like `1.0`, `v1.0.0`, or non-numeric segments.

## Detection

- **ID:** `version-semver`
- **Severity:** `high`
- **What to look for:** Check the `version` field in `manifest.json` and count the number of dot-separated segments. It should follow semantic versioning (e.g., `1.0.0`, `2.3.1`). Verify the version number makes sense given the extension's maturity (should not be `0.0.1` for a production-ready extension, unless explicitly pre-release).
- **Pass criteria:** The `version` field follows semantic versioning format with at least 3 numeric segments (MAJOR.MINOR.PATCH), uses valid integers, and the version number is reasonable for the extension's release stage. Quote the actual version string found.
- **Fail criteria:** The `version` field is missing, has fewer than 3 segments (e.g., `1.0`), is prefixed (e.g., `v1.0.0`), or unreasonably low for a production extension (e.g., `0.0.1` without indication it's a beta).
- **Skip (N/A) when:** Never — every extension needs a version.
- **Detail on fail:** `"Manifest version is missing"` or `"Version format is '1.0' (should be '1.0.0')"` or `"Version is '0.0.1' but extension appears production-ready"`.
- **Remediation:** Use semantic versioning in your manifest. Increment properly:

  ```json
  {
    "version": "1.0.3"
  }
  ```

  - MAJOR: Incompatible API changes or major feature rewrites
  - MINOR: New features, backward compatible
  - PATCH: Bug fixes, minor improvements

## External references

- external chrome-cws-versioning — https://developer.chrome.com/docs/extensions/reference/manifest/version/

Taxons: regulatory-conformance

HTML version: https://auditbuffet.com/patterns/ab-001344
