Releases: nrwl/nx
Releases · nrwl/nx
Release list
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
23.1.0
23.1.0 (2026-07-13)
🚀 Features
⚠️ angular: support angular v22 (#35851, #35910)- core: show a performance report at the end of every run (#36077)
- core: support filtered targetDefaults via the nested-array shape (#36049)
- core: re-add isCacheableTask helper (#36177)
- core: add mouse support to the terminal UI (#35868)
- core: scaffold create-nx-workspace into the current directory (#36134)
- expo: support Expo SDK 56 (#35904, #35714)
⚠️ linter: drop eslint v8 support (#36006)- linter: add migration to drop typescript-eslint v8-removed rules from flat configs (#36123)
- misc: add next 14 to 15 and react 18 to 19 upgrade paths (#36031)
- nx-cloud: add utm tracking to clickable cloud prompt links (#36028)
- nx-dev: show product hunt launch banner in docs (#36112)
- nx-dev: show product hunt launch banner in docs" (#36129, #36112)
- release: add option to force changelog generation for programmatic usage (#36242)
- repo: enable the tsgo compiler workspace-wide (#35926, #35047, #35167)
- rspack: support @rspack/core@2 and @rsbuild/core@2 (multi-version compliance) (#35682, #35764, #13420, #781)
- storybook: update Storybook to support Angular 22 (#36293)
- testing: add migration to verify typecheck after the 23.1 migration (#36106)
- vite: add configurable ts paths build/test targets and stabilize build coordination (#34890)
🩹 Fixes
- angular: resolve esbuild option paths relative to the workspace root (#36017, #35936)
- angular: bump prescribed angular version to 22.0.4 (#36130)
- angular: make nx migrate to Angular 22 leave a buildable workspace (#36183)
- angular-rspack: surface compilation failures as build errors and release resources on teardown (#36018)
- bundling: restore preprocessor extensions in postcss normalizeOp… (#36057, #35854)
- bundling: prevent TS6059 when an app imports a workspace lib from source (#36217, #35017)
- core: avoid tsconfig path false positives for sibling project roots (#35796, #35795, #35786)
- core: do not write minimumReleaseAgeExclude during nx migrate (#36045)
- core: do not crash nx migrate on non-semver dependency specifiers (#36051)
- core: format AI-edited files after agentic migrations (#36064)
- core: prefer module.registerHooks to avoid DEP0205 deprecation warning (#36081)
- core: prevent nx migrate crash when include=optional filters out the target package (#36087)
- core: make nx migrate honor preapproved packages and emit a valid temp workspace (#36086)
- core: skip daemon project-graph recompute on no-op file rewrites (#36082)
- core: prevent the TUI from auto-selecting a completed task when a batch finishes (#35833)
- core: deregister pseudo-terminal exit handlers when tasks finish (#36115)
- core: prevent path traversal / zip-slip in self-hosted remote cache (#36116)
- core: respect explicit --nxCloud=skip for AI agents in create-nx-workspace (#36131)
- core: warn when the self-hosted remote cache disables TLS verification (NXC-4593) (#36132, #36116)
- core: throw actionable error when pnpm .modules.yaml is missing (#35666, #35635)
- core: support
${configDir}in tsconfig path alias resolution (#36037, #35804) - core: prevent non-npm devEngines pin from breaking npm registry lookups (#36020, #35815)
- core: clarify nx sync remediation messaging and surface spinner output in non-tty (#35747)
- core: exclude direct-dependency overrides from generated package.json (#36040, #35675)
- core: apply target defaults when project.json overrides an inferred run-commands target with different commands (#36142, #36067)
- core: run the nx.bat wrapper for dot-nx setup on windows (#36048)
- core: refine the end-of-run performance report recommendations (#36127, #36077)
- core: speed up bun lockfile parsing (#36198)
- core: set NX_CLI_SET in batch worker processes (#36214, #36210)
- core: use standard utm params on performance-report links (#36226)
- core: preserve comments in catalog YAML updates (#35733)
- core: box JsonFileSet payload to keep HashInstruction small (#36247, #35248, #36244, #36152)
- core: share workspace fileset hash results instead of deep-cloning per task (#36244, #34971, #34942)
- core: replace per-input visited clones with undo-log scoping in hash planner (#36248, #35071, #36152, #34971, #36244, #35248, #36247)
- core: intern hash instructions in a pool and plan with id lists (#36249, #35071, #36152, #36248)
- core: add trailing space after performance report popup title (#36259)
- core: prevent TUI hint popup from permanently stealing focus (#36256)
- core: detect Codex sandbox on Linux to disable daemon and plugin isolation (#36273)
- core: skip projects-filtered targetDefaults when resolved without a project (#36281, #36049)
- core: size TUI bottom bar reservations to the actual help text (#36261)
- core: defer unresolved spread tokens when merging intermediate target configurations (#36283, #36235)
- core: omit peer dependencies when installing packages to a temp dir (#36295)
- core: include root package.json dependencies for '.'-rooted projects (#36291, #33791, #36290)
- core: reduce task hashing memory usage on large workspaces (#36267, #36152)
- devkit: restore prettier v2 support in formatFiles (#36193)
- gradle: track copy/sync and AGP merge task outputs in dependent task inputs (#36099)
- **gra...
23.1.0-rc.3
23.1.0-rc.3 (2026-07-13)
🚀 Features
- storybook: update Storybook to support Angular 22 (#36293)
🩹 Fixes
- core: omit peer dependencies when installing packages to a temp dir (#36295)
- core: include root package.json dependencies for '.'-rooted projects (#36291, #33791, #36290)
- core: reduce task hashing memory usage on large workspaces (#36267, #36152)
- js: bump @swc/cli to 0.8.1 to patch critical decompress advisory (#36294)
- misc: export @nx/esbuild/executors entry point (#36282)
- testing: template the e2e config for fresh projects instead of ast-parsing it (#36304)
❤️ Thank You
- FrozenPandaz @FrozenPandaz
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Steffen Neubauer @stefreak
23.0.2
23.0.2 (2026-07-10)
🚀 Features
- core: re-add isCacheableTask helper (#36177)
🩹 Fixes
- bundling: prevent TS6059 when an app imports a workspace lib from source (#36217, #35017)
- core: prefer module.registerHooks to avoid DEP0205 deprecation warning (#36081)
- core: prevent nx migrate crash when include=optional filters out the target package (#36087)
- core: make nx migrate honor preapproved packages and emit a valid temp workspace (#36086)
- core: skip daemon project-graph recompute on no-op file rewrites (#36082)
- core: prevent the TUI from auto-selecting a completed task when a batch finishes (#35833)
- core: deregister pseudo-terminal exit handlers when tasks finish (#36115)
- core: prevent path traversal / zip-slip in self-hosted remote cache (#36116)
- core: respect explicit --nxCloud=skip for AI agents in create-nx-workspace (#36131)
- core: warn when the self-hosted remote cache disables TLS verification (NXC-4593) (#36132, #36116)
- core: throw actionable error when pnpm .modules.yaml is missing (#35666, #35635)
- core: support
${configDir}in tsconfig path alias resolution (#36037, #35804) - core: prevent non-npm devEngines pin from breaking npm registry lookups (#36020, #35815)
- core: clarify nx sync remediation messaging and surface spinner output in non-tty (#35747)
- core: exclude direct-dependency overrides from generated package.json (#36040, #35675)
- core: apply target defaults when project.json overrides an inferred run-commands target with different commands (#36142, #36067)
- core: run the nx.bat wrapper for dot-nx setup on windows (#36048)
- core: speed up bun lockfile parsing (#36198)
- core: set NX_CLI_SET in batch worker processes (#36214, #36210)
- core: preserve comments in catalog YAML updates (#35733)
- core: box JsonFileSet payload to keep HashInstruction small (#36247, #35248, #36244, #36152)
- core: share workspace fileset hash results instead of deep-cloning per task (#36244, #34971, #34942)
- core: replace per-input visited clones with undo-log scoping in hash planner (#36248, #35071, #36152, #34971, #36244, #35248, #36247)
- core: intern hash instructions in a pool and plan with id lists (#36249, #35071, #36152, #36248)
- core: detect Codex sandbox on Linux to disable daemon and plugin isolation (#36273)
- devkit: restore prettier v2 support in formatFiles (#36193)
- graph: prevent project details web view top from being clipped (#36154)
- js: prevent doubled output paths in buildable library path mappings (#36138, #36079)
- js: scope incremental type-check .tsbuildinfo per project (#36137, #36113)
- js: preserve npm allowScripts allowlist in pruned package.json (#36016, #35931)
- js: resolve catalog references in pruned package.json output (#35805, #35419)
- js: avoid import locator unicode position panic (#36133, #36128)
- js: prevent Windows TS6059 rootDir errors in tsc builds (#36184, #35696)
- js: wait for process tree exit when stopping node executor tasks (#36230)
- linter: update terminal cli regex for local-dist build (#36201, #36199)
- maven: de-flake maven e2e by dropping -X debug forks and widening timeout (#36091)
- misc: bump axios to 1.16.1 (#36120)
- misc: use default import for chalk in @nx/workspace output.ts (#35523, #35521, #34111, #21201, #26667)
- misc: remove duplicate nx init cloud-prompt telemetry event (#36145)
- nx-cloud: use standard utm params on cloud prompt links (#36227, #36226)
- nx-dev: remove empty SaaS and Mobile template filters (#36085)
- react: reserve ports in rspack e2e test to avoid default port collisions (#36090)
- react: stop pinning eslint-plugin-react in generated projects (#36168, #36161)
- release: widen release e2e timeouts to absorb pre-version dlx install (#36092)
- repo: trust wix/brew tap so macOS detox CI can install applesimutils (#36146)
- rspack: use contenthash for chunkFilename to prevent stale chunks (#36136, #2292, #36014)
- rspack: stop mocking non-existent is-serve-mode util in apply-base-config test (fea2cabbcc)
- vite: widen vite ts-solution e2e build timeouts for cold multi-lib build (#36093)
- vite: detect @vitejs/plugin-vue2 (vite:vue2) for vue-tsc typecheck (#36125, #36094)
- vite: update deprecation docs link (#36070, #36053)
- vitest: support passing mode through to vitest (#35069)
- web: run executor/plugin/generator commands with the workspace package manager (#36021, #35950)
- webpack: prevent TS6059 when a tsc build bundles a workspace lib (#36188, #35017)
❤️ Thank You
- AgentEnder @AgentEnder
- Aidan Temple @aidant
- Craigory Coppola @AgentEnder
- cyphercodes @cyphercodes
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Jonathan Garvey @jdgarvey
- Leosvel Pérez Espinosa @leosvelperez
- Miroslav Jonaš @meeroslav
- Rayan Salhab
- Richard Roozenboom @Roozenboom
- Sai Asish Y @SAY-5
- Steven Nance
- titanniya542-spec @titanniya542-spec
- Wilson Pinto
22.7.7
22.7.7 (2026-07-10)
🩹 Fixes
- core: prevent path traversal / zip-slip in self-hosted remote cache (#36116)
- core: warn when the self-hosted remote cache disables TLS verification (NXC-4593) (#36132, #36116)
- dotnet: declare obj as a publish output to fix sandbox violation (#35858)
- dotnet: declare directory build props input for analyzer dotnet tasks (df7540195a)
- dotnet: declare directory build props on the separate release build target (6545ee2222)
- dotnet: declare directory build props on the analyzer tests dotnet targets (e72ee0dd79)
❤️ Thank You
- FrozenPandaz @FrozenPandaz
- Jason Jean @FrozenPandaz
23.1.0-rc.2
23.1.0-rc.2 (2026-07-09)
🩹 Fixes
- core: defer unresolved spread tokens when merging intermediate target configurations (#36283, #36235)
- js: pin rootDir on composite tsconfigs for ts6 (ts-jest strips composite) (#36285, #36272)
- vitest: support passing mode through to vitest (#35069)
❤️ Thank You
- Aidan Temple @aidant
- Craigory Coppola @AgentEnder
- Jason Jean @FrozenPandaz
23.1.0-rc.1
23.1.0-rc.1 (2026-07-09)
🩹 Fixes
- core: detect Codex sandbox on Linux to disable daemon and plugin isolation (#36273)
- core: skip projects-filtered targetDefaults when resolved without a project (#36281, #36049)
- core: size TUI bottom bar reservations to the actual help text (#36261)
- js: wait for process tree exit when stopping node executor tasks (#36230)
- js: pin tsconfig root dir even when it matches the config directory (#36272, #3175)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz