# What changed in commit-and-tag-version

> 19 changes in commit-and-tag-version 12 to 13 from its official release notes, upgrade guides and advisories: 4 breaking, 4 new APIs and options. Each one cited. Sources checked 2026-10-20. HTML: https://unstale.sh/npm/commit-and-tag-version/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## commit-and-tag-version 13

### Breaking changes

- The package is now pure ESM; users of require need to access the default export. (13.0.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.0.0)
- Modernized conventional-changelog dependencies introduce breaking changes for users with custom presets. (13.0.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.0.0)
- The Node minimum is raised to 22. (13.0.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.0.0)
- The minimum engine version is raised to 20.19. (13.0.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.0.0)

### New APIs and options

- Template helpers are exposed through a package subpath export. (13.3.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.3.0)
- Adds support for resolving versions in multi-module Maven projects. (13.2.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.2.0)
- Configuration files can now use ESM. (13.1.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.1.0)

### Behavior and default changes

- Each prerelease changelog section lists changes since the previous prerelease with the same name, rather than repeating all changes since the last stable release. Stable releases and the first prerelease with a new name still list everything since the last… (13.2.2) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.2.2)

### Fixes and other changes

- Parser and writer options from conventional-changelog 7+ presets are now accepted. (13.2.2) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.2.2)
- Restores a blank line between release notes sections. (13.2.1) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.2.1)
- Documents and supports custom writer render functions. (13.2.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.2.0)
- YAML handling now preserves long scalar lines. (13.1.2) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.1.2)
- Fixes prereleases being calculated from the wrong base. (13.1.1) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.1.1)
- Comments in pom.xml are preserved. (13.0.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v13.0.0)

## commit-and-tag-version 12

### New APIs and options

- Adds the --noBumpWhenEmptyChanges flag. (12.7.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v12.7.0)

### Performance

- XML parsing and building now use fast-xml-parser, substantially reducing the bundle size. (12.6.1) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v12.6.1)

### Fixes and other changes

- Preserves XML attributes when updating pom.xml files, preventing existing attributes from being lost. (12.7.2) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v12.7.2)
- Fixes the prerelease flag so it works with Gradle files. (12.7.0) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v12.7.0)
- Prereleases now auto-increment when the tag already exists. (12.6.1) — [release notes](https://github.com/absolute-version/commit-and-tag-version/releases/tag/v12.6.1)
