Releases: nrwl/nx
Releases · nrwl/nx
Release list
23.2.0-beta.7
23.2.0-beta.7 (2026-08-11)
🚀 Features
- linter: add the @nx/oxlint plugin (#36491)
🩹 Fixes
- testing: install typescript in npm e2e workspaces to keep tsquery off TypeScript 7 (#36478)
❤️ Thank You
- FrozenPandaz @FrozenPandaz
- Jason Jean @FrozenPandaz
- Juri @juristr
23.2.0-beta.6
23.2.0-beta.6 (2026-08-11)
🩹 Fixes
- core: restrict daemon and plugin worker socket access to the owning user (#36370)
- core: drain stdout before exiting nx run-many and nx run (#36607, #36606)
- core: re-spawn nx migrate without a shell to preserve argv exactly (#36215)
- devkit: honour cascading ignore files in tree walks and generator formatting (#36575)
- misc: use workspaceRoot in workspaceModule path (#35142)
- nx-dev: update docs pricing link (#36625)
- vitest: use esm config files and import.meta.dirname (#36605)
- vitest: generate the requested e2e target in inferred workspaces and de-flake the generated plugin e2e (#36623)
❤️ Thank You
- AgentEnder @AgentEnder
- Craigory Coppola @AgentEnder
- David Johnson @djohnson-aperture
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Nicole Oliver
- Tyler Kindy
23.2.0-beta.5
23.2.0-beta.5 (2026-08-07)
🚀 Features
- angular: add support for Angular v22.1 (#36521)
- core: add nx migrate --run-migration to run a single migration (#36407)
- core: let migration generators skip their AI step (#36532)
- core: show Cloud app link for remote cache instead of docs (#36460)
- nx-cloud: generate .nx/ci-config.yaml for agent distribution (#36504)
- nx-cloud: add nx start-nx-agents as an alias for nx-cloud start-nx-agents (#36572)
- release: support tag-based project selection (#36537)
🩹 Fixes
- angular: keep buildable libraries private (#36545)
- angular-rspack: stop builds crashing on non-array styleUrls (#36550)
- core: normalize resolved module paths (#36556, #36549)
- core: stop pruneProjectGraph from mutating the source project graph (#36517, #36470)
- core: make preset empty work without github.com and improve template download errors (#36508)
- core: drain to stdout before exiting
nx affected(#36569, #36568) - core: update brace-expansion to 5.0.9 for CVE-2026-14257 (#36577)
- docker: skip unchanged version action projects (#36542)
- misc: move plugin internal imports to devkit/internal (#36430)
- nx-dev: keep the kb index working for uncommitted articles (#36588)
- react: make module federation packages optional peer dependencies (#36492)
- release: ignore deleted projects in historical affectedness (#36538)
- release: support custom conventional commit types (#36539)
- release: skip changelog resolution for unversioned projects (#36544)
- release: preserve package.json formatting (#36540)
- testing: reserve dev-server ports in the react-router e2e suite (#36585)
❤️ Thank You
- Aaron Thomas @ATKasem
- AI-JamesHenry @AI-JamesHenry
- ATKasem @ATKasem
- Craigory Coppola @AgentEnder
- Harsh Mathur @harshmathurx
- Jack Hsu @jaysoo
- Jamie Trip
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- Optischa @Optischa
23.2.0-beta.4
23.2.0-beta.4 (2026-07-30)
🩹 Fixes
- core: make tui cloud icon visible on light terminal themes (#36495)
- core: pin typescript in preset dependencies so npm cannot hoist typescript 7 (#36497)
- core: bump pinned axios and brace-expansion past vulnerable versions (#36507, #36474)
- core: parse pnpm lockfiles that omit the packages block (#36512)
- core: keep real dependencies when omitting peers from npm temp installs (#36518)
- devkit: resolve ensurePackage against the workspace (#36496)
- docker: run release pipeline docker commands without a shell (#36505)
- repo: serialize cypress installs and skip the binary when unused (#36493)
❤️ Thank You
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
23.1.1
23.1.1 (2026-07-30)
🚀 Features
- core: derive stable repo key from normalized remote and relative path (#36439)
- repo: add react + vite + vitest + playwright example (#35921)
🩹 Fixes
- angular-rspack: speed up builds and align behavior with the esbuild application builder (#36268, #34936)
- bundling: support TypeScript esbuildConfig files in the esbuild executor (#36352, #36349)
- bundling: acknowledge @swc/core build scripts when configuring rollup (#36412)
- core: speed up npm lockfile parsing (#36216)
- core: speed up lockfile parsing and catalog resolution (#36223)
- core: show performance report recommendations only when actionable (#36344)
- core: close daemon log descriptors after spawn to avoid Node 26 crash (#36280)
- core: prevent shell injection in nx import (#36348)
- core: correct the 22.6.0 gitignore and analytics migration wiring (#36356)
- core: support npm 12 and pnpm in the package provenance check (#36354, #36338)
- core: honor pnpm minimumReleaseAge config on pnpm 11 (#36335, #36330)
- core: support pnpm 11 patched dependency hashes (#36360)
- core: resolve name refs copied into pattern-matched target arrays (#36359)
- core: resolve source-loaded plugin transitive workspace imports (#36296)
- core: unbreak pnpm 11 installs by acknowledging build-script deps from generators (#36302)
- core: include continuous and default-config dependencies in show target (#36374)
- core: make unit tests pass locally regardless of invoking package manager (#35994)
- core: respect --aiAgents none to skip AI agent file generation (#34944, #34692)
- core: use --config.frozen-lockfile=false for pnpm add during migrate (#36337)
- core: run selected projects with --exclude-task-dependencies (#35562)
- core: stop passing git revisions through a shell in affected commands (#36379)
- core: collect trickling watcher bursts fully on daemon force-flush (#36391)
- core: report tasks running in another Nx process in the inline TUI (#36341)
- core: stop ratatui cursor queries from racing the TUI event stream (#36318)
- core: render critical-path tasks as a nested list in the job summary (#36394)
- core: keep pnpm-workspace.yaml comments and read package.json as jsonc (#36411)
- core: support multiple brace groups in workspace glob matching (#36395)
- core: handle CRLF line endings in pnpm multi-document lockfiles (#36419, #35828, #35840)
- core: correct glob pattern expansion for ZeroOrOne groups (#31857)
- core: stop re-querying confirmed cache misses in task orchestrator (#36301, #35632)
- core: sample project graph perf span telemetry per session at 10% (#36420)
- core: strip terminal query sequences when replaying task output (#36432)
- core: preserve FORCE_COLOR=0 intent for forked child tasks (#35293)
- core: handle colons in target name when resolving inputs to generate graph (#36429, #33710)
- core: merge default plugins through the source-map-aware merge path (#36257)
- core: keep nx migrate on the requested version when release-age gates interfere (#36444)
- core: avoid bogus duplicate project name errors when generating nested apps (#36458)
- core: pin typescript in preset dependencies so npm cannot hoist typescript 7 (#36497)
- core: bump pinned axios and brace-expansion past vulnerable versions (#36507, #36474)
- core: parse pnpm lockfiles that omit the packages block (#36512)
- core: keep real dependencies when omitting peers from npm temp installs (#36518)
- devkit: resolve ensurePackage against the workspace (#36496)
- docker: run release pipeline docker commands without a shell (#36505)
- js: support private methods and static blocks in babel preset (#36218, #36205)
- js: parse pnpm/npm publish JSON containing braces in file paths (#36241, #36236)
- js: resolve the verdaccio bin through its package.json (#36479)
- js: resolve package and extension-less tsconfig extends read from the tree (#36271)
- linter: keep override parser when convert-to-flat-config uses FlatCompat (#36363)
- linter: use projectService for typed linting in flat configs (#35727)
- misc: resolve CSS url() assets on Windows in postcss-cli-resources (#36353, #36336)
- misc: suppress outdated disclaimer for unsupported AI agents with AGENTS.md (#36324, #36264)
- misc: bump ci-workflow generator to node 24 and current action majors (#36364)
- misc: preserve package alias keys in generated package.json (#35207)
- misc: prevent crash when opening browser in Podman+WSL container (#34639)
- module-federation: do not cache static remote assets in the dev-server plugin (#36279, #36278)
- module-federation: strip version suffix from npm dependency names for bun compatibility (#34960)
- react-native: include migration docs in the built package (#36378)
- release: only extract body issue references linked via closing keywords (#36326, #123)
- release: align VersionDataEntry dependency types with VersionActions to allow null values (#35932, #35913)
- repo: bump decompress to safe version (#36333)
- repo: drop stale e2e dependsOn overrides that omit the local registry (#36482)
- repo: serialize cypress installs and skip the binary when unused (#36493)
- rspack: lazy-load @rspack/core in create-compiler to avoid eager ESM resolution (#36476)
- storybook: update configuration generator nx.json (#34880, #34879)
- testing: add @swc/core when configuring jest with the swc compiler (#36409)
- vite: prevent watch false leaking into dev server config (#36080, #36078)
- vitest: honor watch config and keep --ui open in the test executor (#36237, #30263)
- vitest: generate root vitest.config.ts instead of deprecated vitest.workspace (#36316, #36311)
- vitest: prevent out-of-memory crash during atomized test graph creation (#36339, #36315)
- webpack: disable extractComments on the swc terser minimizer (#36238, [#36233](https://github.com/nrw...
22.7.8
22.7.8 (2026-07-30)
🩹 Fixes
- angular-rspack: dispose stylesheet bundler so one-shot builds exit (#35869)
- core: use workspace package manager when fetching migrations via install (#35866)
- core: omit peer dependencies when installing packages to a temp dir (#36295)
- core: prevent shell injection in nx import (#36348)
- core: stop passing git revisions through a shell in affected commands (#36379)
- core: allow nx build scripts in generated pnpm-workspace.yaml (#35564)
- core: acknowledge @swc/core build script in generated pnpm-workspace.yaml (#35608)
- core: keep real dependencies when omitting peers from npm temp installs (#36518, #36295)
- core: bump pinned axios and brace-expansion past vulnerable versions (#36507, #36474)
- detox: resolve jest versions locally instead of importing @nx/jest internals (3ce3f6ab6e)
- docker: run release pipeline docker commands without a shell (#36505)
- js: exclude typescript 7 from supported versions on 22.7.x (dc804964e9)
- js: resolve the verdaccio bin through its package.json (#36479)
- misc: use default import for chalk in @nx/workspace output.ts (#35523, #35521, #34111, #21201, #26667)
- repo: use default inputs instead of the '...' token in nx-dev on 22.7.x (#35530)
- repo: trust wix/brew tap so macOS detox CI can install applesimutils (#36146)
- testing: seed typescript before plugins in e2e workspaces to avoid TS7 stub (7f5ffbfcbc)
❤️ Thank You
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Jonathan Garvey @jdgarvey
- Miroslav Jonaš @meeroslav
23.2.0-beta.3
23.2.0-beta.3 (2026-07-28)
🚀 Features
- core: add bun dependency-catalog support (#36434)
- core: derive stable repo key from normalized remote and relative path (#36439)
🩹 Fixes
- angular-rspack: speed up builds and align behavior with the esbuild application builder (#36268, #34936)
- core: preserve FORCE_COLOR=0 intent for forked child tasks (#35293)
- core: handle colons in target name when resolving inputs to generate graph (#36429, #33710)
- core: merge default plugins through the source-map-aware merge path (#36257)
- core: keep nx migrate on the requested version when release-age gates interfere (#36444)
- core: avoid bogus duplicate project name errors when generating nested apps (#36458)
- js: resolve the verdaccio bin through its package.json (#36479)
- js: resolve package and extension-less tsconfig extends read from the tree (#36271)
- linter: use projectService for typed linting in flat configs (#35727)
- misc: preserve package alias keys in generated package.json (#35207)
- misc: prevent crash when opening browser in Podman+WSL container (#34639)
- react-native: include migration docs in the built package (#36378)
- repo: drop stale e2e dependsOn overrides that omit the local registry (#36482)
- rspack: lazy-load @rspack/core in create-compiler to avoid eager ESM resolution (#36476)
- vitest: prevent out-of-memory crash during atomized test graph creation (#36339, #36315)
❤️ Thank You
- AgentEnder @AgentEnder
- Amp
- Charlie Croom
- Claude
- Claude Fable 5
- Claude Sonnet 5
- Cogi @dbwodlf3
- Copilot @Copilot
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Stevenson
- Jaeil Yu
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Louis DeScioli
- Miroslav Jonas @meeroslav
23.2.0-beta.2
23.2.0-beta.2 (2026-07-21)
🚀 Features
- core: forward mouse and resize events to tasks running in the TUI's pty (#36322)
- nx-plugin: add vitest support for e2e tests (#34041)
🩹 Fixes
- bundling: acknowledge @swc/core build scripts when configuring rollup (#36412)
- core: keep pnpm-workspace.yaml comments and read package.json as jsonc (#36411)
- core: support multiple brace groups in workspace glob matching (#36395)
- core: handle CRLF line endings in pnpm multi-document lockfiles (#36419, #35828, #35840)
- core: correct glob pattern expansion for ZeroOrOne groups (#31857)
- core: stop re-querying confirmed cache misses in task orchestrator (#36301, #35632)
- core: sample project graph perf span telemetry per session at 10% (#36420)
- core: strip terminal query sequences when replaying task output (#36432)
- testing: add @swc/core when configuring jest with the swc compiler (#36409)
❤️ Thank You
- AgentEnder @AgentEnder
- Copilot @Copilot
- Craigory Coppola @AgentEnder
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
23.2.0-beta.1
23.2.0-beta.1 (2026-07-20)
🚀 Features
- repo: add react + vite + vitest + playwright example (#35921)
🩹 Fixes
- core: make unit tests pass locally regardless of invoking package manager (#35994)
- core: respect --aiAgents none to skip AI agent file generation (#34944, #34692)
- core: use --config.frozen-lockfile=false for pnpm add during migrate (#36337)
- core: run selected projects with --exclude-task-dependencies (#35562)
- core: stop passing git revisions through a shell in affected commands (#36379)
- core: collect trickling watcher bursts fully on daemon force-flush (#36391)
- core: report tasks running in another Nx process in the inline TUI (#36341)
- core: stop ratatui cursor queries from racing the TUI event stream (#36318)
- core: render critical-path tasks as a nested list in the job summary (#36394)
- linter: keep override parser when convert-to-flat-config uses FlatCompat (#36363)
- module-federation: do not cache static remote assets in the dev-server plugin (#36279, #36278)
- module-federation: strip version suffix from npm dependency names for bun compatibility (#34960)
- release: align VersionDataEntry dependency types with VersionActions to allow null values (#35932, #35913)
- storybook: update configuration generator nx.json (#34880, #34879)
- vite: prevent watch false leaking into dev server config (#36080, #36078)
- webpack: propagate watch option from executor to webpack config (#34927, #22945)
❤️ Thank You
- Craigory Coppola @AgentEnder
- David Johnson @djohnson-aperture
- duckot13
- FrozenPandaz @FrozenPandaz
- ilan weissberg @ilanwei1
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Martijn van der Meij @Squixx
- Prafful S @prafful1234
- Richard Roozenboom @Roozenboom
- Thees Hengstermann @theescodes
- Tushar Khadde @Tusharkhadde
23.2.0-beta.0
23.2.0-beta.0 (2026-07-17)
🚀 Features
- core: confirm before creating migration commits on the default branch (#36314)
- core: add a full-width TUI status bar and vim-style pane search (#36263)
🩹 Fixes
- angular: make webpack-related packages optional peer dependencies (#36310)
- bundling: support TypeScript esbuildConfig files in the esbuild executor (#36352, #36349)
- core: speed up npm lockfile parsing (#36216)
- core: speed up lockfile parsing and catalog resolution (#36223)
- core: show performance report recommendations only when actionable (#36344)
- core: close daemon log descriptors after spawn to avoid Node 26 crash (#36280)
- core: prevent shell injection in nx import (#36348)
- core: correct the 22.6.0 gitignore and analytics migration wiring (#36356)
- core: support npm 12 and pnpm in the package provenance check (#36354, #36338)
- core: honor pnpm minimumReleaseAge config on pnpm 11 (#36335, #36330)
- core: support pnpm 11 patched dependency hashes (#36360)
- core: resolve name refs copied into pattern-matched target arrays (#36359, #36302)
- core: resolve source-loaded plugin transitive workspace imports (#36296)
- core: unbreak pnpm 11 installs by acknowledging build-script deps from generators (#36302)
- core: include continuous and default-config dependencies in show target (#36374)
- js: support private methods and static blocks in babel preset (#36218, #36205)
- js: parse pnpm/npm publish JSON containing braces in file paths (#36241, #36236)
- misc: resolve CSS url() assets on Windows in postcss-cli-resources (#36353, #36336, #34676)
- misc: suppress outdated disclaimer for unsupported AI agents with AGENTS.md (#36324, #36264)
- misc: bump ci-workflow generator to node 24 and current action majors (#36364)
- release: only extract body issue references linked via closing keywords (#36326, #35682, #35764, #13420, #781, #3175, #418, #2292, #123)
- repo: bump decompress to safe version (#36333)
- vitest: honor watch config and keep --ui open in the test executor (#36237, #30263)
- vitest: generate root vitest.config.ts instead of deprecated vitest.workspace (#36316, #36311)
- webpack: disable extractComments on the swc terser minimizer (#36238, #36233)
- webpack: bundle non-buildable library subpaths with fallback-array exports (#36313, #36309)
❤️ Thank You
- Aaron Thomas @ATKasem
- Charlie Croom
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Miroslav Jonaš @meeroslav