Releases
21.2.0
21.2.0 (2025-06-12)
🚀 Features
angular: add support for rspack module federation (#31231 )
angular: support angular cli v20.0.0-rc.3 (#30715 )
angular: update nx init
legacy integrated migration for angular to handle angular v17 (#31352 )
⚠️ angular: support angular v20 (#31369 )
angular: update angular eslint packages to v20 (#31489 )
bundling: use tsconfig.lib.json for rollup.config.ts (#30453 )
gradle: exclude dependsOn tasks (#30913 )
misc: enhance IDE integration with Nx Console auto-installation and improved logging (#31462 )
nest: Update nest version to 11 (#31393 , #30188 )
nx-dev: AI landing page (#31310 )
nx-dev: update hero tagline (41387af458 )
nx-dev: add rss and atom feeds (ee7dbf9c3a )
repo: enhance Claude Code workflow and settings (#31405 , #31380 )
repo: add golden list of projects to our Nightly CI (#31414 )
repo: add ndcunningham to Claude workflow authorized users (#31479 )
repo: migrate to pnpm 10 (#31427 )
⚠️ storybook: support storybook 9 (#31172 )
🩹 Fixes
add .ts extension to nx-release script reference in project.json (#31483 )
angular: update tsconfig files generation to better support angular v20 (#31357 )
angular: keep extra target metadata when needed in convert-to-rspack
generator (#31309 )
angular: generate correct output for buildable libraries on windows (#31437 , #31436 )
angular: optimize ng-packagr-lite watch mode file writing (#31434 , #31033 )
bundling: do not normalize tsconfig path for Windows with rollup (#30567 )
bundling: correctly handle .cjs.js .mjs.js in rollup for type definitions (#29366 , #29308 )
core: handle killing child processes of continuous tasks on Windows (#31296 , #31235 )
core: do not hide task list with run-many if there is only 1 task (#31324 )
core: generate workspace file readme typo (#31341 , #31335 )
core: fix broken nx-cloud url shortening logic (#31283 )
core: infer codex environment and use default tasks runner (#31359 )
core: use next available port when the port for nx graph is in use (#31365 , #30915 )
core: handle run-commands targets with no commands (#31364 , #31345 )
core: implement missing --print flag for nx graph command (#31406 , #30255 )
core: update getTouchedProjectsFromLockFile to handle deleted/moved projects correctly (#31361 )
core: ensure nx init implementation for angular correctly resolves @angular/core
(#31430 , #31291 )
core: print installation logs when installing latest version during nx migrate
and using --verbose
(#31432 )
core: use ts-node
option from tsconfig files when creating transpiler (#31469 )
core: Update macos pipelines configuration (#31476 )
core: scope typescript resolution cache correctly when processing the graph (#31455 , #31223 )
core: remove tabs from local workspace plugins section in nx report (#31490 )
core: handle external node without default version when generating a pnpm pruned lockfile (#31503 , #28627 )
core: add conditional compilation for WASM build compatibility (#31491 )
core: default to 'run' target when only project is specified (#31452 )
core: remove log_error function and standardize logging (#31515 )
core: scope native logging to nx module by default (#31530 )
core: simplify Nx Console installation prompt (#31532 )
core: update Node.js version to 22.16.0 since the rust-docker-lts version is not updated (#31547 )
gradle: change run and bootRun to cacheable false (#31287 )
gradle: add migration script to check gradle plugin version (#31304 )
gradle: fix gradle test running gaps (#31313 )
js: write typescript plugin cache files atomically (#31390 , #30239 , #31187 )
js: enable end-to-end tests for Vue application in dev mode (#31415 )
js: enhance TypeScript transformer loading to support function-based plugins (#31443 , #31411 )
linter: speed up inferred plugin node processing (#31281 )
linter: handle ng-package.json
file with no lib.entryFile
in @nx/enforce-module-boundaries
rule (#31360 )
linter: fix line endings handling in '@nx/eslint:convert-to-flat-config' generator (#31043 )
linter: infer lint tasks with inputs using {workspaceRoot}
to support nested projects (#31488 , #31264 )
linter: update allowed ESLint config file extensions (#30127 )
module-federation: use runtimeChunk false when not in dev mode (#31256 , #30637 , #31114 )
module-federation: enhance remote entry handling with query parameters in paths (#30615 , #30602 )
nextjs: add extension alias support for handling ESM libs (#31323 , #30714 )
node: add project name sanitization for Docker commands. (#31461 , #31421 )
node: esbuild breaks and does not cleanup (#30469 )
nx-dev: only track analytics in prod envs (#31367 )
react: add missing dependency when generating a react lib that has testing (#31308 )
react: routing option to library generator (#31328 , #30721 )
react: allow for buildTargetWebpack to have an executor of @nx/webpack:webpack or @nx/rspack:rspack (#30253 , #30235 )
release: sort groups topologically bottom-up and fix typo to allow multi-level group dependencies (#31374 )
release: changelog filtering logic for the project commits (#31449 )
remix: update setup-tailwind generator to correct import statements (#30599 , #30343 )
repo: MacOS failures in our E2E Tests (#31528 )
rspack: fix issue with optimization options in rspack config (#31337 , #31268 , #30292 )
rspack: ensure nest applications generated correctly #31204 (#31424 , #31204 )
rspack: Add missing return for rspack composoable plugin (#31372 )
rspack: must run type check with @nx/rspack:rspack when skipTypeChecking is false (#31027 , #31026 )
storybook: improve speed of storybook plugin (#31277 , #22953 , #31276 )
vite: bump @analogjs/vite-plugin-angular to 1.16.x (#31317 )
vite: add ajv dependency for non-pnpm package managers (#31413 )
vite: resolve project-specific tsconfig before workspace fallback (#31423 , #28945 )
vite: NxReporter compatible with Vitest ≥0.29 (#31425 )
webpack: add support for retrieving all transitive non-buildable dependencies (#31343 )
webpack: handle package.json exports field for non-buildable libs (#31444 )
⚠️ Breaking Changes
storybook: Remove deprecated generators:
angular: Support for Angular v17 was dropped.
❤️ Thank You
You can’t perform that action at this time.