22.0.0 (2025-10-22)
🚀 Features
- ⚠️ bundling: change default useLegacyTypescriptPlugin to false for v22 (#32754)
- bundling: add excludeFromExternal option to esbuild executor (#32980)
- core: prompt for ai agent files on nx init (#32889)
- ⚠️ core: remove
NX_DISABLE_DB
environment variable (#32887) - ⚠️ core: remove CreateNodes v1 types for Nx 22 (#32951)
- core: add --check=all flag to configure-ai-agents (#32968)
- core: expose registerProjectGraphRecomputationListener from daemon client (#33005)
- core: add support for pnpm catalogs (#32978, #30035, #29772)
- core: enhance spinner handling and add spinner to inferred conversion (#33031)
- devkit: bump compatibility to Nx 21 - 23 (6b86c33c30)
- dotnet: add initial draft of .NET plugin (#32869)
- ⚠️ js: remove the experimental and deprecated inlining feature from the
tsc
andswc
executors (#32783) - maven: introduce maven plugin (#32947)
- ⚠️ misc: remove deprecated
decorate-cli
script and stop sorting tsconfig paths by default (#32781) - misc: remove migrations prior to v20 (#32904)
- module-federation: support TS Soln and Package Manager workspaces paradigms (#33056)
- nest: ensure dependencies are added to project's package.json #32548 (#32986, #32548)
- nx-cloud: update description on nx login and logout (#31344)
- nx-dev: add v22 to version picker (#33110)
- react: remove support for non-isolated webpack config in
ponentTestingPreset
(#32787) - react: keep deprecated @nx/react/bundle-rollup module since there is not a replacement when using @nx/rollup:rollup executor (#32821)
- ⚠️ release: match nx affected behavior to determine relevant conventional commits (#32915)
- ⚠️ release: remove deprecated legacy versioning (#32888)
- ⚠️ release: switch defaults for fixed release group tag pattern, preserve matching dependency ranges and strictPreid (#32878)
- ⚠️ release: set preserveMatchingDependencyRanges to true by default (#32983)
- release: add releaseTagPatternPreferDockerVersion to specify version to use for git tag #32900 (#32972, #32900)
- ⚠️ release: release graph aware filtering, updateDependents can now be "always" (#32971)
- ⚠️ release: set updateDependents to always by default (#33029)
- ⚠️ release: refactor releaseTag* properties to a releaseTag object (#33020)
- release: allow changelog.renderer to be set to an implementation directly (#33095)
- release: new replaceExistingContents CLI and API option for changelog (#33096)
- release: allow ignoring nx.json release config with ReleaseClient (#33099)
- release: allow conventional commit style aliases in version plan release types (#33167)
- ⚠️ rspack: remove application generator in favour of framework-specific options (#32755)
- ⚠️ rspack: remove deprecated deleteOutputPath and sassImplementation options (#32756)
- storybook: add watch-deps and build-deps targets (deb10f2818)
- vite: add buildable libs support for vitest (#32973)
- vue: migrate @vitejs/plugin-vue to 6.0.1 (#33097)
- ⚠️ webpack: remove deprecated deleteOutputPath and sassImplementation options (#32828)
🩹 Fixes
- angular: improve message for unsupported typescript project references (#33148)
- angular: ensure ngpackagr tsconfig options set correctly based on version #33081 (#33150, #33081)
- angular-rspack: do not parse json with babel #32690 (#32966, #32690)
- angular-rspack: ensure root node_modules included when resolving packages (#33144, #33026)
- angular-rspack: bubble errors correctly (#33183)
- bundling: ensure tsconfig options are respected with rollup-typescript-plugin (#32816)
- bundling: postcss-cli-resources should handle relative deploy url #32714 (#32762, #32714)
- ⚠️ core: remove deprecated simpleName option from library generators (#32716)
- core: improve provenance error with custom registry information (#32903)
- core: optimize task hashing with BFS and performance logging (#32911)
- core: tweak configure-ai-agents prompt (#32914)
- core: ensure nx is published with the correct dependency version for the native packages (#32928, #32898)
- core: upgrade axios to 1.12.0 to address CVE-2025-58754 (#32712)
- core: repair repo root on setupAiAgents in nx init (#32984)
- core: remove requirement to be in a package manager workspace (#32992)
- core: remove duplicated "Running" string from tui title (#32991)
- core: display bottom corner indicator of tui in progress section correctly (#32985)
- core: temporarily disable tui for run-one (#33048)
- core: ensure --help works properly with infix notation (#32662)
- core: improve db connection initialization and error messages (#33054, #28640, #30856, #32894)
- core: prioritize in-progress tasks section visibility in tui (#33053)
- core: enhance tui summary output to fix misc issues (#33057)
- core: format catalog definition files when appropriate in
nx migrate
(#33105) - core: allow prerelease versions of nx to be used with devkit (#33123)
- core: restore migrations used by
nx repair
(#33124) - core: avoid changing existing project name if a project.json file is added to a project (#33114)
- core: do not remove wal files manually for existing databases (#33143)
- core: do not print flaky tasks guidance when nx cloud is already enabled (#33149)
- core: add wrappers for start and stop agent nx-cloud commands (#33140)
- core: revert changes to the db connection initialization (#33156)
- core: store reason when marking daemon as disabled (#33172)
- dotnet: fixup various issues + missing functionality (#33132)
- graph: prevent content from overflowing in the PDV component (#33120)
- js: temporarily hash all external dependencies for tasks inferred by the
@nx/js/typescript
plugin (#32912) - js: ensure node execute completes before exit (#32629, #32385, #32356)
- linter: install correct deps in eslint convert to flat config generator (#33078)
- ⚠️ misc: don't set legacy-peer-deps by default (#33014, #22066, #29537)
- module-federation: ensure angular rspack module federation supports live reload (#33137)
- nextjs: remove whitespace for newly generated server component (1d687c4994)
- nextjs: update entrypoints for buildable library with vite to include server entry #31457 (#32977, #31457)
- nx-cloud: update broken documentation links to AI features (0149fac877)
- nx-dev: improve default zoom level of graph nodes in docs (#32910)
- nx-dev: provide message to check previous docs w/ empty migrations (#32919)
- nx-dev: watch for theme changes for project/task graph components (#32885)
- nx-dev: update credit pricing link to new docs page (#32899)
- nx-dev: update nextjs internal-link-checker to include astro urls (#33045)
- nx-dev: respect NX_DEV_URL in sitemap checker (#33058)
- nx-dev: handle null github data (#33061)
- nx-dev: add docker to build-tools tech section (#33164)
- react: dynamic module federation should not initialize remoteUrlDefinitions to empty object (#33059, #27927, #33055, #27793, #27842)
- release: ensure schema for release.groups is correct (#33007)
- release: skip filtered out groups when processing (#33044)
- ⚠️ release: ensure multilines in breaking changes are rendered by changelog renderer (#33070, #33014)
- release: replace local dependency protocols of unchanged dependencies #30995 (#33151, #30995)
- ⚠️ release: better respect version plan file contents for changelog entries (#33166)
- release: breaking change contents extraction (#33184)
- remix: @nx/remix/package.json export typo fixed #32810 (#32940, #32810)
- remix: ensure supported version of vite is used (#33089)
- repo: fix pr releases to not depend on a broken range (#32993)
- testing: show warning instead of error when no blob outputs found during merge (#33022)
- vite: ensure tsconfig file is resolved from workspaceRoot #31987 (#32990, #31987)
- vite: enable build watch mode by default for preview (#31604, #31623)
- vite: add logic to prevent overwriting generated package.json (#30705, #30312)
⚠️ Breaking Changes
-
release: config.conventionalCommitsConfig for
DefaultChangelogRenderer
is no longer nullable. (#33166) -
misc: The
--legacy-peer-deps
behavior is no longer forced. (#33014, #22066, #29537)If you need it, configure your package manager to enforce it.
-
release: This is a breaking change in the preferred configuration structure. Existing configurations will continue to work through the migration period, but users should update to the new nested format. (#33020)
-
release: Users who relied on the previous 'auto' behavior can (#33029)
explicitly set
updateDependents: 'auto'
in their nx.json:{ "release": { "version": { "updateDependents": "auto
-
release: The signature of
init()
onVersionActions
has (#32971)changed, it no longer accepts a second argument. Validation of the
manifest files, if any, now takes place via a separate method
(validate()
) call after construction of the newReleaseGraph
. For
the most part, users do not need customVersionActions
so only a small
percentage of consumers should be impacted.
Fixes #31273 -
⚠️ core: remove CreateNodes v1 types for Nx 22 (#32951)
-
⚠️ release: set preserveMatchingDependencyRanges to true by default (#32983)
-
⚠️ release: switch defaults for fixed release group tag pattern, preserve matching dependency ranges and strictPreid (#32878)
-
⚠️ release: remove deprecated legacy versioning (#32888)
-
release: More files are now being used to determine relevant (#32915)
commits, meaning there is higher chance for projects to receive version
bumps -
misc: The long-deprecated
decorate-cli
script has been (#32781)removed.
BREAKING CHANGE: Thenx format
command and generators no longer
default to sorting TypeScript path mappings. To keep the previous
behavior, pass the--sort-root-tsconfig-paths
flag to the command or
setNX_FORMAT_SORT_TSCONFIG_PATHS=true
. -
⚠️ core: remove
NX_DISABLE_DB
environment variable (#32887) -
js: The experimental inlining feature in the
@nx/js:tsc
(#32783)and
@nx/js:swc
executors was removed. A migration will remove the
related options (external
andexternalBuildTargets
). Still, if you
use or rely on the feature, you need to make your dependencies buildable
or use a different build tool with bundling capabilities. -
⚠️ webpack: remove deprecated deleteOutputPath and sassImplementation options (#32828)
-
⚠️ rspack: remove deprecated deleteOutputPath and sassImplementation options (#32756)
-
⚠️ rspack: remove application generator in favour of framework-specific options (#32755)
-
⚠️ bundling: change default useLegacyTypescriptPlugin to false for v22 (#32754)
-
core: simpleName option is no longer supported in library generators (#32716)
❤️ Thank You
- Andrew Ovens @aovens-quantifi
- Caleb Ukle
- Claude
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- David Scourfield @daiscog
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Juri @juristr
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- MaxKless @MaxKless
- Mike Cebrian
- Miroslav Jonaš @meeroslav
- Mischa Fischer
- Nikola Kalinov
- Shai Reznik @shairez
- Terry Mun-Andersen @terrymun
- Vijay Ramakrishnan
- Zoran Kokeza