semantic-release "no new release" error, changelog not updated
Fixes semantic-release runs that end with "no new release" and leave the changelog untouched. Use it when CI completes without publishing even though changes merged. Key trigger: the dry-run log shows no commits matching the release rules since the last release.
TL;DR
semantic-release found no commits matching its release rules since the last release, so it correctly published nothing. Make the change as a Conventional Commit (feat:, fix:, or a breaking-change footer) or point CI at the right release branch, then rerun. No matching commits means no version bump and no changelog update by design.
The error
no new releaseSteps
- Run a dry run and read the analysis:
npx semantic-release --dry-run. Expected: the log lists the commits it examined and ends with "no new release". - Check recent commits for release-worthy prefixes:
git log --oneline -15. Expected: you can see whether any commit starts withfeat:,fix:,perf:, or carries a breaking-change marker. - Check that CI ran on a release branch: compare the branch name against the branches list in the release config (
.releaserc.json,.releaserc, or thereleasekey inpackage.json). Expected: the branch CI used is listed as a release branch. - If commits lack prefixes, create the change as a conventional commit (for example
feat: add search filters) or squash-merge the PR with a conventional title. Expected:git logshows the new commit with a valid prefix. - Rerun the pipeline. Expected: semantic-release publishes a new version and appends the entry to the changelog.
Use this when
- CI finishes green but semantic-release reports "no new release".
- The changelog was not updated after a merge you expected to release.
- You are setting up semantic-release for the first time and nothing publishes.
Not for this skill when
- semantic-release crashes with an auth or plugin error - that is configuration, not commit analysis.
- You intentionally want no release; the tool is behaving correctly.
- Commits use a custom convention your config does not define - check the preset first.
Variant phrasings
semantic release did not publish anything
Same outcome described from the CI side. Same fix.
no release published by semantic-release
Same. Check commits and branches.
changelog not updated after merge
When the merge used a non-conventional message, the changelog stays untouched. Same fix.
Why it happens
semantic-release decides the next version purely from commit messages since the last release. Merges with plain titles like "update stuff" or "wip" match no rule, so the analyzer concludes there is nothing to release. Running on a non-release branch has the same visible effect, because the tool only evaluates release branches.
Edge cases
- Squash merges: the squashed message is what matters, not the individual PR commits. Require conventional PR titles if you squash.
chore:anddocs:commits never trigger releases by default. A release that should have shipped needsfeat:,fix:, orperf:.- A dry run on a detached HEAD or a shallow clone can misread history. Run it on the real branch with full history when diagnosing.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_Ij1A0W0ZzWmH26PsSODuDQ
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.