Release Policy
How SDK packages are versioned and released.
Release Policy
SDK package releases
SDK packages are published from main using Changesets.
High-level flow:
- Changesets are added for package changes.
- CI validates formatting, linting, type checks, tests, and build.
- Changesets action creates a release PR or publishes packages.
- Tags are pushed after successful publish.
Primary workflow: .github/workflows/release.yml
The SDK workflow only watches SDK package directories. The CLI package is released separately and is ignored by Changesets.
CLI releases
The @better-webhook/cli package is released from annotated git tags, not Changesets.
Tag format:
- Beta releases:
cli/v2.0.0-beta.2 - Stable releases:
cli/v2.0.0
High-level flow:
- Merge the CLI release commit to
main. - Create an annotated
cli/v*tag from the merged commit. - Push the tag to trigger
.github/workflows/cli-release.yml. - GoReleaser builds macOS, Linux, and Windows archives and publishes GitHub Release checksums.
- Native npm platform packages publish first, then the
@better-webhook/cliwrapper publishes.
Prerelease versions publish to the npm beta dist-tag and create GitHub prereleases. Stable versions publish to the npm latest dist-tag and create non-prerelease GitHub Releases.
Maintainers can run .github/workflows/cli-release-dry-run.yml manually to validate GoReleaser packaging and npm pack output without publishing.
Versioning expectations
- Use semantic versioning for SDK packages.
- Breaking changes should be clearly indicated in release notes.
- Patch versions should remain backward compatible.
Where to find release artifacts
- SDK packages: npm (
@better-webhook/*) - CLI package: npm (
@better-webhook/cli) - CLI direct downloads: GitHub Releases