Nx

Developer Tools

A build system with first-class monorepo support.

Latest 22.7.8 · by NxWebsitenrwl/nx

Release activity

Release activity — 10 releases across 7 days since Jul 13, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Jul 13, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
Monday2 releases on Jul 13, 20261 release on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on Jul 14, 20261 release on Jul 21, 20261 release on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Jul 16, 2026No releases on Jul 23, 20263 releases on Jul 30, 20261 release on Aug 6, 2026
Friday1 release on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

10 releases since Jul 13, 2026, busiest day 3

Changelog

23.2.0-beta.5

Pre-release
Added 6
  • Add support for Angular v22.1
  • Add nx migrate --run-migration to run a single migration
  • Let migration generators skip their AI step
  • Generate .nx/ci-config.yaml for agent distribution
  • Add nx start-nx-agents as an alias for nx-cloud start-nx-agents
  • Support tag-based project selection in release
Changed 1
  • Show Cloud app link for remote cache instead of docs
Fixed 12
  • Keep buildable libraries private in Angular
  • Stop builds crashing on non-array styleUrls in angular-rspack
  • Normalize resolved module paths
  • Stop pruneProjectGraph from mutating the source project graph
  • Make preset empty work without github.com and improve template download errors
  • Drain to stdout before exiting nx affected
Security 1
  • Update brace-expansion to 5.0.9 for CVE-2026-14257
23.2.0-beta.5 (2026-08-06)
🚀 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
View originalPermalink
How 23.2.0-beta.5 went

22.7.8

Fixed 13
  • Dispose stylesheet bundler in angular-rspack so one-shot builds exit
  • Use workspace package manager when fetching migrations via install
  • Omit peer dependencies when installing packages to a temp dir
  • Allow nx build scripts in generated pnpm-workspace.yaml
  • Acknowledge @swc/core build script in generated pnpm-workspace.yaml
  • Keep real dependencies when omitting peers from npm temp installs
Security 4
  • Prevent shell injection in nx import
  • Stop passing git revisions through a shell in affected commands
  • Bump pinned axios and brace-expansion past vulnerable versions
  • Run release pipeline docker commands without a shell
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
View originalPermalink
How 22.7.8 went

23.1.1

Added 2
  • Derive stable repo key from normalized remote and relative path
  • Add react + vite + vitest + playwright example
Fixed 17
  • Speed up angular-rspack builds and align behavior with the esbuild application builder
  • Support TypeScript esbuildConfig files in the esbuild executor
  • Acknowledge @swc/core build scripts when configuring rollup
  • Speed up npm lockfile parsing
  • Speed up lockfile parsing and catalog resolution
  • Show performance report recommendations only when actionable
Security 1
  • Prevent shell injection in nx import
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)
  • webpack: bundle non-buildable library subpaths with fallback-array exports (#36313, #36309)
  • webpack: propagate watch option from executor to webpack config (#34927, #22945)
❤️ Thank You
  • Aaron Thomas @ATKasem
  • AgentEnder @AgentEnder
  • Amp
  • Charlie Croom
  • Claude
  • Claude Fable 5
  • Claude Sonnet 5
  • Cogi @dbwodlf3
  • Copilot @Copilot
  • Craigory Coppola @AgentEnder
  • David Johnson @djohnson-aperture
  • duckot13
  • FrozenPandaz @FrozenPandaz
  • ilan weissberg @ilanwei1
  • Jack Hsu @jaysoo
  • Jaeil Yu
  • Jason Jean @FrozenPandaz
  • Leosvel Pérez Espinosa @leosvelperez
  • Louis DeScioli
  • Martijn van der Meij @Squixx
  • Miroslav Jonas @meeroslav
  • Miroslav Jonaš @meeroslav
  • Prafful S @prafful1234
  • Richard Roozenboom @Roozenboom
  • Thees Hengstermann @theescodes
  • Tushar Khadde @Tusharkhadde
View originalPermalink
How 23.1.1 went

23.2.0-beta.4

Pre-release
Fixed 7
  • make tui cloud icon visible on light terminal themes
  • pin typescript in preset dependencies so npm cannot hoist typescript 7
  • parse pnpm lockfiles that omit the packages block
  • keep real dependencies when omitting peers from npm temp installs
  • resolve ensurePackage against the workspace
  • run release pipeline docker commands without a shell
  • serialize cypress installs and skip the binary when unused
Security 1
  • bump pinned axios and brace-expansion past vulnerable versions
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
View originalPermalink
How 23.2.0-beta.4 went

23.2.0-beta.3

Pre-release
Added 2
  • Add bun dependency-catalog support
  • Derive stable repo key from normalized remote and relative path
Fixed 14
  • Speed up builds and align behavior with the esbuild application builder in angular-rspack
  • Preserve FORCE_COLOR=0 intent for forked child tasks
  • Handle colons in target name when resolving inputs to generate graph
  • Merge default plugins through the source-map-aware merge path
  • Keep nx migrate on the requested version when release-age gates interfere
  • Avoid bogus duplicate project name errors when generating nested apps
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
View originalPermalink
How 23.2.0-beta.3 went

23.2.0-beta.2

Pre-release
Added 2
  • Forward mouse and resize events to tasks running in the TUI's pty
  • Add vitest support for e2e tests in nx-plugin
Fixed 9
  • Acknowledge @swc/core build scripts when configuring rollup
  • Keep pnpm-workspace.yaml comments and read package.json as jsonc
  • Support multiple brace groups in workspace glob matching
  • Handle CRLF line endings in pnpm multi-document lockfiles
  • Correct glob pattern expansion for ZeroOrOne groups
  • Stop re-querying confirmed cache misses in task orchestrator
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
View originalPermalink
How 23.2.0-beta.2 went

23.2.0-beta.1

Pre-release
Added 1
  • Add react + vite + vitest + playwright example
Fixed 16
  • Make unit tests pass locally regardless of invoking package manager
  • Respect --aiAgents none to skip AI agent file generation
  • Use --config.frozen-lockfile=false for pnpm add during migrate
  • Run selected projects with --exclude-task-dependencies
  • Stop passing git revisions through a shell in affected commands
  • Collect trickling watcher bursts fully on daemon force-flush
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
View originalPermalink
How 23.2.0-beta.1 went

23.2.0-beta.0

Pre-release
Added 2
  • Add a full-width TUI status bar and vim-style pane search
  • Confirm before creating migration commits on the default branch
Changed 3
  • Speed up npm lockfile parsing
  • Speed up lockfile parsing and catalog resolution
  • Bump ci-workflow generator to node 24 and current action majors
Fixed 16
  • Make webpack-related packages optional peer dependencies
  • Support TypeScript esbuildConfig files in the esbuild executor
  • Show performance report recommendations only when actionable
  • Close daemon log descriptors after spawn to avoid Node 26 crash
  • Prevent shell injection in nx import
  • Correct the 22.6.0 gitignore and analytics migration wiring
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
View originalPermalink
How 23.2.0-beta.0 went

23.1.0

Added 17
  • Support Angular v22
  • Show a performance report at the end of every run
  • Support filtered targetDefaults via the nested-array shape
  • Re-add isCacheableTask helper
  • Add mouse support to the terminal UI
  • Scaffold create-nx-workspace into the current directory
Fixed 2
  • Resolve esbuild option paths relative to the workspace root
  • Prevent path traversal / zip-slip in self-hosted remote cache
Removed 1
  • Drop eslint v8 support
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)
  • gradle: correct change-plugin-version-0-1-23 migration to nx 23.1.0-beta.4 (#36103, #36100)
  • gradle: make project graph reports machine-portable (#36210, #35388)
  • gradle: derive dependent-task input extensions from the task model instead of scanning disk (#36211)
  • 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: restore the pre-TypeScript 6 default of loading all @types (#36163)
  • js: avoid import locator unicode position panic (#36133, #36128)
  • js: prevent Windows TS6059 rootDir errors in tsc builds (#36184, #35696)
  • js: preserve esModuleInterop default when migrating to TypeScript 6 (#36225)
  • js: keep tsconfigs compiling and config files loading under TypeScript 6 (#36245)
  • 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)
  • js: pin rootDir on composite tsconfigs for ts6 (ts-jest strips composite) (#36285, #36272)
  • js: bump @swc/cli to 0.8.1 to patch critical decompress advisory (#36294)
  • linter: install angular-eslint when converting Angular configs to flat config (#36160)
  • linter: run typescript-eslint v8 rule migrations for scoped-only workspaces (#36180)
  • linter: harden the ESLint v9 flat-config migration (#36204)
  • linter: reconcile angular-eslint v22 breaking changes in flat config (#36200)
  • 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 happy-dom, tmp, and form-data to patched versions (#36013)
  • 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)
  • misc: export @nx/esbuild/executors entry point (#36282)
  • nx-cloud: use standard utm params on cloud prompt links (#36227, #36226)
  • nx-dev: keep mobile sidebar toggle clear of the conference banner (#36047)
  • nx-dev: run next-sitemap directly instead of via pnpm (#36054)
  • nx-dev: remove empty SaaS and Mobile template filters (#36085)
  • react: skip react 19 update for workspaces using remix v2 (#36065, #418)
  • react: reserve ports in rspack e2e test to avoid default port collisions (#36090)
  • react: bump eslint-plugin-react below 7.35 for ESLint 9 compatibility (#36161)
  • react: stop pinning eslint-plugin-react in generated projects (#36168, #36161)
  • react: validate typecheck in the React 19 migration (#36186)
  • ⚠️ release: stop breaking change changelog entry from swallowing trailing PR body (#36052, #35910, #33070)
  • 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)
  • rsbuild: bump @rsbuild/plugin-sass with @rsbuild/core for the v2 migration (#36162)
  • rspack: use contenthash for chunkFilename to prevent stale chunks (#36136, #2292, #36014)
  • testing: keep ts-jest resolving exports-only libs on typescript < 6 (#36089)
  • testing: disable justInTimeCompile for webpack Cypress component testing (#36185)
  • testing: update eslint-plugin-cypress for ESLint 9 compatibility (#36202)
  • testing: template the e2e config for fresh projects instead of ast-parsing it (#36304)
  • 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: apply mode-based config consistently in the test executor (#36041, #35196)
  • 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)
⚠️ Breaking Changes
  • angular: support angular v22 (#35851, #35910) Angular v19 is no longer supported.
  • linter: drop eslint v8 support (#36006) ESLint v8 is no longer supported. Nx requires ESLint v9 or later.
❤️ Thank You
  • AgentEnder @AgentEnder
  • Aidan Temple @aidant
  • Alex Croteau @cw-alexcroteau
  • Caleb Ukle
  • Claude Opus 4.8 (1M context)
  • Craigory Coppola @AgentEnder
  • cyphercodes @cyphercodes
  • FrozenPandaz @FrozenPandaz
  • Jack Hsu @jaysoo
  • James Henry @JamesHenry
  • Jason Jean @FrozenPandaz
  • Jithin Vijayan @itsjithinv
  • jithin_vijayan
  • Jonathan Garvey @jdgarvey
  • Leosvel Pérez Espinosa @leosvelperez
  • leosvelperez @leosvelperez
  • Marwan Johnstone
  • Miroslav Jonaš @meeroslav
  • Rayan Salhab
  • Richard Roozenboom @Roozenboom
  • Sai Asish Y @SAY-5
  • Shai Reznik @shairez
  • Steffen Neubauer @stefreak
  • Steven Nance
  • titanniya542-spec @titanniya542-spec
  • Wilson Pinto
View originalPermalink
How 23.1.0 went

23.1.0-rc.3

Pre-release
Added 1
  • Update Storybook to support Angular 22
Changed 1
  • Template the e2e config for fresh projects instead of ast-parsing it
Fixed 5
  • Omit peer dependencies when installing packages to a temp dir
  • Include root package.json dependencies for '.'-rooted projects
  • Reduce task hashing memory usage on large workspaces
  • Bump @swc/cli to 0.8.1 to patch critical decompress advisory
  • Export @nx/esbuild/executors entry point
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
View originalPermalink
How 23.1.0-rc.3 went
View all

Discussion