#37096·nx

nx release: projectChangelogs.createRelease on a fixed release group creates one remote release per project on the same tag (last body wins)

Author: BurzmalianCreated Sep 17, 2026Updated Sep 17, 2026

Current Behavior

For a fixed release group with changelog.projectChangelogs.createRelease set, the top-level nx release creates the remote release once per project (packages/nx/src/command-line/release/release.ts, still on master):

typescript
for (const project of projectNodes) {
  const changelog = changelogResult.projectChangelogs[project.name];
  ...
  await remoteReleaseClient.createOrUpdateRelease(changelog.releaseVersion, changelog.contents, latestCommit, { dryRun: args.dryRun });
}

All projects in a fixed group share one releaseVersion / tag, so the same release is created and then updated N−1 times. With the default renderer each project's contents differ (project-scoped entries, or "This was a version bump only …" for untouched projects), so the published notes are whichever project is last in projects order.

Measured by instrumenting createOrUpdateRelease on a six-project fixed group: six calls for tag=release/1.38.0 with six distinct bodies (386 / 563 / 1539 / 386 / 961 / 724 bytes). The published body was the last project's 724-byte "version bump only" entry.

Expected Behavior

  • One remote release per fixed group with the group's combined notes, or
  • a validation error / docs note that projectChangelogs.createRelease is only meaningful for independent groups.

workspaceChangelog.createRelease is not an alternative: the workspace changelog is disabled whenever more than one release group exists.

GitHub Repo

No response

Steps to Reproduce

  1. Fixed release group with ≥2 projects; changelog: { projectChangelogs: { createRelease: "github" }, workspaceChangelog: false }.
  2. Commit a feat touching only the first project.
  3. npx nx release with a GitHub token.
  4. The created release's body is the last project's "This was a version bump only …" entry, not the feature.

Workaround: a custom renderer that ignores project and renders the whole group, so all N bodies are identical.

Nx Report

bash
Node           : 24.14.0
OS             : darwin-arm64
Native Target  : aarch64-macos
npm            : 11.9.0

nx                 : 23.1.3
@nx/js             : 23.1.3
@nx/devkit         : 23.1.3
@nx/workspace      : 23.1.3
typescript         : 6.0.3

Package Manager Version

npm 11.9.0

Operating System

  • macOS
  • Linux
  • Windows