Embed Widgets: Versioning & Breaking Changes
Semver discipline, loader URL pinning, breaking-change deprecation policy, and how to subscribe to release announcements.
Semantic versioning#
We follow Semantic Versioning. The major / minor / patch contract:
1.0.0 (all eight widgets shipped; the public API surface is frozen). Within the 1.x line, minor releases are additive and backward-compatible, so a caret range (^1.0.0) is safe. Breaking changes ship only in a new major, and only after the deprecation policy below.Loader URL pinning#
The loader URL is pinned at /v1/ per FR-VER-1:
Within v1, the loader stays backward-compatible. When we ship v2, customers who haven't opted in keep getting the v1 loader. Opt-in to v2 by swapping the URL:
What counts as a breaking change#
A breaking change is anything that could cause customer code that worked on the previous version to stop working:
90-day deprecation period#
Now that 1.0 has shipped, breaking changes follow this policy:
- Day 0 — We announce the breaking change in CHANGELOG.md, the release notes, the docs portal, and (optionally) email. The deprecated prop / event keeps working with a runtime console warning.
- Day 0-90 — Customers update their code at their own pace. The deprecated path keeps working.
- Day 90+ — A new major version ships removing the deprecated path. The previous major continues to receive critical security patches for at least 12 months.
Subscribing to release announcements#
Three channels to stay informed:
- CHANGELOG.md in the package — view on GitHub. Watch the repo for notifications on every release.
- npm release notes — visible on the package page at npmjs.com/package/@aforoai/storefront-widgets.
- Aforo changelog at aforo.ai/changelog — major releases also get a write-up here with migration guidance.
Pinning recommendations
On the 1.x line, use a caret range (^1.0.0) so you pick up non-breaking minor and patch updates automatically — breaking changes only ever ship in a new major (2.0.0), and only after the deprecation period above. If you need a fully reproducible build, pin an exact version (e.g. 1.0.1) and bump it deliberately.