The Workspace plugin contains executors and generators that are useful for any Nx workspace. It should be present in every Nx workspace and other plugins build on it.
Last release today
26 Aug 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
3 years old
1890 releases · first in 2023
Release timeline
1890 releases since 2023Releases
- 21.2.0-canary.20250604-283ec764 Jun 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250603-88c51963 Jun 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250530-b51676a30 May 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250529-c8a6ffb29 May 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250528-257245528 May 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250527-4a9484127 May 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250524-e2b3aca24 May 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250523-560a53e23 May 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250522-7e0719c22 May 2025pre-release
Nothing published for this version
- 21.2.0-canary.20250521-a52a43521 May 2025pre-release
Nothing published for this version
- 21.2.0-beta.510 Jun 2025pre-release
Release notes
Open source →21.2.0-beta.5 (2025-06-10)
🩹 Fixes
- core: scope native logging to nx module by default (#31530)
- gradle: fix gradle test running gaps (#31313)
- js: enhance TypeScript transformer loading to support function-based plugins (#31443, #31411)
❤️ Thank You
- Colum Ferry @Coly010
- Emily Xiong @xiongemi
- Jason Jean @FrozenPandaz
- 21.2.0-beta.410 Jun 2025pre-release
Release notes
Open source →21.2.0-beta.4 (2025-06-10)
🩹 Fixes
- core: remove log_error function and standardize logging (#31515)
❤️ Thank You
- Jason Jean @FrozenPandaz
- 21.2.0-beta.39 Jun 2025pre-release
Release notes
Open source →21.2.0-beta.3 (2025-06-09)
🚀 Features
- ⚠️ angular: support angular v20 (#31369)
- angular: update angular eslint packages to v20 (#31489)
- bundling: use tsconfig.lib.json for rollup.config.ts (#30453)
- misc: enhance IDE integration with Nx Console auto-installation and improved logging (#31462)
- 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)
- bundling: do not normalize tsconfig path for Windows with rollup (#30567)
- core: use
ts-nodeoption 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)
- linter: infer lint tasks with inputs using
{workspaceRoot}to support nested projects (#31488, #31264) - linter: update allowed ESLint config file extensions (#30127)
- nextjs: add extension alias support for handling ESM libs (#31323, #30714)
- node: esbuild breaks and does not cleanup (#30469)
- 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)
- rspack: Add missing return for rspack composoable plugin (#31372)
- rspack: must run type check with @nx/rspack:rspack when skipTypeChecking is false (#31027, #31026)
- vite: NxReporter compatible with Vitest ≥0.29 (#31425)
- 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
- Colum Ferry @Coly010
- dpnolte @dpnolte
- Jacob S
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Matthias Stemmler @ms-tng
- Miguel @mpsanchis
- Nadav Shatz
- Nicholas Cunningham @ndcunningham
- Paul Bohm @enki
- Paweł Tymczuk @LetItRock
- Petr Plenkov
- Rui Lima @rapzo
- Torin
- 21.2.0-beta.25 Jun 2025pre-release
Release notes
Open source →21.2.0-beta.2 (2025-06-05)
🚀 Features
- angular: update
nx initlegacy integrated migration for angular to handle angular v17 (#31352) - gradle: exclude dependsOn tasks (#30913)
- nest: Update nest version to 11 (#31393, #30188)
- nx-dev: update hero tagline (41387af458)
- nx-dev: add rss and atom feeds (ee7dbf9c3a)
- repo: enhance Claude Code workflow and settings (#31405, #31380)
🩹 Fixes
- angular: update tsconfig files generation to better support angular v20 (#31357)
- angular: keep extra target metadata when needed in
convert-to-rspackgenerator (#31309) - angular: generate correct output for buildable libraries on windows (#31437, #31436)
- angular: optimize ng-packagr-lite watch mode file writing (#31434, #31033)
- 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 migrateand using--verbose(#31432) - gradle: add migration script to check gradle plugin version (#31304)
- js: write typescript plugin cache files atomically (#31390, #30239, #31187)
- js: enable end-to-end tests for Vue application in dev mode (#31415)
- linter: handle
ng-package.jsonfile with nolib.entryFilein@nx/enforce-module-boundariesrule (#31360) - linter: fix line endings handling in '@nx/eslint:convert-to-flat-config' generator (#31043)
- module-federation: enhance remote entry handling with query parameters in paths (#30615, #30602)
- node: add project name sanitization for Docker commands. (#31461, #31421)
- nx-dev: only track analytics in prod envs (#31367)
- remix: update setup-tailwind generator to correct import statements (#30599, #30343)
- rspack: fix issue with optimization options in rspack config (#31337, #31268, #30292)
- rspack: ensure nest applications generated correctly #31204 (#31424, #31204)
- 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)
- webpack: add support for retrieving all transitive non-buildable dependencies (#31343)
❤️ Thank You
- Brandon Roberts @brandonroberts
- Colum Ferry @Coly010
- Emily Xiong @xiongemi
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Johann Wagner @konqi
- Juri Strumpflohner @juristr
- laney
- Leosvel Pérez Espinosa @leosvelperez
- Miroslav Jonaš @meeroslav
- Nicholas Cunningham @ndcunningham
- Terry @Teamop
- angular: update
- 21.2.0-beta.126 May 2025pre-release
Release notes
Open source →21.2.0-beta.1 (2025-05-26)
🚀 Features
- angular: add support for rspack module federation (#31231)
- angular: support angular cli v20.0.0-rc.3 (#30715)
- nx-dev: AI landing page (#31310)
🩹 Fixes
- 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)
- gradle: change run and bootRun to cacheable false (#31287)
- linter: speed up inferred plugin node processing (#31281)
- module-federation: use runtimeChunk false when not in dev mode (#31256, #30637, #31114)
- react: add missing dependency when generating a react lib that has testing (#31308)
- react: routing option to library generator (#31328, #30721)
- storybook: improve speed of storybook plugin (#31277, #22953, #31276)
❤️ Thank You
- Charlie Croom
- Colum Ferry @Coly010
- Emily Xiong @xiongemi
- Jack Hsu @jaysoo
- Jonathan Cammisuli @Cammisuli
- Juri Strumpflohner @juristr
- Leosvel Pérez Espinosa @leosvelperez
- Miroslav Jonaš @meeroslav
- Nicholas Cunningham @ndcunningham
- 21.1.36 Jun 2025
Release notes
Open source →21.1.3 (2025-06-06)
🚀 Features
- nx-dev: AI landing page (#31310)
- nx-dev: update hero tagline (53ea3062e7)
- nx-dev: add rss and atom feeds (77dea60a49)
- repo: add golden list of projects to our Nightly CI (#31414)
🩹 Fixes
- angular: keep extra target metadata when needed in
convert-to-rspackgenerator (#31309) - core: handle killing child processes of continuous tasks on Windows (#31296, #31235)
- 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 migrateand using--verbose(#31432) - core: use
ts-nodeoption from tsconfig files when creating transpiler (#31469) - core: Update macos pipelines configuration (#31476)
- gradle: change run and bootRun to cacheable false (#31287)
- gradle: add migration script to check gradle plugin version (#31304)
- js: write typescript plugin cache files atomically (#31390, #30239, #31187)
- js: enable end-to-end tests for Vue application in dev mode (#31415)
- linter: speed up inferred plugin node processing (#31281)
- linter: handle
ng-package.jsonfile with nolib.entryFilein@nx/enforce-module-boundariesrule (#31360) - linter: fix line endings handling in '@nx/eslint:convert-to-flat-config' generator (#31043)
- 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)
- 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)
- release: sort groups topologically bottom-up and fix typo to allow multi-level group dependencies (#31374)
- remix: update setup-tailwind generator to correct import statements (#30599, #30343)
- 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)
- 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)
- webpack: add support for retrieving all transitive non-buildable dependencies (#31343)
❤️ Thank You
- Brandon Roberts @brandonroberts
- Charlie Croom
- Colum Ferry @Coly010
- Emily Xiong @xiongemi
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Johann Wagner @konqi
- Juri Strumpflohner @juristr
- laney
- Leosvel Pérez Espinosa @leosvelperez
- Miguel @mpsanchis
- Miroslav Jonaš @meeroslav
- Nadav Shatz
- Nicholas Cunningham @ndcunningham
- Terry @Teamop
- 21.1.224 May 2025
Release notes
Open source →21.1.2 (2025-05-24)
🩹 Fixes
- core: do not hide task list with run-many if there is only 1 task (#31324)
❤️ Thank You
- Jonathan Cammisuli @Cammisuli
- 21.1.121 May 2025
- 21.1.020 May 2025
Release notes
Open source →21.1.0 (2025-05-20)
🚀 Features
- angular: handle prerender and appshell in covert to rspack (#31210)
- angular: migrate to angular rspack 21 (#31216)
- core: focus single tasks (#31159)
- core: run parallel based on the number of cpu cores (#31011)
- core: add nx console messaging to TUI (#31148)
- core: update getTouchedProjectsFromLockFile to detect which projects were changed from pnpm lock file diff (#31091, #29986)
- core: add ai rule files to gitignore (#31238)
- devkit: allow requiring cts config files (#31103)
- nx-dev: replace monorepo world link with office hours (3f5fd896a1)
- rspack: upgrade to version 1.3.8 (#31070)
- vite: add ajv dev dependency for vite-plugin-dts (#31107)
🩹 Fixes
- angular: install
@angular/buildwhen using vitest test runner (#31169, #30646) - core: send up and down arrows to pty in interactive mode (#31084)
- core: fail nx release cli when publish step fails (#31088)
- core: explicitly cleanup forked process task runner (#31106)
- core: add keepExistingVersions to jest option to preserve dependency versions (#30652)
- core: run script should exit the process when kill signals are r… (#31109)
- core: resolve excessive CPU consumption via child_process.rs (#31110)
- core: clearer tui colors on light themes (#31095)
- core: tui should not exit when underlying process is cancelled (#31112)
- core: tui summary should capture more terminal outputs (#31113)
- core: replace posix.relative with relative for path resolution (#30783)
- core: handle process killing more robustly (#31131)
- core: only cleanup db connection on exit (#31137)
- core: Update React,Vue and Node generators applications for CNW (#31059)
- core: simplify action dispatch, use mutex locking, and avoid unnecessary clones (#31157)
- core: show all native logs for debug mode (#31154)
- core: handle npm scope when matching project substring (#31160)
- core: change default native logging to "OFF" (#31161)
- core: do not follow symlinks when creating remote cache tarball (#31138, #31085)
- core: improve pinned tasks annotation on narrow width (#31175)
- core: make running a single task more transparent (#31163)
- core: do not set tasks which cannot be interactive to interactive (#31240)
- core: remove engines field, improve compatibility documentation (#31245)
- core: ensure that global nx works with dot-nx workspace after init (#31249)
- core: Update e2e nightly test to not hang (#31218)
- core: record task runs via the queue (#31253)
- core: restore older nx core migrations for repair (#31254)
- core: prefer vertical layout categorically if there are less tha… (#31221)
- docs: typo in introduction.md (#31145)
- esbuild: update peerDep range (#30402, #30167, #30009, #30370)
- gradle: specify idle timeout for gradle batch runner (#31009)
- gradle: fix gradle tests (#30879)
- gradle: return success false for failed task (#31178)
- gradle: make ci inputs same as test inputs (#31198)
- js: handle
${configDir}in tsconfig files when inferring tasks (#31098, #30883) - linter: handle the flat config in workspace rule generators (#29253, #29252)
- module-federation: generalize the check of the remote project specified in the buildTarget (#31211, #30808)
- nextjs: Update glob for cache output (#31177)
- nx-dev: webinar list page shows event date (#30953)
- nx-dev: Add docs for disableChecksum option for s3-cache (#31199)
❤️ Thank You
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- Emily Xiong @xiongemi
- Ian Luca @ianldgs
- Isaac Mann @isaacplmann
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Jonathan Cammisuli @Cammisuli
- Jonathan Gelin @jogelin
- Juri @juristr
- laney
- Leosvel Pérez Espinosa @leosvelperez
- Nicholas Cunningham @ndcunningham
- Nicolas Beaussart @beaussan
- Nicolas Marien
- pawel-twardziak
- Stanislas Bernard
- Tyler Hendrickson @hendrickson-tyler
- Yiheng @ianzone
- 21.1.0-canary.20250520-da9d84c20 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250517-c92b4a317 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250516-7db44a816 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250515-81ecb2215 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250514-889dee014 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250513-8cf4b5513 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250510-cbb261910 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250509-8c50b7f9 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250508-98d33548 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250507-30a77097 May 2025pre-release
Nothing published for this version
- 21.1.0-canary.20250506-72a0ef56 May 2025pre-release
Nothing published for this version
- 21.1.0-beta.217 May 2025pre-release
Release notes
Open source →21.1.0-beta.2 (2025-05-17)
🚀 Features
- angular: migrate to angular rspack 21 (#31216)
- core: update getTouchedProjectsFromLockFile to detect which projects were changed from pnpm lock file diff (#31091, #29986)
- core: add ai rule files to gitignore (#31238)
- devkit: allow requiring cts config files (#31103)
- vite: add ajv dev dependency for vite-plugin-dts (#31107)
🩹 Fixes
- core: do not set tasks which cannot be interactive to interactive (#31240)
- core: remove engines field, improve compatibility documentation (#31245)
- core: ensure that global nx works with dot-nx workspace after init (#31249)
- core: Update e2e nightly test to not hang (#31218)
- core: record task runs via the queue (#31253)
- core: restore older nx core migrations for repair (#31254)
- core: prefer vertical layout categorically if there are less tha… (#31221)
- linter: handle the flat config in workspace rule generators (#29253, #29252)
❤️ Thank You
- Colum Ferry @Coly010
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Jonathan Cammisuli @Cammisuli
- laney
- Nicholas Cunningham @ndcunningham
- Nicolas Marien
- pawel-twardziak
- 21.1.0-beta.114 May 2025pre-release
Release notes
Open source →21.1.0-beta.1 (2025-05-14)
🚀 Features
- angular: handle prerender and appshell in covert to rspack (#31210)
- core: add nx console messaging to TUI (#31148)
🩹 Fixes
- esbuild: update peerDep range (#30402, #30167, #30009, #30370)
- gradle: make ci inputs same as test inputs (#31198)
- module-federation: generalize the check of the remote project specified in the buildTarget (#31211, #30808)
- nx-dev: Add docs for disableChecksum option for s3-cache (#31199)
❤️ Thank You
- Colum Ferry @Coly010
- Emily Xiong @xiongemi
- Jonathan Cammisuli @Cammisuli
- Jonathan Gelin @jogelin
- Nicholas Cunningham @ndcunningham
- Tyler Hendrickson @hendrickson-tyler
- 21.1.0-beta.013 May 2025pre-release
Release notes
Open source →21.1.0-beta.0 (2025-05-13)
🚀 Features
- core: focus single tasks (#31159)
- core: run parallel based on the number of cpu cores (#31011)
- nx-dev: replace monorepo world link with office hours (3f5fd896a1a)
- rspack: upgrade to version 1.3.8 (#31070)
🩹 Fixes
- angular: install
@angular/buildwhen using vitest test runner (#31169, #30646) - core: send up and down arrows to pty in interactive mode (#31084)
- core: fail nx release cli when publish step fails (#31088)
- core: explicitly cleanup forked process task runner (#31106)
- core: add keepExistingVersions to jest option to preserve dependency versions (#30652)
- core: run script should exit the process when kill signals are r… (#31109)
- core: resolve excessive CPU consumption via child_process.rs (#31110)
- core: clearer tui colors on light themes (#31095)
- core: tui should not exit when underlying process is cancelled (#31112)
- core: tui summary should capture more terminal outputs (#31113)
- core: replace posix.relative with relative for path resolution (#30783)
- core: handle process killing more robustly (#31131)
- core: only cleanup db connection on exit (#31137)
- core: Update React,Vue and Node generators applications for CNW (#31059)
- core: simplify action dispatch, use mutex locking, and avoid unnecessary clones (#31157)
- core: show all native logs for debug mode (#31154)
- core: handle npm scope when matching project substring (#31160)
- core: change default native logging to "OFF" (#31161)
- core: do not follow symlinks when creating remote cache tarball (#31138, #31085)
- core: improve pinned tasks annotation on narrow width (#31175)
- core: make running a single task more transparent (#31163)
- docs: typo in introduction.md (#31145)
- gradle: specify idle timeout for gradle batch runner (#31009)
- gradle: fix gradle tests (#30879)
- gradle: return success false for failed task (#31178)
- js: handle
${configDir}in tsconfig files when inferring tasks (#31098, #30883) - nextjs: Update glob for cache output (#31177)
- nx-dev: webinar list page shows event date (#30953)
❤️ Thank You
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- Emily Xiong @xiongemi
- Ian Luca @ianldgs
- Isaac Mann @isaacplmann
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Jonathan Cammisuli @Cammisuli
- Juri @juristr
- Leosvel Pérez Espinosa @leosvelperez
- Nicholas Cunningham @ndcunningham
- Nicolas Beaussart @beaussan
- Stanislas Bernard
- Yiheng @ianzone
- 21.0.421 May 2025
Release notes
Open source →21.0.4 (2025-05-21)
🚀 Features
- nx-dev: replace monorepo world link with office hours (7e67c810f4)
🩹 Fixes
- angular: install
@angular/buildwhen using vitest test runner (#31169, #30646) - core: Update React,Vue and Node generators applications for CNW (#31059)
- core: simplify action dispatch, use mutex locking, and avoid unnecessary clones (#31157)
- core: show all native logs for debug mode (#31154)
- core: handle npm scope when matching project substring (#31160)
- core: change default native logging to "OFF" (#31161)
- core: do not follow symlinks when creating remote cache tarball (#31138, #31085)
- core: improve pinned tasks annotation on narrow width (#31175)
- core: remove engines field, improve compatibility documentation (#31245)
- core: ensure that global nx works with dot-nx workspace after init (#31249)
- core: Update e2e nightly test to not hang (#31218)
- core: record task runs via the queue (#31253)
- core: restore older nx core migrations for repair (#31254)
- docs: typo in introduction.md (#31145)
- esbuild: update peerDep range (#30402, #30167, #30009, #30370)
- gradle: return success false for failed task (#31178)
- gradle: make ci inputs same as test inputs (#31198)
- linter: handle the flat config in workspace rule generators (#29253, #29252)
- module-federation: generalize the check of the remote project specified in the buildTarget (#31211, #30808)
- nextjs: Update glob for cache output (#31177)
- nx-dev: Add docs for disableChecksum option for s3-cache (#31199)
❤️ Thank You
- Emily Xiong @xiongemi
- Ian Luca @ianldgs
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Jonathan Cammisuli @Cammisuli
- Jonathan Gelin @jogelin
- Juri @juristr
- Leosvel Pérez Espinosa @leosvelperez
- Nicholas Cunningham @ndcunningham
- pawel-twardziak
- Stanislas Bernard
- Tyler Hendrickson @hendrickson-tyler
- 21.0.4-beta.010 May 2025pre-release
Release notes
Open source →21.0.4-beta.0 (2025-05-10)
🚀 Features
- core: focus single tasks (#31159)
🩹 Fixes
- core: Update React,Vue and Node generators applications for CNW (#31059)
- core: simplify action dispatch, use mutex locking, and avoid unnecessary clones (#31157)
- core: show all native logs for debug mode (#31154)
- core: handle npm scope when matching project substring (#31160)
- core: change default native logging to "OFF" (#31161)
- core: do not follow symlinks when creating remote cache tarball (#31138, #31085)
- docs: typo in introduction.md (#31145)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Ian Luca @ianldgs
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Jonathan Cammisuli @Cammisuli
- Nicholas Cunningham @ndcunningham
- Stanislas Bernard
- 21.0.38 May 2025
Release notes
Open source →21.0.3 (2025-05-08)
🩹 Fixes
- core: replace posix.relative with relative for path resolution (#30783)
- core: handle process killing more robustly (#31131)
- core: only cleanup db connection on exit (#31137)
- gradle: specify idle timeout for gradle batch runner (#31009)
- gradle: fix gradle tests (#30879)
❤️ Thank You
- Emily Xiong @xiongemi
- Jason Jean @FrozenPandaz
- Jonathan Cammisuli @Cammisuli
- 21.0.27 May 2025
Release notes
Open source →21.0.2 (2025-05-07)
🩹 Fixes
- core: run script should exit the process when kill signals are r… (#31109)
- core: resolve excessive CPU consumption via child_process.rs (#31110)
- core: clearer tui colors on light themes (#31095)
- core: tui should not exit when underlying process is cancelled (#31112)
- core: tui summary should capture more terminal outputs (#31113)
❤️ Thank You
- Craigory Coppola @AgentEnder
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- 21.0.17 May 2025
Release notes
Open source →21.0.1 (2025-05-07)
🚀 Features
- rspack: upgrade to version 1.3.8 (#31070)
🩹 Fixes
- core: send up and down arrows to pty in interactive mode (#31084)
- core: fail nx release cli when publish step fails (#31088)
- core: explicitly cleanup forked process task runner (#31106)
- core: add keepExistingVersions to jest option to preserve dependency versions (#30652)
- js: handle
${configDir}in tsconfig files when inferring tasks (#31098, #30883) - nx-dev: webinar list page shows event date (#30953)
❤️ Thank You
- Colum Ferry @Coly010
- Isaac Mann @isaacplmann
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Nicholas Cunningham @ndcunningham
- Nicolas Beaussart @beaussan
- 21.0.05 May 2025
Release notes
Open source →21.0.0 (2025-05-05)
🚀 Features
- angular: update angular-rspack to 20.7 (#30737)
- ⚠️ angular: remove deprecated functionalities for v21 (#30769)
- core: introduce continuous tasks (#29750, #29025)
- core: share continuous tasks (#29901)
- core: add the experimental Terminal UI for tasks (#30565)
- core: enable dte to execute continuous tasks (#29993)
- core: add shared status for tui (#30679)
- core: clean up unneeded continuous tasks after tasks are done (#30746)
- core: stream task output for all tasks except for direct output… (#30822)
- core: add flaky task detection to tui summary (#30835)
- core: allow executors to specify if they are continuous (#30821)
- ⚠️ core: remove usage of
cliproperty from migration definitions (#30855) - ⚠️ core: remove deprecated
readWorkspaceConfig(#30868) - core: add enter and q keybindings (#30786)
- ⚠️ core: drop support for create nodes v1 in favor of only calling create nodes v2 (#30616)
- ⚠️ core: remove legacy cache flag from nx.json (#30787)
- core: disable tui when output style is set to an incompatible style (#30873)
- ⚠️ core: drop support for node versions prior to 20.19.0 (#30818)
- core: support reading NX_TUI_AUTO_EXIT env var (#30971)
- core: bump devkit support range and remove some deprecated APIs (#30840)
- core: add continuous option to targets for Detox, Expo, and React Native (#30988)
- ⚠️ core: remove outputStyle=compact (#31016)
- gradle: add batch runner (#30457)
- gradle: set gradle task continuous for bootRun (#30931)
- graph: Create Migrate UI (#30734)
- graph: add undo migration option when one is pending approval (#30878)
- graph: show next steps for successful migrations (307c45542a)
- graph: show next steps for successful migrations (#30934)
- java: add gradle kotlin plugin (#29464)
- js: infer continuous for watch-deps task (#29976)
- linter: add support for package based secondary entry points (#30809, #18552)
- misc: remove generation of target defaults for atomized e2e tasks (#30730)
- misc: remove migrations prior to v19 in preparation for v21 (#30839)
- module-federation: add continuous tasks support to react rspack (#30644)
- node: generate new apps with continuous: true (#30148)
- nuxt: enable continuous tasks (#30925)
- nx-dev: add React landing page (#30612)
- nx-dev: add course preview component (4f8b407a75)
- nx-dev: tutorial landing page and improvements (#30757)
- nx-dev: add conformance rule to verify blog post cover images (5651270b33)
- react: undeprecate svgr option for Next.js apps since --turbo supports it (#30909)
- react: replace deprecated babel classProperties.loose option in .babelrc files (#30912)
- react-native: update executor and schema files for expo and react-native to be continuous (#30985)
- ⚠️ release: useLegacyVersioning is false by default, migrate config (#30838)
- ⚠️ release: support gitlab releases (#30802)
- remix: add continuous task support (#29905)
- ⚠️ remix: remove deprecated static-serve target name from inferred targets (#30982)
- rspack: add continous inference support (#29973)
- rspack: use custom WriteIndexHtmlPlugin to handle variable interpolation (#30805)
- storybook: infer continuous tasks for storybook serve and serve-static (#30069)
- testing: add continuous tasks support for jest e2e with node (#30675)
- testing: support continuous tasks (#30632)
- ⚠️ testing: remove deprecated
getJestProjects(#30844) - ⚠️ testing: remove
tsConfigoption from the@nx/jest:jestexecutor (#30888) - ⚠️ testing: remove
tsConfigandcopyFilesoptions from the@nx/cypress:cypressexecutor (#30870) - vite: infer continuous tasks for dev (#30043)
- webpack: add continuous inference support (#29974)
- webpack: set default sassImplementation to sass-embedded (#30580)
- webpack: remove isolatedConfig option for @nx/webpack:webpack (#30910)
🩹 Fixes
- check if dependencies & devDependencies exist before deleting dep (#30224, #30222)
- angular: remove deprecated standaloneConfig from generators (#30578)
- angular: handle ssr with convert-to-rspack (#30752)
- angular: convert-to-rspack correctly migrating existing custom webpack configs (#30778)
- angular: convert-to-rspack should ensure zone.js is not treated as local file (#30966)
- core: schedule tasks and release waiting threads when continuous task is already running (#30673)
- core: improve tui exit consistency and summary (#30678)
- core: use dev tty for crossterm (#30696)
- core: only register forced shutdown when tui is enabled (#30735)
- core: improve flaky ci test (#30738)
- core: disable tui when CI=true (#30754)
- core: migrate-ui-api should always use its own migrate module (#30779)
- core: wait for exit before getting terminal output (#30816)
- core: fix issue with summary missing outputs (#30819)
- core: allow disabling output streaming with NX_STREAM_OUTPUT (#30834)
- core: add continuous to the project.json schema (#30853)
- core: ensure task environments are processed properly in dte (#30862)
- core: handle skipped tasks and trigger finished state (#30864)
- core: do not clone screen on every render loop of the TUI (#30872)
- core: error message when failing to fetch migrations is no good (#30874)
- core: quick fix to support trailing commas when reading hoisted … (#29436)
- core: properly print errors coming from js when tui is enabled (#30885)
- core: tui summary should handle in progress tasks properly (#30905)
- core: throw errors when task graph has invalid continuous tasks (#30924)
- core: kill child processes when pseudo terminal shutsdown (#30935)
- core: write keybindings with control to terminal panes in intera… (#30938)
- core: dont cache default plugins as all plugins if loading plugins fails (#30927)
- core: fix logging when directory does not exist (#30944)
- ⚠️ core: respect packageManager field in package.json when detecting version (#29249)
- core: fix terminal output for non-tui (#30957)
- core: include nx version in native file cache (#30963, #30940, #29184)
- core: error when restoring http cache with no outputs (#30961)
- core: return results after NodeChildProcessWithNonDirectOutput has already exited (#30943)
- core: don't display fork script path in tui (#30970)
- core: prioritize --output-style flag over tui env vars (#30969)
- core: use process#kill instead of tree-kill for windows and macos (#30976)
- core: Disable the macOS job to prevent PRs from being blocked by its long runtime. (#30984)
- core: send signals when killing child process on unix (#30987)
- core: fix windows native build (#30990)
- core: run discrete tasks using batches if possible (#30991)
- core: improve tui task_list bottom section responsive design (#30993)
- core: update fork task runner so it propagates exit signals (#30998)
- core: remove unnecessary corepack defaults (#30992)
- core: skip vt100 parsing if tui disabled (#31010)
- core: tui summary should not show canceled during run-one because tasks are skipped (#31014)
- core: ensure the terminal is restored when cloud exits (#31013)
- core: Update nightly tests to work with continuous local-registry (#31007)
- core: enable E2E tests for macOS in CI workflow (#30986)
- core: reset should clear cloud light client (#31021)
- core: nx init should configure plugins for encapsulated workspaces (#31020)
- core: more tui summary updates and unit tests (#31019)
- core: exit the command with sigint if it is interrupted (#31028)
- core: Disable e2e matrix as macos is still hanging at install (#31041)
- core: tui summary should show cancelled when interrupting dev server (#31042)
- core: q should exit tui immediately if all tasks complete (#31040)
- core: improve tui selected task contrast (#31039)
- core: update ci-workflow generator package manager installation (#31018)
- core: switch to tui-term fork to support dimmed content (#31044)
- core: kill tasks run via run-commands (#31045)
- gradle: make sure v1 hash file is named differently to prevent compatability errors (#30846)
- gradle: add gradle migration to change ciTargetName (#30965)
- gradle: fix workflow to run assemble check with batch (#31022)
- graph: ensure deps from graph-client->migrate-ui exists so taliwind styles are compiled correctly (#30762)
- graph: disable primary CTA for Migrate UI when approval is required first (#30836)
- graph: make migrate ui future migration circles cleaner (#30898)
- js: remove check that ts plugin is used for ts sync generator (#30743)
- linter: remove empty entry in typescript eslint flat config (#30727, #30725)
- ⚠️ misc: only provide default value for object properties if object already has value (#28838, #23153)
- module-federation: remove disabling runtimeChunk (#30637, #9582)
- module-federation: check the remote project targets for buildTarget to use #30808 (#30867, #30808)
- nx-dev: refer to the youtube video instead of storing the videos… (#30739)
- nx-dev: toc should only include headings from the article body (4dbc3c7156)
- nx-dev: update blog posts with avif cover images (d6ea3ab45f)
- react: mark react-router dev/start targets as continuous (#30776)
- react: migration for babel supports configs that do not use @nx/react/babel (#30962)
- release: ensure generatorOptions and rootVersionActionsOptions are passed to updateLockfile function (#30796)
- release: ensure versionData is always populated even when no bumps (#30866)
- release: only error on missing manifestsToUpdate if a project is being directly processed (#31004)
- repo: don't cancel running jobs on master when new branch merged (#30871)
- testing: fix cypress and playwright atomized targetDefaults so they match correctly (#30717, #28842)
- testing: use correct server process reference when killing the server in the cypress preset (#30994)
- testing: ignore test outputs from playwright when linting (#31015)
- vue: install
@typescript-eslint/parserwhen generating project using it (#31008)
⚠️ Breaking Changes
- ⚠️ core: remove outputStyle=compact (#31016)
- remix: Remove deprecated static-serve target name from Remix
- misc: Currently if an executor's schema provides some default
- core: We are updating our minimum node version to
20.19.0 - ⚠️ core: respect packageManager field in package.json when detecting version (#29249)
- ⚠️ release: support gitlab releases (#30802)
- testing: The previously deprecated and unused
tsConfigand - testing: The previously deprecated and unused
tsConfigoption - ⚠️ core: remove legacy cache flag from nx.json (#30787)
- ⚠️ core: drop support for create nodes v1 in favor of only calling create nodes v2 (#30616)
- core: The previously deprecated
readWorkspaceConfig - core: The
cliproperty from migration generator definitions - testing: The previously deprecated
getJestProjectsfunction - ⚠️ release: useLegacyVersioning is false by default, migrate config (#30838)
- angular: Remove the deprecated data persistence operators
❤️ Thank You
- Altan Stalker
- Colum Ferry
- Craigory Coppola @AgentEnder
- Emily Xiong
- François
- Isaac Mann @isaacplmann
- Jack Hsu
- Jacob Ley @JacobLey
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Jonathan Cammisuli @Cammisuli
- Juri
- Leosvel Pérez Espinosa
- MaxKless @MaxKless
- Mike Hartington @mhartington
- Miroslav Jonaš
- Nicholas Cunningham @ndcunningham
- Thomas Dekiere
- 21.0.0-rc.45 May 2025pre-release
Release notes
Open source →21.0.0-rc.4 (2025-05-05)
🩹 Fixes
- core: exit the command with sigint if it is interrupted (#31028)
- core: Disable e2e matrix as macos is still hanging at install (#31041)
- core: tui summary should show cancelled when interrupting dev server (#31042)
- core: q should exit tui immediately if all tasks complete (#31040)
- core: improve tui selected task contrast (#31039)
- core: update ci-workflow generator package manager installation (#31018)
- core: switch to tui-term fork to support dimmed content (#31044)
- core: kill tasks run via run-commands (#31045)
❤️ Thank You
- Craigory Coppola @AgentEnder
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Nicholas Cunningham @ndcunningham
- 21.0.0-rc.33 May 2025pre-release
Release notes
Open source →21.0.0-rc.3 (2025-05-03)
🚀 Features
- ⚠️ core: remove outputStyle=compact (#31016)
🩹 Fixes
- core: remove unnecessary corepack defaults (#30992)
- core: skip vt100 parsing if tui disabled (#31010)
- core: tui summary should not show canceled during run-one because tasks are skipped (#31014)
- core: ensure the terminal is restored when cloud exits (#31013)
- core: Update nightly tests to work with continuous local-registry (#31007)
- core: enable E2E tests for macOS in CI workflow (#30986)
- core: reset should clear cloud light client (#31021)
- core: nx init should configure plugins for encapsulated workspaces (#31020)
- core: more tui summary updates and unit tests (#31019)
- gradle: fix workflow to run assemble check with batch (#31022)
- release: only error on missing manifestsToUpdate if a project is being directly processed (#31004)
- testing: ignore test outputs from playwright when linting (#31015)
- vue: install
@typescript-eslint/parserwhen generating project using it (#31008)
⚠️ Breaking Changes
- ⚠️ core: remove outputStyle=compact (#31016)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Emily Xiong @xiongemi
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Leosvel Pérez Espinosa @leosvelperez
- Nicholas Cunningham @ndcunningham
- 21.0.0-rc.22 May 2025pre-release
Release notes
Open source →21.0.0-rc.2 (2025-05-02)
🩹 Fixes
- core: fix windows native build (#30990)
- core: run discrete tasks using batches if possible (#30991)
- core: improve tui task_list bottom section responsive design (#30993)
- core: update fork task runner so it propagates exit signals (#30998)
- testing: use correct server process reference when killing the server in the cypress preset (#30994)
❤️ Thank You
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- 21.0.0-rc.12 May 2025pre-release
Release notes
Open source →21.0.0-rc.1 (2025-05-02)
🚀 Features
- core: add continuous option to targets for Detox, Expo, and React Native (#30988)
🩹 Fixes
- core: send signals when killing child process on unix (#30987)
- core: fix windows native build (#30990)
- core: run discrete tasks using batches if possible (#30991)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Jason Jean @FrozenPandaz
- Nicholas Cunningham @ndcunningham
- 21.0.0-rc.01 May 2025pre-release
Release notes
Open source →21.0.0-rc.0 (2025-05-01)
🚀 Features
- ⚠️ core: drop support for node versions prior to 20.19.0 (#30818)
- core: support reading NX_TUI_AUTO_EXIT env var (#30971)
- core: bump devkit support range and remove some deprecated APIs (#30840)
- gradle: set gradle task continuous for bootRun (#30931)
- react-native: update executor and schema files for expo and react-native to be continuous (#30985)
- ⚠️ remix: remove deprecated static-serve target name from inferred targets (#30982)
🩹 Fixes
- angular: convert-to-rspack should ensure zone.js is not treated as local file (#30966)
- core: don't display fork script path in tui (#30970)
- core: prioritize --output-style flag over tui env vars (#30969)
- core: use process#kill instead of tree-kill for windows and macos (#30976)
- core: Disable the macOS job to prevent PRs from being blocked by its long runtime. (#30984)
- gradle: add gradle migration to change ciTargetName (#30965)
- graph: make migrate ui future migration circles cleaner (#30898)
- ⚠️ misc: only provide default value for object properties if object already has value (#28838, #23153)
- react: migration for babel supports configs that do not use @nx/react/babel (#30962)
⚠️ Breaking Changes
- remix: Remove deprecated static-serve target name from Remix
- misc: Currently if an executor's schema provides some default
- core: We are updating our minimum node version to
20.19.0
❤️ Thank You
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- Emily Xiong @xiongemi
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- MaxKless @MaxKless
- Nicholas Cunningham @ndcunningham
- 21.0.0-canary.20250503-675e6ed3 May 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250502-110614d2 May 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250501-8f503581 May 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250430-07b881d30 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250429-cf4a1f329 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250426-da4f55b26 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250425-ee097a825 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250424-e23b25f24 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250423-16fc55123 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250422-8619c1d22 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250419-8619c1d19 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250418-8619c1d18 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250416-caa26a716 Apr 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250206-8bd0bcd6 Feb 2025pre-release
Nothing published for this version
- 21.0.0-canary.20250205-45d51405 Feb 2025pre-release
Nothing published for this version
- 21.0.0-beta.121 May 2025pre-release
Release notes
Open source →21.0.0-beta.12 (2025-05-01)
🚀 Features
- core: disable tui when output style is set to an incompatible style (#30873)
- graph: show next steps for successful migrations (#30934)
- nx-dev: add conformance rule to verify blog post cover images (5651270b33)
- ⚠️ release: support gitlab releases (#30802)
🩹 Fixes
- core: write keybindings with control to terminal panes in intera… (#30938)
- core: dont cache default plugins as all plugins if loading plugins fails (#30927)
- core: fix logging when directory does not exist (#30944)
- ⚠️ core: respect packageManager field in package.json when detecting version (#29249)
- core: fix terminal output for non-tui (#30957)
- core: include nx version in native file cache (#30963)
- core: error when restoring http cache with no outputs (#30961)
- core: return results after NodeChildProcessWithNonDirectOutput has already exited (#30943)
- nx-dev: update blog posts with avif cover images (d6ea3ab45f)
⚠️ Breaking Changes
- ⚠️ core: respect packageManager field in package.json when detecting version (#29249)
- ⚠️ release: support gitlab releases (#30802)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jacob Ley @JacobLey
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Juri @juristr