nx release: dependent traversal continues through an excluded dependent, pulls a fixed release group in partially, then fails with "no current version resolved"
Author: BurzmalianCreated Sep 17, 2026Updated Sep 17, 2026
Current Behavior
Two fixed release groups, apps depends on libs. libs has updateDependents: "never"; apps is at the default ("always"), has no tag yet and fallbackCurrentVersionResolver: "disk".
nx release --group libs --dry-run --verbose fails:
app-core Resolved the specifier as "minor" using git history and the conventional commits standard
app-api ⚠️ Unable to resolve the current version from git tags using pattern "apps/{version}". Falling back to the version 0.0.0 in manifest: packages/app-api/package.json
NX There was no current version resolved for project "app-core", but it was configured to be bumped via a semver relative keyword "minor", derived from conventional commits dataapp-core is bumped but never resolved; app-api shows the disk fallback itself works.
Cause (packages/nx/src/command-line/release/utils/release-graph.ts, findDependentsToProcess, still on master):
app-coredepends onlib-a.libssaysnever, soshouldIncludeDependentis false andapp-coreis not added — butnextLevel.push(dep)runs regardless, so traversal continues through it.app-api/app-webdepend onapp-core, whose group saysalways, so they are added. Theappsgroup is appended withreleaseGroupToFilteredProjects = {app-api, app-web}.resolveCurrentVersionsForProjectsskipsapp-core(not inallProjectsToProcess), but fixed-group processing versions every member, soapp-coreis bumped withcurrentVersionundefined.
Expected Behavior
- Don't keep traversing through a dependent that was excluded, or
- when a fixed group is pulled in via dependents, include and resolve all of its members.
A fixed group should never be processed partially ("all projects in the group are versioned together").
GitHub Repo
No response (inline reproduction below; can push a repo on request)
Steps to Reproduce
- npm workspace with four packages:
lib-a(1.0.0) and privateapp-core,app-api,app-web(0.0.0). Dependencies:app-core → lib-a,app-api → app-core,app-web → app-core, lib-a. Tagrelease/1.0.0on the first commit, noapps/*tag. nx.json:{ "release": { "groups": { "libs": { "projects": ["lib-a"], "projectsRelationship": "fixed", "releaseTag": { "pattern": "release/{version}" }, "version": { "conventionalCommits": true, "updateDependents": "never" } }, "apps": { "projects": ["app-core", "app-api", "app-web"], "projectsRelationship": "fixed", "releaseTag": { "pattern": "apps/{version}" }, "version": { "conventionalCommits": true, "fallbackCurrentVersionResolver": "disk" } } } } }- One
feat(lib-a): …commit touchingpackages/lib-aand onefeat(app-core): …touchingpackages/app-core. npx nx release --group libs --dry-run --verbose
Workaround: updateDependents: "never" (or "auto") on the apps group.
Nx Report
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.3Package Manager Version
npm 11.9.0
Operating System
- macOS
- Linux
- Windows
Source: nrwl/nx