# Nx: what changed from 22 to 23 - Product: Nx (https://whatsnew.fyi/product/nx) - Vendor: Nx - Range: changelog entries numbered after 22.7.9 up to and including 23.2.0, stable releases only - Entries below: 5 releases (newest first) - Resolved: 22 is 22.7.9 and 23 is 23.2.0, the newest stable release of each major we track - Carrying security changes: 2 · CVEs mentioned: 1 · Mentioning breaking changes: 1 · Removing or deprecating something: 1 - Page: https://whatsnew.fyi/product/nx/compare/22...23 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (84 changes, grouped by kind) ### Added #### 23.2.0 (2026-09-02) - Add support for Angular v22.1 - Confirm before creating migration commits on the default branch - Add a full-width TUI status bar and vim-style pane search - Forward mouse and resize events to tasks running in the TUI's pty - Add bun dependency-catalog support - Add nx migrate --run-migration to run a single migration - Let migration generators skip their AI step - Add built-in support for oxfmt formatter alongside prettier - Add the @nx/oxlint plugin - Infer OpenApiDocumentsDirectory as a build output - Support vitest generation for node, nest, and express generators - Generate .nx/ci-config.yaml for agent distribution - Add nx start-nx-agents as an alias for nx-cloud start-nx-agents - Add vitest support for e2e tests in nx-plugin - Support tag-based project selection in release - Adopt the storybook vitest addon for story testing - Offer vitest consistently across generators with a unitTestRunner option #### 23.1.1 (2026-07-30) - Derive stable repo key from normalized remote and relative path - Add react + vite + vitest + playwright example #### 23.1.0 (2026-07-13) - 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 - Support Expo SDK 56 - Add migration to drop typescript-eslint v8-removed rules from flat configs - Add next 14 to 15 and react 18 to 19 upgrade paths - Add utm tracking to clickable cloud prompt links - Show product hunt launch banner in docs - Add option to force changelog generation for programmatic usage - Enable the tsgo compiler workspace-wide - Support @rspack/core@2 and @rsbuild/core@2 with multi-version compliance - Update Storybook to support Angular 22 - Add migration to verify typecheck after the 23.1 migration - Add configurable ts paths build/test targets and stabilize build coordination for vite ### Fixed #### 23.2.0 (2026-09-02) - Make webpack-related packages optional peer dependencies in angular (also in 23.1.2) - Keep buildable libraries private in angular (also in 23.1.2) - Import optional ng-packagr lazily in angular (also in 23.1.3) #### 23.1.3 (2026-08-31) - Compare daemon workspace roots case-insensitively on Windows - Reload TypeScript config files fresh instead of serving stale cached modules - Expose compiler and inSourceTests options in the Next.js library generator - Make built next.config load without @nx/next installed - Let six legacy backlink paths reach their redirects in nx-dev - Show repository path in light mode in nx-dev #### 23.1.2 (2026-08-26) - stop builds crashing on non-array styleUrls in angular-rspack - rebuild components when their templates or styles change on Windows in angular-rspack - normalize resolved module paths in core - stop pruneProjectGraph from mutating the source project graph in core - make preset empty work without github.com and improve template download errors in core - drain to stdout before exiting nx affected in core - drain stdout before exiting nx run-many and nx run in core - resolve main worktree root without a Windows verbatim prefix in core - accept bun.lock lockfileVersion 2 and 3 in core - maintain cacheability when an executor target default applies in core - don't leave an unkillable nx process when a terminal closes in core - honor the package manager's registry config in nx migrate in core - resolve telemetry DNS in-process to avoid a getenv segfault in core - skip target group members without a target in core - port quoteShellArg helper for no-shell spawn fixes in core - stop resending accumulated task hash results to the daemon when hashing tasks in core #### 23.1.1 (2026-07-30) - 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 - Close daemon log descriptors after spawn to avoid Node 26 crash - Correct the 22.6.0 gitignore and analytics migration wiring - Support npm 12 and pnpm in the package provenance check - Honor pnpm minimumReleaseAge config on pnpm 11 - Support pnpm 11 patched dependency hashes - Resolve name refs copied into pattern-matched target arrays - Resolve source-loaded plugin transitive workspace imports - Unbreak pnpm 11 installs by acknowledging build-script deps from generators - Include continuous and default-config dependencies in show target - Respect --aiAgents none to skip AI agent file generation - Bump pinned axios and brace-expansion past vulnerable versions #### 23.1.0 (2026-07-13) - Resolve esbuild option paths relative to the workspace root - Prevent path traversal / zip-slip in self-hosted remote cache ### Removed #### 23.1.0 (2026-07-13) - Drop eslint v8 support ### Security #### 23.1.2 (2026-08-26) - update brace-expansion to 5.0.9 for CVE-2026-14257 in core - restrict daemon and plugin worker socket access to the owning user in core #### 23.1.1 (2026-07-30) - Prevent shell injection in nx import ## Release notes ### 23.2.0 - Date: 2026-09-02 - Version: 23.2.0 - Original notes: https://github.com/nrwl/nx/releases/tag/23.2.0 - Permalink: https://whatsnew.fyi/product/nx/releases/23.2.0 - **added** — Add support for Angular v22.1 - **added** — Confirm before creating migration commits on the default branch - **added** — Add a full-width TUI status bar and vim-style pane search - **added** — Forward mouse and resize events to tasks running in the TUI's pty - **added** — Add bun dependency-catalog support - **added** — Add nx migrate --run-migration to run a single migration - **added** — Let migration generators skip their AI step - **added** — Add built-in support for oxfmt formatter alongside prettier - **added** — Add the @nx/oxlint plugin - **added** — Infer OpenApiDocumentsDirectory as a build output - **added** — Support vitest generation for node, nest, and express generators - **added** — Generate .nx/ci-config.yaml for agent distribution - **added** — Add nx start-nx-agents as an alias for nx-cloud start-nx-agents - **added** — Add vitest support for e2e tests in nx-plugin - **added** — Support tag-based project selection in release - **added** — Adopt the storybook vitest addon for story testing - **added** — Offer vitest consistently across generators with a unitTestRunner option - **fixed** — Make webpack-related packages optional peer dependencies in angular - **fixed** — Keep buildable libraries private in angular - **fixed** — Import optional ng-packagr lazily in angular ##### 23.2.0 (2026-09-02) ###### 🚀 Features - **angular:** add support for Angular v22.1 ([#36521](https://github.com/nrwl/nx/pull/36521)) - **core:** confirm before creating migration commits on the default branch ([#36314](https://github.com/nrwl/nx/pull/36314)) - **core:** add a full-width TUI status bar and vim-style pane search ([#36263](https://github.com/nrwl/nx/pull/36263)) - **core:** forward mouse and resize events to tasks running in the TUI's pty ([#36322](https://github.com/nrwl/nx/pull/36322)) - **core:** add bun dependency-catalog support ([#36434](https://github.com/nrwl/nx/pull/36434)) - **core:** derive stable repo key from normalized remote and relative path ([#36439](https://github.com/nrwl/nx/pull/36439)) - **core:** add nx migrate --run-migration to run a single migration ([#36407](https://github.com/nrwl/nx/pull/36407)) - **core:** let migration generators skip their AI step ([#36532](https://github.com/nrwl/nx/pull/36532)) - **core:** show Cloud app link for remote cache instead of docs ([#36460](https://github.com/nrwl/nx/pull/36460)) - **core:** add durable run state and a dark orchestration loop to nx migrate ([#36403](https://github.com/nrwl/nx/pull/36403)) - **core:** add built-in support for oxfmt formatter alongside prettier ([#35089](https://github.com/nrwl/nx/pull/35089), [#30403](https://github.com/nrwl/nx/issues/30403)) - **core:** filter static task output to failures and restore CI log grouping ([#36453](https://github.com/nrwl/nx/pull/36453)) - **core:** let the daemon and plugin workers run inside agent sandboxes ([#36586](https://github.com/nrwl/nx/pull/36586)) - **dotnet:** infer OpenApiDocumentsDirectory as a build output ([#36788](https://github.com/nrwl/nx/pull/36788)) - **linter:** add the @nx/oxlint plugin ([#36491](https://github.com/nrwl/nx/pull/36491)) - **linter:** hash only lintable files for inferred oxlint tasks ([#36828](https://github.com/nrwl/nx/pull/36828)) - **misc:** support vitest generation for node, nest, and express generators ([#36665](https://github.com/nrwl/nx/pull/36665)) - **nx-cloud:** generate .nx/ci-config.yaml for agent distribution ([#36504](https://github.com/nrwl/nx/pull/36504)) - **nx-cloud:** add nx start-nx-agents as an alias for nx-cloud start-nx-agents ([#36572](https://github.com/nrwl/nx/pull/36572)) - **nx-plugin:** add vitest support for e2e tests ([#34041](https://github.com/nrwl/nx/pull/34041)) - **release:** support tag-based project selection ([#36537](https://github.com/nrwl/nx/pull/36537)) - **repo:** add react + vite + vitest + playwright example ([#35921](https://github.com/nrwl/nx/pull/35921)) - **storybook:** adopt the storybook vitest addon for story testing ([#36648](https://github.com/nrwl/nx/pull/36648), [#33759](https://github.com/nrwl/nx/issues/33759)) - **testing:** offer vitest consistently across generators with a unitTestRunner option ([#36715](https://github.com/nrwl/nx/pull/36715)) ###### 🩹 Fixes - **angular:** make webpack-related packages optional peer dependencies ([#36310](https://github.com/nrwl/nx/pull/36310)) - **angular:** keep buildable libraries private ([#36545](https://github.com/nrwl/nx/pull/36545)) - **angular:** import optional `ng-packagr` lazily ([#36632](https://github.com/nrwl/nx/pull/36632)) - **angular-rspack:** speed up builds and align behavior with the esbuild application builder ([#36268](https://github.com/nrwl/nx/pull/36268), [#34936](https://github.com/nrwl/nx/issues/34936)) - **angular-rspack:** stop builds crashing on non-array styleUrls ([#36550](https://github.com/nrwl/nx/pull/36550)) - **angular-rspack:** rebuild components when their templates or styles change on Windows ([#36641](https://github.com/nrwl/nx/pull/36641), [#36619](https://github.com/nrwl/nx/issues/36619)) - **bundling:** support TypeScript esbuildConfig files in the esbuild executor ([#36352](https://github.com/nrwl/nx/pull/36352), [#36349](https://github.com/nrwl/nx/issues/36349)) - **bundling:** acknowledge @swc/core _[Truncated at 4000 characters — full notes: https://github.com/nrwl/nx/releases/tag/23.2.0]_ ### 23.1.3 - Date: 2026-08-31 - Version: 23.1.3 - Original notes: https://github.com/nrwl/nx/releases/tag/23.1.3 - Permalink: https://whatsnew.fyi/product/nx/releases/23.1.3 - **fixed** — Import optional ng-packagr lazily in Angular - **fixed** — Compare daemon workspace roots case-insensitively on Windows - **fixed** — Reload TypeScript config files fresh instead of serving stale cached modules - **fixed** — Expose compiler and inSourceTests options in the Next.js library generator - **fixed** — Make built next.config load without @nx/next installed - **fixed** — Let six legacy backlink paths reach their redirects in nx-dev - **fixed** — Show repository path in light mode in nx-dev ##### 23.1.3 (2026-08-31) ###### 🩹 Fixes - **angular:** import optional `ng-packagr` lazily ([#36632](https://github.com/nrwl/nx/pull/36632)) - **core:** compare daemon workspace roots case-insensitively on Windows ([#36835](https://github.com/nrwl/nx/pull/36835), [#36722](https://github.com/nrwl/nx/issues/36722)) - **devkit:** reload TS config files fresh instead of serving stale cached modules ([#36656](https://github.com/nrwl/nx/pull/36656)) - **nextjs:** expose compiler and inSourceTests options in the library generator ([#36780](https://github.com/nrwl/nx/pull/36780)) - **nextjs:** make built next.config load without @nx/next installed ([#36655](https://github.com/nrwl/nx/pull/36655), [#36511](https://github.com/nrwl/nx/issues/36511)) - **nx-dev:** let six legacy backlink paths reach their redirects ([#36819](https://github.com/nrwl/nx/pull/36819)) - **nx-dev:** show repository path in light mode ([#36818](https://github.com/nrwl/nx/pull/36818)) ###### ❤️ Thank You - Benjamin Brienen - BenjaminBrienen-CanonPP - Jack Hsu @jaysoo - Jelle Bruisten @JelleBruisten - Juri Strumpflohner @juristr - Leosvel Pérez Espinosa @leosvelperez ### 23.1.2 - Date: 2026-08-26 - Version: 23.1.2 - Original notes: https://github.com/nrwl/nx/releases/tag/23.1.2 - Permalink: https://whatsnew.fyi/product/nx/releases/23.1.2 - **fixed** — make webpack-related packages optional peer dependencies in angular - **fixed** — keep buildable libraries private in angular - **fixed** — stop builds crashing on non-array styleUrls in angular-rspack - **fixed** — rebuild components when their templates or styles change on Windows in angular-rspack - **fixed** — normalize resolved module paths in core - **fixed** — stop pruneProjectGraph from mutating the source project graph in core - **fixed** — make preset empty work without github.com and improve template download errors in core - **fixed** — drain to stdout before exiting nx affected in core - **security** — update brace-expansion to 5.0.9 for CVE-2026-14257 in core - **security** — restrict daemon and plugin worker socket access to the owning user in core - **fixed** — drain stdout before exiting nx run-many and nx run in core - **fixed** — resolve main worktree root without a Windows verbatim prefix in core - **fixed** — accept bun.lock lockfileVersion 2 and 3 in core - **fixed** — maintain cacheability when an executor target default applies in core - **fixed** — don't leave an unkillable nx process when a terminal closes in core - **fixed** — honor the package manager's registry config in nx migrate in core - **fixed** — resolve telemetry DNS in-process to avoid a getenv segfault in core - **fixed** — skip target group members without a target in core - **fixed** — port quoteShellArg helper for no-shell spawn fixes in core - **fixed** — stop resending accumulated task hash results to the daemon when hashing tasks in core ##### 23.1.2 (2026-08-26) ###### 🩹 Fixes - **angular:** make webpack-related packages optional peer dependencies ([#36310](https://github.com/nrwl/nx/pull/36310)) - **angular:** keep buildable libraries private ([#36545](https://github.com/nrwl/nx/pull/36545)) - **angular-rspack:** stop builds crashing on non-array styleUrls ([#36550](https://github.com/nrwl/nx/pull/36550)) - **angular-rspack:** rebuild components when their templates or styles change on Windows ([#36641](https://github.com/nrwl/nx/pull/36641), [#36619](https://github.com/nrwl/nx/issues/36619)) - **core:** normalize resolved module paths ([#36556](https://github.com/nrwl/nx/pull/36556), [#36549](https://github.com/nrwl/nx/issues/36549)) - **core:** stop pruneProjectGraph from mutating the source project graph ([#36517](https://github.com/nrwl/nx/pull/36517), [#36470](https://github.com/nrwl/nx/issues/36470)) - **core:** make preset empty work without github.com and improve template download errors ([#36508](https://github.com/nrwl/nx/pull/36508)) - **core:** drain to stdout before exiting `nx affected` ([#36569](https://github.com/nrwl/nx/pull/36569), [#36568](https://github.com/nrwl/nx/issues/36568)) - **core:** update brace-expansion to 5.0.9 for CVE-2026-14257 ([#36577](https://github.com/nrwl/nx/pull/36577)) - **core:** restrict daemon and plugin worker socket access to the owning user ([#36370](https://github.com/nrwl/nx/pull/36370)) - **core:** drain stdout before exiting nx run-many and nx run ([#36607](https://github.com/nrwl/nx/pull/36607), [#36606](https://github.com/nrwl/nx/issues/36606)) - **core:** resolve main worktree root without a Windows verbatim prefix ([#36649](https://github.com/nrwl/nx/pull/36649), [#35637](https://github.com/nrwl/nx/issues/35637)) - **core:** accept bun.lock lockfileVersion 2 and 3 ([#36666](https://github.com/nrwl/nx/pull/36666)) - **core:** maintain cacheability when an executor target default applies ([#36477](https://github.com/nrwl/nx/pull/36477)) - **core:** don't leave an unkillable nx process when a terminal closes ([#36683](https://github.com/nrwl/nx/pull/36683), [#36682](https://github.com/nrwl/nx/issues/36682)) - **core:** honor the package manager's registry config in nx migrate ([#35954](https://github.com/nrwl/nx/pull/35954), [#35843](https://github.com/nrwl/nx/issues/35843)) - **core:** resolve telemetry DNS in-process to avoid a getenv segfault ([#36673](https://github.com/nrwl/nx/pull/36673)) - **core:** skip target group members without a target ([#36711](https://github.com/nrwl/nx/pull/36711), [#36712](https://github.com/nrwl/nx/issues/36712)) - **core:** port quoteShellArg helper for no-shell spawn fixes ([a9e493bf5f](https://github.com/nrwl/nx/commit/a9e493bf5f)) - **core:** stop resending accumulated task hash results to the daemon when hashing tasks ([#36716](https://github.com/nrwl/nx/pull/36716)) - **core:** apply package.json updates unblocked by later package groups ([#36636](https://github.com/nrwl/nx/pull/36636)) - **core:** adapt held-updates spec to enquirer prompt shape ([8fe6dab9d2](https://github.com/nrwl/nx/commit/8fe6dab9d2)) - **core:** create external nodes for out-of-workspace link dependencies ([#36745](https://github.com/nrwl/nx/pull/36745)) - **core:** point duplicate project names from worktrees at the fix ([#36734](https://github.com/nrwl/nx/pull/36734)) - **core:** exclude volatile shell and editor env vars from the daemon ([#36642](https://github.com/nrwl/nx/pull/36642), [#36610](https://github.com/nrwl/nx/issues/36610)) - **core:** stop the daemon before nx add installs a package ([#36767](https://github.com/nrwl/nx/pull/36767)) - **devkit:** honour cascading ignore files in tree walks and generator formatting ([#36575](https://github.com/nrwl/nx/pull/36575)) - **devkit:** correct version floor validation for ranges and prereleases ([#36724](https://github.com/nrwl/nx/pull/36724)) - **docker:** skip unchanged version action projects ([#36542](https://github.com/nrwl/nx/pu _[Truncated at 4000 characters — full notes: https://github.com/nrwl/nx/releases/tag/23.1.2]_ ### 23.1.1 - Date: 2026-07-30 - Version: 23.1.1 - Original notes: https://github.com/nrwl/nx/releases/tag/23.1.1 - Permalink: https://whatsnew.fyi/product/nx/releases/23.1.1 - **added** — Derive stable repo key from normalized remote and relative path - **added** — Add react + vite + vitest + playwright example - **fixed** — Speed up angular-rspack builds and align behavior with the esbuild application builder - **fixed** — Support TypeScript esbuildConfig files in the esbuild executor - **fixed** — Acknowledge @swc/core build scripts when configuring rollup - **fixed** — Speed up npm lockfile parsing - **fixed** — Speed up lockfile parsing and catalog resolution - **fixed** — Show performance report recommendations only when actionable - **fixed** — Close daemon log descriptors after spawn to avoid Node 26 crash - **security** — Prevent shell injection in nx import - **fixed** — Correct the 22.6.0 gitignore and analytics migration wiring - **fixed** — Support npm 12 and pnpm in the package provenance check - **fixed** — Honor pnpm minimumReleaseAge config on pnpm 11 - **fixed** — Support pnpm 11 patched dependency hashes - **fixed** — Resolve name refs copied into pattern-matched target arrays - **fixed** — Resolve source-loaded plugin transitive workspace imports - **fixed** — Unbreak pnpm 11 installs by acknowledging build-script deps from generators - **fixed** — Include continuous and default-config dependencies in show target - **fixed** — Respect --aiAgents none to skip AI agent file generation - **fixed** — Bump pinned axios and brace-expansion past vulnerable versions ##### 23.1.1 (2026-07-30) ###### 🚀 Features - **core:** derive stable repo key from normalized remote and relative path ([#36439](https://github.com/nrwl/nx/pull/36439)) - **repo:** add react + vite + vitest + playwright example ([#35921](https://github.com/nrwl/nx/pull/35921)) ###### 🩹 Fixes - **angular-rspack:** speed up builds and align behavior with the esbuild application builder ([#36268](https://github.com/nrwl/nx/pull/36268), [#34936](https://github.com/nrwl/nx/issues/34936)) - **bundling:** support TypeScript esbuildConfig files in the esbuild executor ([#36352](https://github.com/nrwl/nx/pull/36352), [#36349](https://github.com/nrwl/nx/issues/36349)) - **bundling:** acknowledge @swc/core build scripts when configuring rollup ([#36412](https://github.com/nrwl/nx/pull/36412)) - **core:** speed up npm lockfile parsing ([#36216](https://github.com/nrwl/nx/pull/36216)) - **core:** speed up lockfile parsing and catalog resolution ([#36223](https://github.com/nrwl/nx/pull/36223)) - **core:** show performance report recommendations only when actionable ([#36344](https://github.com/nrwl/nx/pull/36344)) - **core:** close daemon log descriptors after spawn to avoid Node 26 crash ([#36280](https://github.com/nrwl/nx/pull/36280)) - **core:** prevent shell injection in nx import ([#36348](https://github.com/nrwl/nx/pull/36348)) - **core:** correct the 22.6.0 gitignore and analytics migration wiring ([#36356](https://github.com/nrwl/nx/pull/36356)) - **core:** support npm 12 and pnpm in the package provenance check ([#36354](https://github.com/nrwl/nx/pull/36354), [#36338](https://github.com/nrwl/nx/issues/36338)) - **core:** honor pnpm minimumReleaseAge config on pnpm 11 ([#36335](https://github.com/nrwl/nx/pull/36335), [#36330](https://github.com/nrwl/nx/issues/36330)) - **core:** support pnpm 11 patched dependency hashes ([#36360](https://github.com/nrwl/nx/pull/36360)) - **core:** resolve name refs copied into pattern-matched target arrays ([#36359](https://github.com/nrwl/nx/pull/36359)) - **core:** resolve source-loaded plugin transitive workspace imports ([#36296](https://github.com/nrwl/nx/pull/36296)) - **core:** unbreak pnpm 11 installs by acknowledging build-script deps from generators ([#36302](https://github.com/nrwl/nx/pull/36302)) - **core:** include continuous and default-config dependencies in show target ([#36374](https://github.com/nrwl/nx/pull/36374)) - **core:** make unit tests pass locally regardless of invoking package manager ([#35994](https://github.com/nrwl/nx/pull/35994)) - **core:** respect --aiAgents none to skip AI agent file generation ([#34944](https://github.com/nrwl/nx/pull/34944), [#34692](https://github.com/nrwl/nx/issues/34692)) - **core:** use --config.frozen-lockfile=false for pnpm add during migrate ([#36337](https://github.com/nrwl/nx/pull/36337)) - **core:** run selected projects with --exclude-task-dependencies ([#35562](https://github.com/nrwl/nx/pull/35562)) - **core:** stop passing git revisions through a shell in affected commands ([#36379](https://github.com/nrwl/nx/pull/36379)) - **core:** collect trickling watcher bursts fully on daemon force-flush ([#36391](https://github.com/nrwl/nx/pull/36391)) - **core:** report tasks running in another Nx process in the inline TUI ([#36341](https://github.com/nrwl/nx/pull/36341)) - **core:** stop ratatui cursor queries from racing the TUI event stream ([#36318](https://github.com/nrwl/nx/pull/36318)) - **core:** render critical-path tasks as a nested list in the job summary ([#36394](https://github.com/nrwl/nx/pull/36394)) - **core:** keep pnpm-workspace.yaml comments and read package.json as jsonc ([#36411](https://github.com/nrwl/nx/pull/36411)) - **core:** support multiple brace groups in workspace glob matching ([#36395](https://github.com/nrwl/nx/pull/36395)) - **core:** handle CRLF line endings in pnpm multi-document lockfiles ([#36419](https://github.com/nrwl/nx/pull/36419), [#35828](https://github.com/nrwl/nx/issues/35828), [#3584 _[Truncated at 4000 characters — full notes: https://github.com/nrwl/nx/releases/tag/23.1.1]_ ### 23.1.0 - Date: 2026-07-13 - Version: 23.1.0 - Original notes: https://github.com/nrwl/nx/releases/tag/23.1.0 - Permalink: https://whatsnew.fyi/product/nx/releases/23.1.0 - **added** — Support Angular v22 - **added** — Show a performance report at the end of every run - **added** — Support filtered targetDefaults via the nested-array shape - **added** — Re-add isCacheableTask helper - **added** — Add mouse support to the terminal UI - **added** — Scaffold create-nx-workspace into the current directory - **added** — Support Expo SDK 56 - **removed** — Drop eslint v8 support - **added** — Add migration to drop typescript-eslint v8-removed rules from flat configs - **added** — Add next 14 to 15 and react 18 to 19 upgrade paths - **added** — Add utm tracking to clickable cloud prompt links - **added** — Show product hunt launch banner in docs - **added** — Add option to force changelog generation for programmatic usage - **added** — Enable the tsgo compiler workspace-wide - **added** — Support @rspack/core@2 and @rsbuild/core@2 with multi-version compliance - **added** — Update Storybook to support Angular 22 - **added** — Add migration to verify typecheck after the 23.1 migration - **added** — Add configurable ts paths build/test targets and stabilize build coordination for vite - **fixed** — Resolve esbuild option paths relative to the workspace root - **fixed** — Prevent path traversal / zip-slip in self-hosted remote cache ##### 23.1.0 (2026-07-13) ###### 🚀 Features - ⚠️ **angular:** support angular v22 ([#35851](https://github.com/nrwl/nx/pull/35851), [#35910](https://github.com/nrwl/nx/issues/35910)) - **core:** show a performance report at the end of every run ([#36077](https://github.com/nrwl/nx/pull/36077)) - **core:** support filtered targetDefaults via the nested-array shape ([#36049](https://github.com/nrwl/nx/pull/36049)) - **core:** re-add isCacheableTask helper ([#36177](https://github.com/nrwl/nx/pull/36177)) - **core:** add mouse support to the terminal UI ([#35868](https://github.com/nrwl/nx/pull/35868)) - **core:** scaffold create-nx-workspace into the current directory ([#36134](https://github.com/nrwl/nx/pull/36134)) - **expo:** support Expo SDK 56 ([#35904](https://github.com/nrwl/nx/pull/35904), [#35714](https://github.com/nrwl/nx/issues/35714)) - ⚠️ **linter:** drop eslint v8 support ([#36006](https://github.com/nrwl/nx/pull/36006)) - **linter:** add migration to drop typescript-eslint v8-removed rules from flat configs ([#36123](https://github.com/nrwl/nx/pull/36123)) - **misc:** add next 14 to 15 and react 18 to 19 upgrade paths ([#36031](https://github.com/nrwl/nx/pull/36031)) - **nx-cloud:** add utm tracking to clickable cloud prompt links ([#36028](https://github.com/nrwl/nx/pull/36028)) - **nx-dev:** show product hunt launch banner in docs ([#36112](https://github.com/nrwl/nx/pull/36112)) - **nx-dev:** show product hunt launch banner in docs" ([#36129](https://github.com/nrwl/nx/pull/36129), [#36112](https://github.com/nrwl/nx/issues/36112)) - **release:** add option to force changelog generation for programmatic usage ([#36242](https://github.com/nrwl/nx/pull/36242)) - **repo:** enable the tsgo compiler workspace-wide ([#35926](https://github.com/nrwl/nx/pull/35926), [#35047](https://github.com/nrwl/nx/issues/35047), [#35167](https://github.com/nrwl/nx/issues/35167)) - **rspack:** support @rspack/core@2 and @rsbuild/core@2 (multi-version compliance) ([#35682](https://github.com/nrwl/nx/pull/35682), [#35764](https://github.com/nrwl/nx/issues/35764), [#13420](https://github.com/nrwl/nx/issues/13420), [#781](https://github.com/nrwl/nx/issues/781)) - **storybook:** update Storybook to support Angular 22 ([#36293](https://github.com/nrwl/nx/pull/36293)) - **testing:** add migration to verify typecheck after the 23.1 migration ([#36106](https://github.com/nrwl/nx/pull/36106)) - **vite:** add configurable ts paths build/test targets and stabilize build coordination ([#34890](https://github.com/nrwl/nx/pull/34890)) ###### 🩹 Fixes - **angular:** resolve esbuild option paths relative to the workspace root ([#36017](https://github.com/nrwl/nx/pull/36017), [#35936](https://github.com/nrwl/nx/issues/35936)) - **angular:** bump prescribed angular version to 22.0.4 ([#36130](https://github.com/nrwl/nx/pull/36130)) - **angular:** make nx migrate to Angular 22 leave a buildable workspace ([#36183](https://github.com/nrwl/nx/pull/36183)) - **angular-rspack:** surface compilation failures as build errors and release resources on teardown ([#36018](https://github.com/nrwl/nx/pull/36018)) - **bundling:** restore preprocessor extensions in postcss normalizeOp… ([#36057](https://github.com/nrwl/nx/pull/36057), [#35854](https://github.com/nrwl/nx/issues/35854)) - **bundling:** prevent TS6059 when an app imports a workspace lib from source ([#36217](https://github.com/nrwl/nx/pull/36217), [#35017](https://github.com/nrwl/nx/issues/35017)) - **core:** avoid tsconfig path false positives for sibling project roots ([#35796](https://github.com/nrwl/nx/pull/35796), [#35795](https://github.com/nrwl/nx/issues/35795), [#35786](https://github.com/nrwl/nx/issues/35786)) - **core:** do not write minimumReleaseAgeExclude during nx migrate ([#36045](https://github.com/nrwl/nx/pull/36045)) - **core:** do not crash nx migrate on non-semver dependency specifiers ([#36051](https://github.com/nrwl/nx/pull/36051)) - **c _[Truncated at 4000 characters — full notes: https://github.com/nrwl/nx/releases/tag/23.1.0]_