Releases: nrwl/nx
Releases · nrwl/nx
22.2.7
22.2.7 (2025-12-16)
🚀 Features
🩹 Fixes
- core: display task output in TUI when native command runner is disabled (#33881, #32803)
- core: prevent pinning the same task in multiple panes in the tui (#33863)
- core: reduce error rate with dir validation and add more debugging data (#33887)
- node: use @swc/helpers instead of tslib when compiler is swc (#33885, #31202)
- web: update e2e test regex for SWC decorator metadata (#33892)
❤️ Thank You
- Claude Opus 4.5
- Colum Ferry @Coly010
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Tine Kondo @tinesoft
22.2.6
22.2.6 (2025-12-16)
🩹 Fixes
- core: include PNPM patches in externalDependencies hash computations (#33551)
- core: add back ability to create
cache_outputstable without a foreign key (#33880) - js: detect changes to pnpm.overrides and overrides in package.json (#31914)
- js: check package.json for name when project.json exists but has no name (#31887)
- js: adjusted stdout and stderr handling to support the latest @swc/cli version (#32685)
- misc: use string type for fetchDepth in azure-pipelines.yml (#33727)
- nextjs: accept fileName option to generate page (#30013)
❤️ Thank You
- AgentEnder @AgentEnder
- Charlie Croom
- Claude
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- Jason Jean @FrozenPandaz
- Kasper Christensen
- Leosvel Pérez Espinosa @leosvelperez
- Raphael Araújo @raphox
- teawithfruit @teawithfruit
- Zachary DeRose @ZackDeRose
22.3.0-beta.1
22.3.0-beta.1 (2025-12-15)
🩹 Fixes
- angular: install compatible vitest version for angular projects (#33858, #33770)
- core: improve performance of buildExplicitPackageJsonDependencies (#33791)
- core: do not invoke prettier with
--writeand--list-differentwhen unsupported (#33857, #33658, #31951) - core: preserve command output in TUI summary for non-cached tasks (#33673)
- core: update CNW messaging and remove cancel event from SIGINT (#33872)
- core: restore linkTaskDetails param for backwards compatibility (#33874, #33843)
- module-federation: check port availability before starting remote proxies (#33871, #33470)
- nest: ensure library is generated with correct outputPath for TS Soln #32060 (#33864, #32060)
- release: {releaseGroupName} not interpolated in changelog tag/releaseTagPattern (#33779)
- repo: install correct Rust target for x86_64 macOS build (#33853)
❤️ Thank You
- AgentEnder @AgentEnder
- Claude
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Jonathan Gelin @jogelin
- Leosvel Pérez Espinosa @leosvelperez
- Miroslav Jonaš @meeroslav
22.3.0-beta.0
22.3.0-beta.0 (2025-12-15)
🚀 Features
- angular: support angular v21 (#33378)
- core: add NX_DEFAULT_OUTPUT_STYLE env var (#33493, #27490)
- core: add CnwError class for typed error handling in create-nx-workspace (#33839)
- js: add option for using tsgo compiler when inferring build and typecheck tasks (#33821, #32591)
- js: improve SWC compilation error logging (#33297)
- rspack: add support for
cssFilenameconfig #32498 (#32506, #32498) - testing: add option to playwright preset to open html report (#31282)
- webpack: add support for merging externals to NxAppWebpackPlugin (#33833)
🩹 Fixes
- angular: process only the in progress entry points in ng-packagr-lite's write bundles transform function (#33784, #3172, #33560)
- angular: collect known tsconfig files from non-buildable angular libraries in migration (#33834, #33705)
- angular: improve error message when using esbuild-based build targets and generating cypress ct (#33846, #33329)
- angular: install compatible vitest version for angular projects (#33858, #33770)
- bundling: correct project path for createTmpTsConfig (#31314, #31522)
- core: optimize pnpm lockfile parsing with pre-built indexes (#33750, #32669, #32254, #33751)
- core: share visited Set across affected graph traversal (#33756, #32265)
- core: set max listeners for process in task orchestrator (#33596, #32439)
- core: exit with error when generator prompts fail (#33691)
- core: fix record stat on initial CNW call (#33783)
- core: ensure
terminalOutputis always a string in task results (#33782, #32675) - core: improve node creation for pnpm parser (#33788)
- core: add pnpm/yarn support for CNW templates (#33827)
- core: swc register base url missing when using tsgo (#33332)
- core: pass more error detail for CNW (#33844)
- core: create all tables upfront when creating the database (#33843)
- core: improve performance of buildExplicitPackageJsonDependencies (#33791)
- core: do not invoke prettier with
--writeand--list-differentwhen unsupported (#33857, #33658, #31951) - expo: set projectRoot to workspaceRoot for Expo SDK 54+ compatibility (#33836, #33597)
- js: use Set for O(1) package.json root lookup (#33757, #32265)
- js: recognize NodeNext as ESM (#31508)
- js: display pnpm publish errors without requiring --verbose (#33837)
- js: make CopyAssetsHandler per-file logs opt-in via verbose mode (#33835, #33521)
- js: prevent crash when terminating task using the
@nx/js:swcexecutor (#33845, #31938) - js: handle workspace packages when nx.name differs from package.json.name (#33583, #33582)
- js: resolve nx binary from workspace root in node executor (#33842, #33776)
- module-federation: normalize workspace protocol versions in requiredVersion (#33733, #31397, #33734)
- node: sourceMaps option to sourceMap in webpack config (#33333)
- react: update template comment to be valid css (#33169, #20192639)
- release: {releaseGroupName} not interpolated in changelog tag/releaseTagPattern (#33779)
- repo: fix dotnet installation on Windows (#33786)
- repo: restore mise tools in e2e-matrix workflow (#33785, #33772)
- repo: install nightly Rust for WASM build in publish workflow (#33792, #33772)
- repo: use RUSTUP_TOOLCHAIN env var for WASM builds (#33794)
- repo: revert to older nightly Rust for WASM builds (#33797)
- repo: install correct Rust target for x86_64 macOS build (#33853)
- rspack: enable build mode for TypeScript checker in TS solution setups (#33447)
- storybook: conditionally include node imports only for non-angular frameworks (#33728)
- testing: update jest ci target to forward top level args (#31379)
- vite: update worker configuration in generator to follow Vite's … (#30465)
- webpack: show webpack chunks when verbose (#30960)
- webpack: interpolate process.env more verbosely to reduce bundle size with DefinePlugin (#30826)
❤️ Thank You
- Aaro Karell @ajkarell
- Adwait Athale @adwait1290
- Alexey Balmasov
- Andreas Jagiella @AndreasJagiella-EH
- Andrew Ovens @avens19
- Ashish Shanker @AshishShanker
- Claude Opus 4.5
- Colum Ferry @Coly010
- David Antoon @davidantoon
- Guilherme Siquinelli
- Hamza Khan @112khanhamza
- Jack Hsu @jaysoo
- James Kraus
- Jason Jean @FrozenPandaz
- Jay Bell
- Joe Prisk
- Jonathan Gelin @jogelin
- Jonathan Wilbur @JonathanWilbur
- Kamenskih Dmitriy
- Kasper Christensen
- Leosvel Pérez Espinosa @leosvelperez
- Miguel @mpsanchis
- Miroslav Jonaš @meeroslav
- Nicholas Cunningham @ndcunningham
- ResonAtom
- Svyatoslav Zaytsev @MillerSvt
- Timo Santi @diginikkari
- Yevhenii Yusenkov @YevheniiYusenkov
22.2.5
22.2.5 (2025-12-15)
🩹 Fixes
- core: create all tables upfront when creating the database (#33843)
- core: restore linkTaskDetails param for backwards compatibility (#33874, #33843)
- misc: send connectUrl in completion metadata (#33878)
❤️ Thank You
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
22.2.4
22.2.4 (2025-12-15)
🚀 Features
- js: improve SWC compilation error logging (#33297)
🩹 Fixes
- angular: collect known tsconfig files from non-buildable angular libraries in migration (#33834, #33705)
- angular: improve error message when using esbuild-based build targets and generating cypress ct (#33846, #33329)
- core: improve performance of buildExplicitPackageJsonDependencies (#33791)
- core: do not invoke prettier with
--writeand--list-differentwhen unsupported (#33857, #33658, #31951) - core: preserve command output in TUI summary for non-cached tasks (#33673)
- core: update CNW messaging and remove cancel event from SIGINT (#33872)
- js: prevent crash when terminating task using the
@nx/js:swcexecutor (#33845, #31938) - js: handle workspace packages when nx.name differs from package.json.name (#33583, #33582)
- js: resolve nx binary from workspace root in node executor (#33842, #33776)
- module-federation: check port availability before starting remote proxies (#33871, #33470)
- nest: ensure library is generated with correct outputPath for TS Soln #32060 (#33864, #32060)
- node: sourceMaps option to sourceMap in webpack config (#33333)
- react: update template comment to be valid css (#33169, #20192639)
- release: {releaseGroupName} not interpolated in changelog tag/releaseTagPattern (#33779)
- repo: install correct Rust target for x86_64 macOS build (#33853)
❤️ Thank You
- AgentEnder @AgentEnder
- Claude
- Claude Opus 4.5
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- Hamza Khan @112khanhamza
- Jack Hsu @jaysoo
- James Kraus
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Jonathan Gelin @jogelin
- Leosvel Pérez Espinosa @leosvelperez
- Miroslav Jonaš @meeroslav
- Timo Santi @diginikkari
- Yevhenii Yusenkov @YevheniiYusenkov
22.2.3
22.2.2
22.2.2 (2025-12-12)
🚀 Features
- core: add CnwError class for typed error handling in create-nx-workspace (#33839)
- js: add option for using tsgo compiler when inferring build and typecheck tasks (#33821, #32591)
- webpack: add support for merging externals to NxAppWebpackPlugin (#33833)
🩹 Fixes
- core: add pnpm/yarn support for CNW templates (#33827)
- js: recognize NodeNext as ESM (#31508)
- js: display pnpm publish errors without requiring --verbose (#33837)
- js: make CopyAssetsHandler per-file logs opt-in via verbose mode (#33835, #33521)
- rspack: enable build mode for TypeScript checker in TS solution setups (#33447)
- testing: update jest ci target to forward top level args (#31379)
- webpack: interpolate process.env more verbosely to reduce bundle size with DefinePlugin (#30826)
❤️ Thank You
- Aaro Karell @ajkarell
- Andreas Jagiella @AndreasJagiella-EH
- Claude Opus 4.5
- Colum Ferry @Coly010
- David Antoon @davidantoon
- Jack Hsu @jaysoo
- Jonathan Wilbur @JonathanWilbur
- Kamenskih Dmitriy
- Leosvel Pérez Espinosa @leosvelperez
- Nicholas Cunningham @ndcunningham
22.2.1
22.2.1 (2025-12-11)
🚀 Features
- core: add NX_DEFAULT_OUTPUT_STYLE env var (#33493, #27490)
- rspack: add support for
cssFilenameconfig #32498 (#32506, #32498) - testing: add option to playwright preset to open html report (#31282)
🩹 Fixes
- angular: process only the in progress entry points in ng-packagr-lite's write bundles transform function (#33784, #3172, #33560)
- bundling: correct project path for createTmpTsConfig (#31314, #31522)
- core: optimize pnpm lockfile parsing with pre-built indexes (#33750, #32669, #32254, #33751)
- core: share visited Set across affected graph traversal (#33756, #32265)
- core: set max listeners for process in task orchestrator (#33596, #32439)
- core: exit with error when generator prompts fail (#33691)
- core: fix record stat on initial CNW call (#33783)
- core: ensure
terminalOutputis always a string in task results (#33782, #32675) - core: improve node creation for pnpm parser (#33788)
- js: use Set for O(1) package.json root lookup (#33757, #32265)
- module-federation: normalize workspace protocol versions in requiredVersion (#33733, #31397, #33734)
- repo: fix dotnet installation on Windows (#33786)
- repo: restore mise tools in e2e-matrix workflow (#33785, #33772)
- repo: install nightly Rust for WASM build in publish workflow (#33792, #33772)
- repo: use RUSTUP_TOOLCHAIN env var for WASM builds (#33794)
- repo: revert to older nightly Rust for WASM builds (#33797)
- storybook: conditionally include node imports only for non-angular frameworks (#33728)
- vite: update worker configuration in generator to follow Vite's … (#30465)
- webpack: show webpack chunks when verbose (#30960)
❤️ Thank You
- Adwait Athale @adwait1290
- Alexey Balmasov
- Andrew Ovens @avens19
- Ashish Shanker @AshishShanker
- Colum Ferry @Coly010
- Guilherme Siquinelli
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Joe Prisk
- Kasper Christensen
- Leosvel Pérez Espinosa @leosvelperez
- Miguel @mpsanchis
- Miroslav Jonaš @meeroslav
- ResonAtom
- Svyatoslav Zaytsev @MillerSvt
22.2.0
22.2.0 (2025-12-08)
🚀 Features
- core: add multiple Nx version detection to nx report (#33599)
- core: add template support to create-nx-workspace (#33468)
- docker: auto-select version scheme when only one is available (#33671)
- expo: support Expo 54 (#33612)
- gradle: add targetNamePrefix option to mark all gradle targets (#33685)
- linter: add util to load eslint rules from a directory (#33543)
- maven: update Maven plugin version to 0.0.11 (#33713)
- nextjs: add migration to add AI instructions for upgrading to Next 16 (#33608)
- nuxt: support nuxt v4 (#33611)
- nx-cloud: prepend nx version to stats metadata (#33568)
- storybook: support storybook 10.1 (#33637)
- vite: add vitest 4 migration for users using @nx/vite (#33630)
- vite: add migration to add @nx/vitest (#33669)
- vitest: update @analogjs/vitest-angular to 2.1.2 #33602 (#33681, #33602)
- vitest: make initial generation for JS projects more lightweight (#33670)
🩹 Fixes
- angular-rspack: use CJS when serving applications for HMR #33106 (#33693, #33106)
- angular-rspack: ensure rebuild logs are only printed once (#33694)
- bundling: replace rollup-plugin-copy with nx copy assets plugin (#33601, #32398)
- bundling: set buildLibsFromSource in normalize options for Rollup (#33679)
- core: don't presume a task is long running if its marked cacheable (#33545, #32610)
- core: daemon command should exit at end (#33547)
- core: provide error when nested graph construction would occur invoked during createNodes (#33541, #29618)
- core: filter out automated release commits in getCommitsRelevantToProjects (#33482)
- core: make daemon socket path unique per process to prevent race condition (#33580, #33491)
- core: use nx-mcp for older nx versions instead of nx mcp (#33553)
- core: propagate continuous task failures to dependent tasks (#33492)
- core: kill child process tree in different running tasks (#33636, #32438, #33460)
- core: include create-nx-workspace in migration package group (#33643, #33585)
- core: suppress git stderr output in parseGitOutput (#33645, #33330)
- core: prevent Nx Console prompt from blocking non-interactive commands (#33646, #33552)
- core: ensure perf logs are flushed before exit in graph command (#33621)
- core: nx-schema default value for preserveMatchingDependencyRanges should have changed in v22 (#33587)
- core: stop adding outdated vscode/cursor rule files to gitignore (#33680)
- core: sanitize project names for valid git tag names in nx release (#33692, #33262)
- core: optimize bun lockfile parser (#33623)
- core: cnw sends correct selectedRepositoryName; prints instructions when user Ctrl+C (#33699)
- core: use Set for O(1) visited node lookup in hasPath (#33754, #32265)
- docker: fix releasing non docker projects (#33667)
- gradle: do not add gradle plugin to plugins block if using version catalogs (#33763)
- graph: align exclude flag with others by using findMatchingProjects (#33550)
- graph: surface task graph client error via error toast (#33600)
- js: ensure copy-workspace-modules copies transitive workspace dependencies (#33570)
- linter: handle various flat config override structures (#33548, #31796)
- linter: base eslint config should ignore out-tsc directories (#33639)
- linter: update generators to use ESLint v9 compatible versions (#33633)
- maven: remove incorrect threadSafe to parallelism mapping (#33678)
- misc: update output location of ai-migration files (#33696)
- nest: set moduleResolution to node to prevent TS5095 error (#33607, #33589)
- nextjs: make migration to next 16 optional (#33627)
- node: set generatePackageJson:false for TS Solution workspaces (#33606)
- nuxt: do not import base eslint config for root project (#33642)
- nuxt: update preset test for v4 app directory structure (#33648)
- react: exclude tailwind from CSS modules syntax in component generator (#33574)
- react: update @emotion/styled to latest version #31252 (#33690, #31252)
- release: ensure emoji is not repeated in breaking changes summary (#33605)
- release: interpolate releaseGroupName in getLatestGitTagForPattern (#33674)
- release: ensure --preid flag considers stable tags for version determination (#33703, #33343)
- repo: enable wayland-data-control feature for arboard (#33675)
- storybook: remove STORYBOOK_PROJECT_ROOT when running automigrate to prevent hanging (#33567, #32492)
- storybook: remove upper bound of migration requires (#33613)
- testing: remove declare global wrapper from cypress commands.ts template (#33573, #32930)
- testing: remove --no-experimental-strip-types flag from @nx/jest/plugin + migrate to jest.config.cts if needed (#33657)
- vite: generate .mts config files to force ESM (#33518)
- vite: vitest executor to return the async iterable #33588 (#33668, #33588)
❤️ Thank You
- Adwait Athale @adwait1290
- AgentEnder @AgentEnder
- Berend de Boer @berenddeboer
- Chau Tran @nartc
- Claude
- Colum Ferry @Coly010
- Coly010 @Coly010
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Jonathan Gelin @jogelin
- Kasper Christensen @fALKENdk
- Laney Pouzet
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- MaxKless @MaxKless