Releases: nrwl/nx
Releases · nrwl/nx
23.0.0-beta.16
23.0.0-beta.16 (2026-05-17)
🚀 Features
- core: enable native Node.js TypeScript stripping by default (#35608)
🩹 Fixes
⚠️ testing: migrate @nx/jest to local dist build (#35713)
⚠️ Breaking Changes
- testing: migrate @nx/jest to local dist build (#35713)
❤️ Thank You
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
23.0.0-beta.15
23.0.0-beta.14
23.0.0-beta.14 (2026-05-16)
🩹 Fixes
⚠️ core: remove deprecated initTasksRunner API (#35708, #29993)- core: do not drop target defaults in 23.0.0 array migration (#35711)
- js: add backwards-compatible ./src/internal export shim for conformance@4/5 (#35710, #11347)
⚠️ Breaking Changes
- core: remove deprecated initTasksRunner API (#35708, #29993)
** The deprecatedinitTasksRunnerexport is removed
from thenxpackage. Consumers should userunDiscreteTasks/
runContinuousTasksinstead.Related Issue(s)
Internal: NXC-4307
❤️ Thank You
- Jason Jean @FrozenPandaz
23.0.0-beta.13
23.0.0-beta.13 (2026-05-15)
🚀 Features
- core: rename nx watch --includeDependentProjects to --includeDependencies (#35699)
- core: support filtered array-shape targetDefaults with projects and source (#35340)
- linter: allow prompt-only entries in migration nx-plugin-checks (#35700, #35638)
⚠️ release: drop deprecated releaseTag* flat properties and update v23 defaults (#35694)
🩹 Fixes
- core: use native graceful process tree shutdown (#33655, #32438)
- core: warn instead of silently dropping legacy 'self'/'dependencies' dependsOn values (#35687, #35648)
- core: preserve input order in createNodes plugin results (#35595)
- gradle: pin generated e2e project toolchain to installed JDK (#35703)
- js: build to local dist and use nodenext (#35538)
- rspack: multi-version support compliance for @nx/rspack and @nx/rsbuild (#35676)
⚠️ Breaking Changes
- release: drop deprecated releaseTag* flat properties and update v23 defaults (#35694)
❤️ Thank You
- AI-JamesHenry @AI-JamesHenry
- Alex
- Claude Opus 4.6
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
23.0.0-beta.12
23.0.0-beta.12 (2026-05-14)
🚀 Features
- core: support
promptfield in migration entries (#35638)
🩹 Fixes
- core: improve nx migrate multi-major flag handling and feedback (#35673, #35497, #35444)
- linter: only rewrite workspace-package peer deps to workspace:* (#35423, #35318, #33417)
- misc: stop inferring
projects: 'self'independsOnentries (#35686) - testing: multi-version support compliance for @nx/cypress (#35670)
- testing: correct yargs-parser import in getJestProjectsAsync (#35672, #35654)
❤️ Thank You
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
22.7.2
22.7.2 (2026-05-14)
🚀 Features
- gradle: stream batch task results to nx as they finish (#35487)
- nx-dev: track docs analytics for code copy, LLM prompt, YouTube (#35526)
- testing: add migration for Jest 30 snapshot guide link (#35629)
🩹 Fixes
- angular: disable vitest watch by default (#35493)
- angular-rspack: keep root-scoped assets out of per-locale i18n emit (#35621)
- bundling: include tsconfig solution input for rollup (#35476)
- bundling: include tsconfig solution input for webpack (#35477, #35476)
- core: bump axios to 1.16.0 for all packages (#35568)
- core: add provenance check in nx console status path (#35485)
- core: remove access control header from graph app (#35494)
- core: ensure verbose logs go to stderr and daemon logs are properly decorated (#34358)
- core: show flaky-task count in run summary (#35491)
- core: unique telemetry user_id; expose workspace_id dimension (#35553)
- core: update minimatch to 10.2.5 (#35569, #34660)
- core: restore use-legacy-versioning shim for @nx/js@21 ensurePackage path (#35574)
- core: isolate NX_PARALLEL env var in parallel-related specs (#35579)
- core: skip handleimport miss path when nx key packages are absent (#35596)
- core: use gethostuuid(3) instead of ioreg on macOS (#35599)
- core: isolate cache env vars in splitArgs spec (#35584)
- core: enable node's native v8 compile cache support (#35415, #20454)
- core: support skipped batch tasks end-to-end and fix TUI double logs (#35617)
- core: keep TUI task selection on the in-progress section (#35640)
- core: allow
nx mcpto run outside of an Nx workspace (#35655) - core: cast perf entries to PerformanceMeasure for detail access (43c0c821ba)
- devkit: exclude dist from jest module path scan (#35615)
- devkit: expand @nx/devkit/internal re-exports for cherry-picked v23 deep-import migration (#35541)
- dotnet: correct output paths for Web SDK and centralized dist setups (#35398)
- gradle: exclude batch-runner from jest haste-map crawl (#35501)
- gradle: exclude project-graph from jest module path scan (#35609)
- gradle: support Windows file paths (#35184, #34987)
- js: strip glob from inferred outputs before resolving as path (#35463, #35452)
- js: reference vitest.config in eslint dep-checks for vitest libs (#35460, #33670, #35450)
- js: include transitive workspace deps in pruned pnpm lockfile (#35532, #35347, #34655)
- linter: prevent ENOENT crash in getRelativeImportPath for unresolvable paths (#35007, #13872, #34066, #30491, #16716, #35006, #21889, #32190)
- maven: skip attached artifacts that fail to materialize in batch record (#35473)
- maven: serialize Maven 4 build state recording (#35555)
- maven: widen runCLI timeout for --no-batch maven.test.ts cases (#35589)
- nx-dev: document nested CLI subcommands beyond two levels (#35519)
- nx-dev: short-circuit bot probes in framer rewrite edge function (#35527)
- react: withSvgr migration preserves other properties (#35484)
- repo: clear NX_INVOCATION_ROOT_PID in run-native-target to avoid recursion false-positive (443dee0b22)
- repo: revert deep-import rewrites that targeted v23-only @nx/devkit/internal entry (ac8187963d)
- repo: unblock 22.7.x cargo tests and nx-build e2e (#34285)
- repo: expand "..." spread token in graph typecheck inputs (#34285, #35458)
- testing: pin jest to ~30.3.0 to avoid jest-runtime 30.4 RN incompat (#35618)
- testing: handle absolute cypress screenshotsFolder/videosFolder paths (#35624)
- testing: exclude dist and out-tsc from default jest module path scan (#35619)
- testing: update remaining snapshot guide links missed by migration (cd350c1140)
❤️ Thank You
- Adam Keenan @adamk33n3r
- AgentEnder @AgentEnder
- beeman
- Claude
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Max Kless
- MaxKless @MaxKless
- Optischa @Optischa
- Sharon Lougheed
23.0.0-beta.11
23.0.0-beta.11 (2026-05-13)
🩹 Fixes
- core: freshness-gate daemon recompute + per-OS force-flush grace (#35650, #35646)
- gradle: add transitive:true to all tasks (#35677)
❤️ Thank You
- FrozenPandaz @FrozenPandaz
- Jason Jean @FrozenPandaz
- Louie Weng @lourw
23.0.0-beta.10
23.0.0-beta.10 (2026-05-13)
🚀 Features
⚠️ bundling: remove SVGR option and provide withSvgr migration (#35611)- bundling: add Vite 7 -> 8 migrations (#35614)
- core: add --mode and --multi-major-mode flags to nx migrate (#35497)
⚠️ misc: remove deprecated js option from component generators (#35616, #29111)- testing: bump cypress to 15.14 + remove stale Vite 8 guard (#35613)
- testing: add migration for Jest 30 snapshot guide link (#35629)
🩹 Fixes
- angular: multi-version support compliance (#35587)
- angular-rspack: exclude eslint config from tailwind v4 source scan (#35663)
- core: support skipped batch tasks end-to-end and fix TUI double logs (#35617)
- core: keep TUI task selection on the in-progress section (#35640)
- core: drain in-flight notify events in daemon force_flush_pending (#35646, #35630)
⚠️ core: drop legacy 'self'/'dependencies' magic strings in dependsOn (#35648, #4017)- core: correct TUI sidebar viewport height off-by-one (#34682)
- core: allow
nx mcpto run outside of an Nx workspace (#35655) - core: warn before installing unknown npm packages as preset (#35644)
- gradle: support Windows file paths (#35184, #34987)
- linter: improve convert-to-flat-config output fidelity (#35330)
- misc: vite migration import fix and ai doc corrections (#35647)
- testing: correct paths and reserve ports across flaky React MF e2e tests (#35633, #34148, #32948, #35325)
- testing: multi-version support compliance for @nx/playwright (#35642)
- testing: exclude dist and out-tsc from default jest module path scan (#35619)
⚠️ Breaking Changes
- misc: remove deprecated js option from component generators (#35616, #29111)
- core: drop legacy 'self'/'dependencies' magic strings in dependsOn (#35648, #4017)
- bundling: remove SVGR option and provide withSvgr migration (#35611)
❤️ Thank You
- Adam Keenan @adamk33n3r
- Amp
- Charlie Croom
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Max Kless
23.0.0-beta.9
23.0.0-beta.9 (2026-05-08)
🚀 Features
⚠️ angular: remove deprecated ngrx generator (#35567)- misc: drop Node 20 support and bump @types/node (#35591)
⚠️ misc: deprecate executors with inferred-plugin replacements (#35576, #35517)⚠️ vite: remove vitest support in favor of @nx/vitest (#35517)
🩹 Fixes
- angular-rspack: keep root-scoped assets out of per-locale i18n emit (#35621)
- core: skip handleimport miss path when nx key packages are absent (#35596)
- core: use gethostuuid(3) instead of ioreg on macOS (#35599)
- core: isolate cache env vars in splitArgs spec (#35584)
- core: enable node's native v8 compile cache support (#35415, #20454)
- core: error with helpful error instead of looping nx invocations (#34820)
- devkit: exclude dist from jest module path scan (#35615)
- gradle: exclude project-graph from jest module path scan (#35609)
- linter: prevent ENOENT crash in getRelativeImportPath for unresolvable paths (#35007, #13872, #34066, #30491, #16716, #35006, #21889, #32190)
- maven: widen runCLI timeout for --no-batch maven.test.ts cases (#35589)
- release: restore packages/devkit/package.json after release (#35598, #34946)
- repo: drop node 26 from nightly matrix until playwright/yauzl fix (#35626, #40724, #168)
- testing: pin jest to ~30.3.0 to avoid jest-runtime 30.4 RN incompat (#35618)
- testing: handle absolute cypress screenshotsFolder/videosFolder paths (#35624)
⚠️ Breaking Changes
- misc: deprecate executors with inferred-plugin replacements (#35576, #35517)
- angular: remove deprecated ngrx generator (#35567)
The@nx/angular:ngrxgenerator has been removed. Use
@nx/angular:ngrx-root-storefor root state and
@nx/angular:ngrx-feature-storefor feature state instead. - vite: remove vitest support in favor of @nx/vitest (#35517)
❤️ Thank You
- AgentEnder @AgentEnder
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Leosvel Pérez Espinosa @leosvelperez
- Sharon Lougheed
23.0.0-beta.8
23.0.0-beta.8 (2026-05-06)
🚀 Features
⚠️ bundling: drop legacy typescript plugin and align rollup buildLibsFromSource default (#35516)
🩹 Fixes
- core: update minimatch to 10.2.5 (#35569, #34660)
- core: restore use-legacy-versioning shim for @nx/js@21 ensurePackage path (#35574)
- core: isolate NX_PARALLEL env var in parallel-related specs (#35579)
- core: bump axios to 1.16.0 for all packages (#35568)
- dotnet: correct output paths for Web SDK and centralized dist setups (#35398)
- repo: resolve graph-client build-client sandbox violations (#35522)
⚠️ Breaking Changes
- bundling: drop legacy typescript plugin and align rollup buildLibsFromSource default (#35516)
❤️ Thank You
- beeman
- Claude
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Optischa @Optischa