PackageTrack

npm · #4377

@nx/workspace

23.1.2nrwl/nx

The Workspace plugin contains executors and generators that are useful for any Nx workspace. It should be present in every Nx workspace and other plugins build on it.

Release timeline

1890 releases since 2023
202420252026

Releases

  1. 23.0.210 Jul 2026
    Release notes

    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
    Open source →
  2. 23.0.123 Jun 2026
    Release notes

    23.0.1 (2026-06-23)

    🚀 Features

    • nx-cloud: add utm tracking to clickable cloud prompt links (#36028)

    🩹 Fixes

    • angular: resolve esbuild option paths relative to the workspace root (#36017, #35936)
    • angular-rspack: surface compilation failures as build errors and release resources on teardown (#36018)
    • bundling: restore preprocessor extensions in postcss normalizeOp… (#36057, #35854)
    • 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)
    • misc: bump happy-dom, tmp, and form-data to patched versions (#36013)
    • nx-dev: keep mobile sidebar toggle clear of the conference banner (#36047)
    • nx-dev: run next-sitemap directly instead of via pnpm (#36054)
    • ⚠️ release: stop breaking change changelog entry from swallowing trailing PR body (#36052, #35910, #33070)
    • vitest: apply mode-based config consistently in the test executor (#36041, #35196)

    ❤️ Thank You

    • Alex Croteau @cw-alexcroteau
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    • Marwan Johnstone
    Open source →
  3. 23.0.016 Jun 2026
    Release notes

    23.0.0 (2026-06-16)

    🚀 Features

    • ⚠️ angular: remove deprecated @nx/angular/module-federation entry point (#35512)
    • ⚠️ angular: remove deprecated move generator (#35513)
    • ⚠️ angular: remove deprecated ngrx generator (#35567)
    • angular: deprecate convert-to-with-mf generator (#35862)
    • angular: deprecate SCAM generators (#35887)
    • ⚠️ bundling: drop legacy typescript plugin and align rollup buildLibsFromSource default (#35516)
    • ⚠️ bundling: remove SVGR option and provide withSvgr migration (#35611)
    • bundling: add Vite 7 -> 8 migrations (#35614)
    • core: add support for '...' as a spread token when merging target config (#34285)
    • core: show target uses task graph + filter broken dependsOn during normalization (#35367)
    • core: add --mode and --multi-major-mode flags to nx migrate (#35497)
    • core: support prompt field in migration entries (#35638)
    • core: rename nx watch --includeDependentProjects to --includeDependencies (#35699)
    • core: support filtered array-shape targetDefaults with projects and source (#35340)
    • core: enable native Node.js TypeScript stripping by default (#35608)
    • core: add shell tab-completion (bash, zsh, fish, powershell) (#34951)
    • core: add agentic mode to nx migrate --run-migrations (#35718)
    • core: add a migrate configuration section to nx.json (#35831)
    • core: feed migration docs to agents in nx migrate (#35835)
    • core: avoid redundant rematch in findMatchingConfigFiles (#35793, #35792)
    • ⚠️ core: rename CreateNodes V2 types to canonical OG names (#35386, #32951)
    • core: support prompt-only and hybrid migrations in Nx Console UI (#35822, #35718, #3153)
    • core: add JSON schema for migrations.json files (#35888)
    • core: add migrations for createNodesV2 -> createNodes rename (#35893, #35386)
    • core: extend nx migrate --include to any package that supports optional updates (#35905)
    • core: report analytics events for the nx migrate flow (#35937)
    • core: revert array-shape targetDefaults support pending redesign and reapplication (#36005, #35340, #35711, #35752, #35991)
    • ⚠️ detox: deprecate the @nx/detox build and test executors (#35529)
    • devkit: migrate @nx/devkit/src/... deep imports (#35541, #34946)
    • ⚠️ devkit: deprecate the standalone parameter of addProjectConfiguration (#35883)
    • gradle: stream batch task results to nx as they finish (#35487)
    • js: support pnpm 11.2.2 (#35772)
    • linter: allow prompt-only entries in migration nx-plugin-checks (#35700, #35638)
    • linter: deprecate ESLint v8 support (#35819)
    • ⚠️ misc: remove Tailwind CSS setup-tailwind generators (#35049)
    • ⚠️ misc: remove deprecated stylesheet options from generators (#35103)
    • misc: drop Node 20 support and bump @types/node (#35591)
    • ⚠️ misc: deprecate executors with inferred-plugin replacements (#35576, #35517)
    • ⚠️ misc: remove deprecated js option from component generators (#35616, #29111)
    • misc: convert prompt generator migrations to use prompt field (#35688)
    • ⚠️ misc: drop deprecated webpack plugin re-exports + v23 polish (#35659)
    • misc: add --trustThirdPartyPreset flag to skip confirmation prompt (#35827, #35826)
    • misc: remove migrations prior to v21 in preparation for v23 (#35909, #30839, #32904, #35900)
    • misc: multi-version support compliance for detox, expo, react-native, and remix (#35885)
    • misc: prompt analytics earlier in init flow (#35922)
    • module-federation: deprecate old generators and add new consumer/provider generators (#35825)
    • ⚠️ nextjs: deprecate withNx function (#35861)
    • nx-dev: track docs analytics for code copy, LLM prompt, YouTube (#35526)
    • nx-dev: add docs top banner for ai monorepos conference (#35956)
    • nx-dev: support optional artwork in the promo banner card (#35992)
    • ⚠️ release: drop deprecated releaseTag* flat properties and update v23 defaults (#35694)
    • ⚠️ testing: deprecate the @nx/cypress:cypress executor (#35531, #35529)
    • testing: bump cypress to 15.14 + remove stale Vite 8 guard (#35613)
    • testing: add migration for Jest 30 snapshot guide link (#35629)
    • ⚠️ testing: remove deprecated skipSetupFile and setupFile jest options (#35588)
    • ⚠️ vite: remove vitest support in favor of @nx/vitest (#35517)
    • ⚠️ vite: deprecate the nxViteTsPaths and nxCopyAssetsPlugin helpers (#35664)
    • ⚠️ webpack: deprecate webpack/rspack config compose helpers (#35867)

    🩹 Fixes

    • angular: disable vitest watch by default (#35493)
    • angular: multi-version support compliance (#35587)
    • angular: only add @oxc-project/runtime on the vitest-analog path (#35734)
    • angular: bump zoneJsVersion to ~0.16.0 to align with Angular v21 (#35799)
    • angular-rspack: keep root-scoped assets out of per-locale i18n emit (#35621)
    • angular-rspack: exclude eslint config from tailwind v4 source scan (#35663)
    • angular-rspack: apply multi-version compliance to @nx/angular-rspack(-compiler) (#35806)
    • angular-rspack: dispose stylesheet bundler so one-shot builds exit (#35869)
    • bundling: include tsconfig solution input for rollup (#35476)
    • bundling: include tsconfig solution input for webpack (#35477, #35476)
    • bundling: multi-version support compliance for @nx/esbuild (#35768)
    • core: remove redundant allWorkspaceFiles from the project graph pipeline (#34425)
    • core: prevent spinner flicker when sync applying (#35445)
    • core: exclude hyperfine env vars from daemon env reflection (182273670a)
    • core: provide actionable feedback when running migrations and pre-install fails with npm peer dep errors (#33961, #33942)
    • core: consider virtual trees in multiGlobWithWorkspaceContext (#35447, #31805, #35373, #32588)
    • core: surface ./nx --version stderr and force devDeps install (#35469)
    • core: keep continuous children alive when nx:noop orchestrator completes (#35388)
    • core: start TUI event reader synchronously in enter() to prevent stdin race (#35465, #34619, #34144)
    • core: use require for global to local Nx handoff so Windows drive paths work (#35478)
    • core: prevent daemon shutdown from cache-poisoned in-process nx loads (#35482, #35444, #34463, #34111)
    • core: add provenance check in nx console status path (#35485)
    • core: skip target-defaults synthesis when defaults are incompatible with the specified target (#35486)
    • core: native watcher rewrite + daemon hardening for daemon-on e2e (#35204, #14, #19, #12, #13)
    • core: remove access control header from graph app (#35494)
    • core: preserve hydrateFileMap back-compat for cached nx-cloud workers (#35502, #34425)
    • core: correctly classify same-second in-place updates in macOS watcher (#35514)
    • core: restore deprecated allWorkspaceFiles on WorkspaceFileMap (#35518, #34425, #35502)
    • core: ensure verbose logs go to stderr and daemon logs are properly decorated (#34358)
    • core: show flaky-task count in run summary (#35491)
    • core: unique telemetry user_id; expose workspace_id dimension (#35553)
    • core: use workspace root for package manager detection in script targets (#35550, #35116)
    • core: update minimatch to 10.2.5 (#35569, #34660)
    • core: restore use-legacy-versioning shim for @nx/js@21 ensurePackage path (#35574)
    • core: isolate NX_PARALLEL env var in parallel-related specs (#35579)
    • core: bump axios to 1.16.0 for all packages (#35568)
    • core: skip handleimport miss path when nx key packages are absent (#35596)
    • core: use gethostuuid(3) instead of ioreg on macOS (#35599)
    • core: isolate cache env vars in splitArgs spec (#35584)
    • core: enable node's native v8 compile cache support (#35415, #20454)
    • core: error with helpful error instead of looping nx invocations (#34820)
    • core: support skipped batch tasks end-to-end and fix TUI double logs (#35617)
    • core: keep TUI task selection on the in-progress section (#35640)
    • core: drain in-flight notify events in daemon force_flush_pending (#35646, #35630)
    • ⚠️ core: drop legacy 'self'/'dependencies' magic strings in dependsOn (#35648, #4017)
    • core: correct TUI sidebar viewport height off-by-one (#34682)
    • core: allow nx mcp to run outside of an Nx workspace (#35655)
    • core: warn before installing unknown npm packages as preset (#35644)
    • core: freshness-gate daemon recompute + per-OS force-flush grace (#35650, #35646)
    • core: improve nx migrate multi-major flag handling and feedback (#35673, #35497, #35444)
    • core: use native graceful process tree shutdown (#33655, #32438)
    • core: warn instead of silently dropping legacy 'self'/'dependencies' dependsOn values (#35687, #35648)
    • core: preserve input order in createNodes plugin results (#35595)
    • ⚠️ core: remove deprecated initTasksRunner API (#35708, #29993)
    • core: do not drop target defaults in 23.0.0 array migration (#35711)
    • core: restore nx/src/index entrypoint for Nx Cloud client compatibility (#35712, #35708)
    • core: resolve local plugin subpath imports from source (#35631)
    • core: treat undefined task parallelism as parallel when scheduling (#35736)
    • core: handle object form of bin field in getPrettierPath (#35680)
    • core: detect vscode copilot ai agent (#35757)
    • core: allow local plugin subpath imports without custom conditions (#35751, #35631)
    • core: always set task.cache as an explicit boolean (#35778)
    • core: update brace-expansion and yaml (#35790)
    • core: allow nx build scripts in generated pnpm-workspace.yaml (#35564)
    • core: update tmp to 0.2.6 due to CVE-2026-44705 (#35813)
    • core: correct nx migrate commit-tally undercount and consolidate outcome state (#35820)
    • core: read pod cgroup limits instead of node limits in resource metrics (#35622, #35665)
    • core: forward full task graph to batch executors under DTE (#35859)
    • core: support local plugins using NodeNext .js import specifiers (#35834)
    • core: gate nx migrate first-party/third-party modes to Nx v23+ targets (#35830)
    • core: correct 'occured' typo to 'occurred' in error messages (#35852)
    • core: use workspace package manager when fetching migrations via install (#35866)
    • core: disallow nx migrate --interactive for Nx v23+ targets (#35874)
    • core: pre-authorize agentic handoff writes and consult the user before failing a step (#35889)
    • core: respect --no-interactive across all nx migrate prompts (#35884)
    • core: keep daemon alive when a recompute's plugin load fails (#35705, #35650)
    • core: respect NX_PREFER_TS_NODE over native type stripping (#35892)
    • core: respect package manager minimum release age in nx migrate (#35902)
    • core: show agentic migration prompt descriptions only for the focused choice (#35908)
    • core: allow analytics requests through Claude Code sandbox network filter (#35949)
    • core: exclude NX_CLOUD_ env vars from daemon env reflection (#35961)
    • core: degrade cooldown-blocked dist-tags within their own channel (#35967)
    • core: override shell-quote to ^1.8.4 to patch GHSA-w7jw-789q-3m8p (#35974)
    • core: re-hash batch tasks with deps outputs after execution (#35980, #34798)
    • core: do not fail local plugin lookup when workspace has no root tsconfig (#35969, #35631, #35751, #35970)
    • core: handle --help for commands that bypass workspace handling (#35989, #32662)
    • core: allow {projectRoot} after the start of an output when project is at the workspace root (#35993, #26244, #35839)
    • core: read and replay cached failures when NX_CACHE_FAILURES is enabled (#35997, #35901)
    • detox: generate valid JSON in .detoxrc for non-expo apps (bde1f18cef)
    • devkit: drop build-base outputs override (#35542, #34946)
    • devkit: only rewrite deep-import paths in real import sites (#35566, #35541, #35565, #3131)
    • devkit: exclude dist from jest module path scan (#35615)
    • dotnet: correct output paths for Web SDK and centralized dist setups (#35398)
    • dotnet: include Directory.. files in inputs (#35738)
    • dotnet: declare obj output for publish/pack and track vitest dep spec tsconfig input (#35858)
    • ⚠️ dotnet: graduate @nx/dotnet — drop experimental banner and the /plugin export (#35895)
    • gradle: exclude batch-runner from jest haste-map crawl (#35501)
    • gradle: exclude project-graph from jest module path scan (#35609)
    • gradle: support Windows file paths (#35184, #34987)
    • gradle: add transitive:true to all tasks (#35677)
    • gradle: pin generated e2e project toolchain to installed JDK (#35703)
    • gradle: make project graph configuration hash deterministic (#35972)
    • gradle: exclude incremental-compilation .bin files from task inputs (#35975)
    • js: include extended tsconfigs from project references in typecheck inputs (#35457)
    • js: strip glob from inferred outputs before resolving as path (#35463, #35452)
    • js: reference vitest.config in eslint dep-checks for vitest libs (#35460, #33670, #35450)
    • js: include transitive workspace deps in pruned pnpm lockfile (#35532, #35347, #34655)
    • js: build to local dist and use nodenext (#35538)
    • js: add backwards-compatible ./src/internal export shim for conformance@4/5 (#35710, #11347)
    • js: always register transpiler for registerTsProject so subsequent require(file) will work (#35735)
    • js: fall back to npm publish when bun publish fails with auth error (#35756)
    • js: multi-version support compliance (#35725)
    • js: support auto mode for non-pnpm lock files in affected detection (#35141, #34937)
    • js: handle already-published version errors in release-publish executor (#35782, #35235)
    • js: use TypeScript readConfigFile instead of JSON.parse in resolvePathsBaseUrl (#35539, #34965, #35537, #35824)
    • js: align tsconfig include and exclude inputs inference with TypeScript behavior (#35876)
    • js: correct inferred tsbuildinfo output path when rootDir is set (#36011)
    • linter: detect root lint target added in same generator run (#35296, #23147, #34531)
    • linter: prevent ENOENT crash in getRelativeImportPath for unresolvable paths (#35007, #13872, #34066, #30491, #16716, #35006, #21889, #32190)
    • linter: improve convert-to-flat-config output fidelity (#35330)
    • linter: only rewrite workspace-package peer deps to workspace:* (#35423, #35318, #33417)
    • ⚠️ linter: migrate @nx/eslint and @nx/eslint-plugin to local dist build (#35720)
    • linter: multi-version support compliance for @nx/eslint and @nx/eslint-plugin (#35811, #35806)
    • maven: skip attached artifacts that fail to materialize in batch record (#35473)
    • maven: serialize Maven 4 build state recording (#35555)
    • maven: widen runCLI timeout for --no-batch maven.test.ts cases (#35589)
    • misc: exclude stories and specs from tailwind content scanning (#35470)
    • misc: resolve pnpm catalog: refs in version lookups (#35459, #35453)
    • misc: adopt PluginCache across createNodes plugins to prevent flaky cache parse errors (#35544)
    • misc: vite migration import fix and ai doc corrections (#35647)
    • misc: stop inferring projects: 'self' in dependsOn entries (#35686)
    • misc: skip $ escaping in file paths on windows (#35692)
    • misc: multi-version compliance for @nx/express, @nx/node, and @nx/nest (#35807)
    • misc: publish migration prompt files and report the real migrate fetch error (#35886)
    • misc: multi-version support compliance for rollup, webpack, and module-federation (#35860)
    • misc: rename createNodesV2 value usages in v23 migration, not just imports (#35930)
    • misc: declare continuous on inferred executor targets (#35941)
    • misc: fix gitlab ci workflow for new repos and merge requests (#34237)
    • module-federation: bound static remote proxy port check to avoid nx serve hang (#35996, #33871, #33909)
    • nextjs: use cached project graph in withNx (#35475, #34518, #32880)
    • nextjs: multi-version support compliance (NXC-4395) (#35870)
    • node: include tsconfig input in node-app esbuild scaffold (#35466)
    • nx-dev: document nested CLI subcommands beyond two levels (#35519)
    • nx-dev: short-circuit bot probes in framer rewrite edge function (#35527)
    • nx-plugin: plugin lint checks should use dependentTasksOutputFiles (#35755)
    • react: withSvgr migration preserves other properties (#35484)
    • react: multi-version support compliance (NXC-4399) (#35872)
    • react-native: fix TS2742 build error and retarget rollup/webpack migrations to beta.24 (#35896)
    • release: handle short and full project names in commit scopes (#34219)
    • release: restore packages/devkit/package.json after release (#35598, #34946)
    • release: skip expensive changelog operations when changelogs are disabled (#35405)
    • release: scope fallback to project history for new packages (#35323)
    • release: require docker config for docker versioning (#35841)
    • release: scope ambiguous-scope check to active release group's projects (#35745, #35744)
    • remix: correct migration implementation path for flat-build packages (#35899, #35893)
    • repo: resolve graph-client build-client sandbox violations (#35522)
    • repo: drop node 26 from nightly matrix until playwright/yauzl fix (#35626, #40724, #168)
    • repo: run dotnet restore before publish (#35771)
    • repo: run dotnet restore before macos e2e job (#35774)
    • repo: rename publish VERSION env var to avoid MSBuild leak (#35849)
    • repo: set workspace-plugin type to module to silence Node strip-types warning (#35880)
    • ⚠️ repo: migrate remaining first-party plugins to local dist build (M2-M5) (#35785, #34946, #35743)
    • repo: use import type for type-only @nx/devkit imports in copy-a… (#35897)
    • repo: increase FreeBSD publish VM memory to prevent OOM (#35914)
    • repo: correct config path in update-repos scripts and use next migrate CLI (#35968, #35915)
    • rsbuild: infer build outputs from distPath.root directly (#35707)
    • rspack: multi-version support compliance for @nx/rspack and @nx/rsbuild (#35676)
    • storybook: multi-version support compliance (#35770)
    • testing: convert executor-based jest.config.ts and preserve type-only imports (#35286, #34593)
    • testing: pin jest to ~30.3.0 to avoid jest-runtime 30.4 RN incompat (#35618)
    • testing: handle absolute cypress screenshotsFolder/videosFolder paths (#35624)
    • testing: correct paths and reserve ports across flaky React MF e2e tests (#35633, #34148, #32948, #35325)
    • testing: multi-version support compliance for @nx/playwright (#35642)
    • testing: exclude dist and out-tsc from default jest module path scan (#35619)
    • testing: multi-version support compliance for @nx/cypress (#35670)
    • testing: correct yargs-parser import in getJestProjectsAsync (#35672, #35654)
    • ⚠️ testing: migrate @nx/jest to local dist build (#35713)
    • testing: publish @nx/vitest, @nx/cypress, @nx/playwright, @nx/vite from local dist (#35743)
    • testing: enforce jest 29-30 multi-version compliance for @nx/jest (#35758)
    • testing: give remix integrated e2e tests headroom for npm install (#35998)
    • vite: enforce multi-version support windows for @nx/vite and @nx/vitest (#35671)
    • vite: improve vitest 4 migration to better handle vitest workspace config (#35940)
    • vue: multi-version support compliance for @nx/vue and @nx/nuxt (#35845)
    • webpack: add webpack tooling to devDependencies in the v23 migration (#35944)

    ⚠️ Breaking Changes

    • dotnet: graduate @nx/dotnet — drop experimental banner and the /plugin export (#35895) ** the @nx/dotnet/plugin entry point has been removed; use @nx/dotnet. The included migration updates nx.json automatically.

      Related Issue(s)

      <!-- Please link the issue being fixed so it gets closed when this is merged. --> N/A
    • repo: migrate remaining first-party plugins to local dist build (M2-M5) (#35785, #34946, #35743)
    • devkit: deprecate the standalone parameter of addProjectConfiguration (#35883)
    • webpack: deprecate webpack/rspack config compose helpers (#35867)
    • core: rename CreateNodes V2 types to canonical OG names (#35386, #32951)
    • nextjs: deprecate withNx function (#35861)
    • vite: deprecate the nxViteTsPaths and nxCopyAssetsPlugin helpers (#35664)
    • testing: remove deprecated skipSetupFile and setupFile jest options (#35588) The setupFile option of the @nx/jest:jest executor and the skipSetupFile option of the @nx/jest:configuration generator are removed.
    • misc: drop deprecated webpack plugin re-exports + v23 polish (#35659)
    • linter: migrate @nx/eslint and @nx/eslint-plugin to local dist build (#35720)
    • testing: migrate @nx/jest to local dist build (#35713)
    • core: remove deprecated initTasksRunner API (#35708, #29993) ** The deprecated initTasksRunner export is removed from the nx package. Consumers should use runDiscreteTasks / runContinuousTasks instead.

      Related Issue(s)

      Internal: NXC-4307
    • release: drop deprecated releaseTag* flat properties and update v23 defaults (#35694)
    • misc: remove deprecated js option from component generators (#35616, #29111)
    • core: drop legacy 'self'/'dependencies' magic strings in dependsOn (#35648, #4017)
    • bundling: remove SVGR option and provide withSvgr migration (#35611)
    • misc: deprecate executors with inferred-plugin replacements (#35576, #35517)
    • angular: remove deprecated ngrx generator (#35567) The @nx/angular:ngrx generator has been removed. Use @nx/angular:ngrx-root-store for root state and @nx/angular:ngrx-feature-store for feature state instead.
    • vite: remove vitest support in favor of @nx/vitest (#35517)
    • bundling: drop legacy typescript plugin and align rollup buildLibsFromSource default (#35516)
    • testing: deprecate the @nx/cypress:cypress executor (#35531, #35529)
    • detox: deprecate the @nx/detox build and test executors (#35529)
    • angular: remove deprecated move generator (#35513) The @nx/angular:move generator is removed. Use @nx/workspace:move (or its mv alias) instead.
    • angular: remove deprecated @nx/angular/module-federation entry point (#35512) The @nx/angular/module-federation entry point is removed. Update imports to use @nx/module-federation/angular instead. The update-23-0-0-update-with-module-federation-import migration handles this automatically when running nx migrate.
    • misc: remove deprecated stylesheet options from generators (#35103)
    • misc: remove Tailwind CSS setup-tailwind generators (#35049)

    ❤️ Thank You

    • Abdullah Alaqeel @aqeelat
    • Adam Keenan @adamk33n3r
    • AgentEnder @AgentEnder
    • AI-JamesHenry @AI-JamesHenry
    • Alex
    • Alex Croteau @cw-alexcroteau
    • Amp
    • Artur @arturovt
    • beeman
    • Benjamin Cabanes @bcabanes
    • Benjamin Staneck @Stanzilla
    • Charlie Croom
    • Claude
    • Claude Opus 4.6
    • Claude Opus 4.8 (1M context)
    • Copilot @Copilot
    • Craigory Coppola @AgentEnder
    • FrozenPandaz @FrozenPandaz
    • Jack Hsu @jaysoo
    • Jack Stevenson
    • Jason Jean @FrozenPandaz
    • jaysoo @jaysoo
    • Justin McLellan @jmclellan-crexi
    • Leosvel Pérez Espinosa @leosvelperez
    • leosvelperez @leosvelperez
    • llwt @llwt
    • Louie Weng @lourw
    • Max Kless
    • MaxKless @MaxKless
    • Minh Lê @DucMinhNe
    • Miroslav Jonaš @meeroslav
    • Olawuni Olagoke @olagokemills
    • Optischa @Optischa
    • Rares Matei
    • rarmatei @rarmatei
    • Sharon Lougheed
    • ShwethaSundar
    • Steven Nance
    • Thiago Zanluca @zanlucathiago
    • Thomas Dekiere @thdk
    Open source →
  4. 23.0.0-rc.415 Jun 2026pre-release
    Release notes

    23.0.0-rc.4 (2026-06-15)

    🚀 Features

    • core: revert array-shape targetDefaults support pending redesign and reapplication (#36005, #35340, #35711, #35752, #35991)
    • nx-dev: support optional artwork in the promo banner card (#35992)

    🩹 Fixes

    • core: handle --help for commands that bypass workspace handling (#35989, #32662)
    • core: allow {projectRoot} after the start of an output when project is at the workspace root (#35993, #26244, #35839)
    • core: read and replay cached failures when NX_CACHE_FAILURES is enabled (#35997, #35901)
    • module-federation: bound static remote proxy port check to avoid nx serve hang (#35996, #33871, #33909)
    • testing: give remix integrated e2e tests headroom for npm install (#35998)

    ❤️ Thank You

    • Benjamin Cabanes @bcabanes
    • Claude
    • Craigory Coppola @AgentEnder
    • Jason Jean @FrozenPandaz
    Open source →
  5. 23.0.0-rc.312 Jun 2026pre-release
    Release notes

    23.0.0-rc.3 (2026-06-12)

    🩹 Fixes

    • core: re-hash batch tasks with deps outputs after execution (#35980, #34798)
    • core: do not fail local plugin lookup when workspace has no root tsconfig (#35969, #35631, #35751, #35970)

    ❤️ Thank You

    • Alex
    • Jason Jean
    • Rares Matei
    • rarmatei @rarmatei
    Open source →
  6. 23.0.0-rc.212 Jun 2026pre-release
    Release notes

    23.0.0-rc.2 (2026-06-12)

    🩹 Fixes

    • core: override shell-quote to ^1.8.4 to patch GHSA-w7jw-789q-3m8p (#35974)
    • gradle: make project graph configuration hash deterministic (#35972)
    • gradle: exclude incremental-compilation .bin files from task inputs (#35975)

    ❤️ Thank You

    • Jason Jean @FrozenPandaz
    Open source →
  7. 23.0.0-rc.111 Jun 2026pre-release
    Release notes

    23.0.0-rc.1 (2026-06-11)

    🚀 Features

    • nx-dev: add docs top banner for ai monorepos conference (#35956)

    🩹 Fixes

    • core: allow analytics requests through Claude Code sandbox network filter (#35949)
    • core: exclude NX_CLOUD_ env vars from daemon env reflection (#35961)
    • core: degrade cooldown-blocked dist-tags within their own channel (#35967)
    • repo: correct config path in update-repos scripts and use next migrate CLI (#35968, #35915)

    ❤️ Thank You

    • FrozenPandaz @FrozenPandaz
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  8. 23.0.0-rc.011 Jun 2026pre-release
    Release notes

    23.0.0-rc.0 (2026-06-10)

    🚀 Features

    • core: extend nx migrate --include to any package that supports optional updates (#35905)
    • core: report analytics events for the nx migrate flow (#35937)
    • misc: remove migrations prior to v21 in preparation for v23 (#35909, #30839, #32904, #35900)
    • misc: multi-version support compliance for detox, expo, react-native, and remix (#35885)
    • misc: prompt analytics earlier in init flow (#35922)

    🩹 Fixes

    • core: show agentic migration prompt descriptions only for the focused choice (#35908)
    • misc: rename createNodesV2 value usages in v23 migration, not just imports (#35930)
    • misc: declare continuous on inferred executor targets (#35941)
    • misc: fix gitlab ci workflow for new repos and merge requests (#34237)
    • release: scope ambiguous-scope check to active release group's projects (#35745, #35744)
    • repo: increase FreeBSD publish VM memory to prevent OOM (#35914)
    • vite: improve vitest 4 migration to better handle vitest workspace config (#35940)
    • webpack: add webpack tooling to devDependencies in the v23 migration (#35944)

    ❤️ Thank You

    • Claude Opus 4.8 (1M context)
    • Craigory Coppola @AgentEnder
    • FrozenPandaz @FrozenPandaz
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Justin McLellan @jmclellan-crexi
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  9. 23.0.0-pr.35465.2bc264327 Apr 2026pre-release

    Nothing published for this version

  10. 23.0.0-pr.35413.460eeef24 Apr 2026pre-release

    Nothing published for this version

  11. 23.0.0-pr.35204.e5f145929 Apr 2026pre-release

    Nothing published for this version

  12. 23.0.0-pr.33655.cdc3e7228 Apr 2026pre-release

    Nothing published for this version

  13. 23.0.0-pr.33655.96527d27 May 2026pre-release

    Nothing published for this version

  14. 23.0.0-pr.33655.05d95425 May 2026pre-release

    Nothing published for this version

  15. 23.0.0-canary.20260618-f22e75c18 Jun 2026pre-release

    Nothing published for this version

  16. 23.0.0-canary.20260616-d9d260c16 Jun 2026pre-release

    Nothing published for this version

  17. 23.0.0-canary.20260615-71bbc7015 Jun 2026pre-release

    Nothing published for this version

  18. 23.0.0-canary.20260612-d5143c012 Jun 2026pre-release

    Nothing published for this version

  19. 23.0.0-canary.20260612-10af44f12 Jun 2026pre-release

    Nothing published for this version

  20. 23.0.0-canary.20260610-ab099bd10 Jun 2026pre-release

    Nothing published for this version

  21. 23.0.0-canary.20260609-b9a05829 Jun 2026pre-release

    Nothing published for this version

  22. 23.0.0-canary.20260603-fc8444b3 Jun 2026pre-release

    Nothing published for this version

  23. 23.0.0-canary.20260602-6ca3f3a2 Jun 2026pre-release

    Nothing published for this version

  24. 23.0.0-canary.20260521-b6858ba21 May 2026pre-release

    Nothing published for this version

  25. 23.0.0-canary.20260519-6e6edab19 May 2026pre-release

    Nothing published for this version

  26. 23.0.0-canary.20260515-4f1406715 May 2026pre-release

    Nothing published for this version

  27. 23.0.0-canary.20260514-feb64ba14 May 2026pre-release

    Nothing published for this version

  28. 23.0.0-canary.20260513-934a70b13 May 2026pre-release

    Nothing published for this version

  29. 23.0.0-canary.20260508-a2dfac68 May 2026pre-release

    Nothing published for this version

  30. 23.0.0-canary.20260508-9f8a6c28 May 2026pre-release

    Nothing published for this version

  31. 23.0.0-canary.20260506-b5945376 May 2026pre-release

    Nothing published for this version

  32. 23.0.0-canary.20260504-e8aa6124 May 2026pre-release

    Nothing published for this version

  33. 23.0.0-canary.20260501-fde01fa1 May 2026pre-release

    Nothing published for this version

  34. 23.0.0-canary.20260429-0205b2229 Apr 2026pre-release

    Nothing published for this version

  35. 23.0.0-canary.20260428-b05d65328 Apr 2026pre-release

    Nothing published for this version

  36. 23.0.0-canary.20260424-608c3be24 Apr 2026pre-release

    Nothing published for this version

  37. 23.0.0-beta.259 Jun 2026pre-release
    Release notes

    23.0.0-beta.25 (2026-06-09)

    🚀 Features

    • core: extend nx migrate --include to any package that supports optional updates (#35905)
    • misc: remove migrations prior to v21 in preparation for v23 (#35909, #30839, #32904, #35900)
    • misc: multi-version support compliance for detox, expo, react-native, and remix (#35885)

    🩹 Fixes

    • core: respect package manager minimum release age in nx migrate (#35902)
    • core: show agentic migration prompt descriptions only for the focused choice (#35908)
    • release: scope ambiguous-scope check to active release group's projects (#35745, #35744)
    • remix: correct migration implementation path for flat-build packages (#35899, #35893)
    • repo: increase FreeBSD publish VM memory to prevent OOM (#35914)

    ❤️ Thank You

    • Claude Opus 4.8 (1M context)
    • FrozenPandaz @FrozenPandaz
    • Jason Jean @FrozenPandaz
    • Justin McLellan @jmclellan-crexi
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  38. 23.0.0-beta.246 Jun 2026pre-release
    Release notes

    23.0.0-beta.24 (2026-06-06)

    🚀 Features

    • angular: deprecate SCAM generators (#35887)
    • core: support prompt-only and hybrid migrations in Nx Console UI (#35822, #35718, #3153)
    • core: add JSON schema for migrations.json files (#35888)
    • core: add migrations for createNodesV2 -> createNodes rename (#35893, #35386)
    • ⚠️ devkit: deprecate the standalone parameter of addProjectConfiguration (#35883)
    • misc: add --trustThirdPartyPreset flag to skip confirmation prompt (#35827, #35826)
    • ⚠️ webpack: deprecate webpack/rspack config compose helpers (#35867)

    🩹 Fixes

    • core: disallow nx migrate --interactive for Nx v23+ targets (#35874)
    • core: pre-authorize agentic handoff writes and consult the user before failing a step (#35889)
    • core: respect --no-interactive across all nx migrate prompts (#35884)
    • core: keep daemon alive when a recompute's plugin load fails (#35705, #35650)
    • core: respect NX_PREFER_TS_NODE over native type stripping (#35892)
    • ⚠️ dotnet: graduate @nx/dotnet — drop experimental banner and the /plugin export (#35895)
    • js: align tsconfig include and exclude inputs inference with TypeScript behavior (#35876)
    • misc: publish migration prompt files and report the real migrate fetch error (#35886)
    • misc: multi-version support compliance for rollup, webpack, and module-federation (#35860)
    • nextjs: multi-version support compliance (NXC-4395) (#35870)
    • react: multi-version support compliance (NXC-4399) (#35872)
    • react-native: fix TS2742 build error and retarget rollup/webpack migrations to beta.24 (#35896)
    • repo: set workspace-plugin type to module to silence Node strip-types warning (#35880)
    • ⚠️ repo: migrate remaining first-party plugins to local dist build (M2-M5) (#35785, #34946, #35743)
    • repo: use import type for type-only @nx/devkit imports in copy-a… (#35897)

    ⚠️ Breaking Changes

    • dotnet: graduate @nx/dotnet — drop experimental banner and the /plugin export (#35895) ** the @nx/dotnet/plugin entry point has been removed; use @nx/dotnet. The included migration updates nx.json automatically.

      Related Issue(s)

      <!-- Please link the issue being fixed so it gets closed when this is merged. --> N/A
    • repo: migrate remaining first-party plugins to local dist build (M2-M5) (#35785, #34946, #35743)
    • devkit: deprecate the standalone parameter of addProjectConfiguration (#35883)
    • webpack: deprecate webpack/rspack config compose helpers (#35867)

    ❤️ Thank You

    • Craigory Coppola @AgentEnder
    • Jack Hsu @jaysoo
    • Jack Stevenson
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  39. 23.0.0-beta.234 Jun 2026pre-release
    Release notes

    23.0.0-beta.23 (2026-06-04)

    🚀 Features

    • angular: deprecate convert-to-with-mf generator (#35862)
    • core: avoid redundant rematch in findMatchingConfigFiles (#35793, #35792)
    • ⚠️ core: rename CreateNodes V2 types to canonical OG names (#35386, #32951)
    • ⚠️ nextjs: deprecate withNx function (#35861)

    🩹 Fixes

    • angular-rspack: dispose stylesheet bundler so one-shot builds exit (#35869)
    • core: support local plugins using NodeNext .js import specifiers (#35834)
    • core: gate nx migrate first-party/third-party modes to Nx v23+ targets (#35830)
    • core: correct 'occured' typo to 'occurred' in error messages (#35852)
    • core: use workspace package manager when fetching migrations via install (#35866)
    • dotnet: declare obj output for publish/pack and track vitest dep spec tsconfig input (#35858)
    • js: use TypeScript readConfigFile instead of JSON.parse in resolvePathsBaseUrl (#35539, #34965, #35537, #35824)
    • vue: multi-version support compliance for @nx/vue and @nx/nuxt (#35845)

    ⚠️ Breaking Changes

    • core: rename CreateNodes V2 types to canonical OG names (#35386, #32951)
    • nextjs: deprecate withNx function (#35861)

    ❤️ Thank You

    • Abdullah Alaqeel @aqeelat
    • Alex Croteau @cw-alexcroteau
    • Claude
    • Craigory Coppola @AgentEnder
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    • Minh Lê @DucMinhNe
    Open source →
  40. 23.0.0-beta.223 Jun 2026pre-release
    Release notes

    23.0.0-beta.22 (2026-06-02)

    🚀 Features

    • core: add a migrate configuration section to nx.json (#35831)
    • core: feed migration docs to agents in nx migrate (#35835)
    • linter: deprecate ESLint v8 support (#35819)
    • ⚠️ testing: remove deprecated skipSetupFile and setupFile jest options (#35588)
    • ⚠️ vite: deprecate the nxViteTsPaths and nxCopyAssetsPlugin helpers (#35664)

    🩹 Fixes

    • angular: bump zoneJsVersion to ~0.16.0 to align with Angular v21 (#35799)
    • core: read pod cgroup limits instead of node limits in resource metrics (#35622, #35665)
    • core: forward full task graph to batch executors under DTE (#35859)
    • js: support auto mode for non-pnpm lock files in affected detection (#35141, #34937)
    • js: handle already-published version errors in release-publish executor (#35782, #35235)
    • misc: multi-version compliance for @nx/express, @nx/node, and @nx/nest (#35807)
    • release: skip expensive changelog operations when changelogs are disabled (#35405)
    • release: scope fallback to project history for new packages (#35323)
    • release: require docker config for docker versioning (#35841)
    • repo: rename publish VERSION env var to avoid MSBuild leak (#35849)
    • testing: enforce jest 29-30 multi-version compliance for @nx/jest (#35758)
    • vite: enforce multi-version support windows for @nx/vite and @nx/vitest (#35671)

    ⚠️ Breaking Changes

    • vite: deprecate the nxViteTsPaths and nxCopyAssetsPlugin helpers (#35664)
    • testing: remove deprecated skipSetupFile and setupFile jest options (#35588) The setupFile option of the @nx/jest:jest executor and the skipSetupFile option of the @nx/jest:configuration generator are removed.

    ❤️ Thank You

    • Claude
    • Craigory Coppola @AgentEnder
    • FrozenPandaz @FrozenPandaz
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    • llwt @llwt
    • Miroslav Jonaš @meeroslav
    • Olawuni Olagoke @olagokemills
    • Steven Nance
    • Thiago Zanluca @zanlucathiago
    • Thomas Dekiere @thdk
    Open source →
  41. 23.0.0-beta.211 Jun 2026pre-release
    Release notes

    23.0.0-beta.21 (2026-05-29)

    🚀 Features

    • module-federation: deprecate old generators and add new consumer/provider generators (#35825)

    🩹 Fixes

    • angular-rspack: apply multi-version compliance to @nx/angular-rspack(-compiler) (#35806)
    • core: allow nx build scripts in generated pnpm-workspace.yaml (#35564)
    • core: update tmp to 0.2.6 due to CVE-2026-44705 (#35813)
    • core: correct nx migrate commit-tally undercount and consolidate outcome state (#35820)
    • linter: multi-version support compliance for @nx/eslint and @nx/eslint-plugin (#35811, #35806)
    • storybook: multi-version support compliance (#35770)

    ❤️ Thank You

    • Craigory Coppola @AgentEnder
    • Jack Hsu @jaysoo
    • Jack Stevenson
    • Leosvel Pérez Espinosa @leosvelperez
    • Miroslav Jonaš @meeroslav
    Open source →
  42. 23.0.0-beta.2027 May 2026pre-release
    Release notes

    23.0.0-beta.20 (2026-05-27)

    🚀 Features

    • core: add agentic mode to nx migrate --run-migrations (#35718)

    🩹 Fixes

    • core: update brace-expansion and yaml (#35790)

    ❤️ Thank You

    • Jack Hsu @jaysoo
    • Leosvel Pérez Espinosa @leosvelperez
    • leosvelperez @leosvelperez
    Open source →
  43. 23.0.0-beta.1923 May 2026pre-release
    Release notes

    23.0.0-beta.19 (2026-05-22)

    🚀 Features

    • js: support pnpm 11.2.2 (#35772)
    • ⚠️ misc: drop deprecated webpack plugin re-exports + v23 polish (#35659)

    🩹 Fixes

    • bundling: multi-version support compliance for @nx/esbuild (#35768)
    • core: always set task.cache as an explicit boolean (#35778)
    • nx-plugin: plugin lint checks should use dependentTasksOutputFiles (#35755)
    • repo: run dotnet restore before publish (#35771)
    • repo: run dotnet restore before macos e2e job (#35774)
    • testing: publish @nx/vitest, @nx/cypress, @nx/playwright, @nx/vite from local dist (#35743)

    ⚠️ Breaking Changes

    • misc: drop deprecated webpack plugin re-exports + v23 polish (#35659)

    ❤️ Thank You

    • Claude
    • Craigory Coppola @AgentEnder
    • FrozenPandaz @FrozenPandaz
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • jaysoo @jaysoo
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  44. 23.0.0-beta.1822 May 2026pre-release
    Release notes

    23.0.0-beta.18 (2026-05-22)

    🚀 Features

    • core: add shell tab-completion (bash, zsh, fish, powershell) (#34951)
    • ⚠️ misc: drop deprecated webpack plugin re-exports + v23 polish (#35659)

    🩹 Fixes

    • angular: only add @oxc-project/runtime on the vitest-analog path (#35734)
    • core: detect vscode copilot ai agent (#35757)
    • core: allow local plugin subpath imports without custom conditions (#35751, #35631)
    • dotnet: include Directory.. files in inputs (#35738)
    • js: fall back to npm publish when bun publish fails with auth error (#35756)
    • js: multi-version support compliance (#35725)
    • repo: run dotnet restore before publish (#35771)

    ⚠️ Breaking Changes

    • misc: drop deprecated webpack plugin re-exports + v23 polish (#35659)

    ❤️ Thank You

    • Benjamin Staneck @Stanzilla
    • Craigory Coppola @AgentEnder
    • FrozenPandaz @FrozenPandaz
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • jaysoo @jaysoo
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  45. 23.0.0-beta.1719 May 2026pre-release
    Release notes

    23.0.0-beta.17 (2026-05-19)

    🚀 Features

    • misc: convert prompt generator migrations to use prompt field (#35688)

    🩹 Fixes

    • core: resolve local plugin subpath imports from source (#35631)
    • core: treat undefined task parallelism as parallel when scheduling (#35736)
    • core: handle object form of bin field in getPrettierPath (#35680)
    • js: always register transpiler for registerTsProject so subsequent require(file) will work (#35735)
    • ⚠️ linter: migrate @nx/eslint and @nx/eslint-plugin to local dist build (#35720)
    • misc: skip $ escaping in file paths on windows (#35692)
    • rsbuild: infer build outputs from distPath.root directly (#35707)

    ⚠️ Breaking Changes

    • linter: migrate @nx/eslint and @nx/eslint-plugin to local dist build (#35720)

    ❤️ Thank You

    • AgentEnder @AgentEnder
    • Artur @arturovt
    • Copilot @Copilot
    • Craigory Coppola @AgentEnder
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    • leosvelperez @leosvelperez
    Open source →
  46. 23.0.0-beta.1617 May 2026pre-release
    Release notes

    23.0.0-beta.16 (2026-05-17)

    🚀 Features

    • core: enable native Node.js TypeScript stripping by default (#35608)

    🩹 Fixes

    • ⚠️ testing: migrate @nx/jest to local dist build (#35713)

    ⚠️ Breaking Changes

    • testing: migrate @nx/jest to local dist build (#35713)

    ❤️ Thank You

    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    Open source →
  47. 23.0.0-beta.1516 May 2026pre-release
    Release notes

    23.0.0-beta.15 (2026-05-16)

    🩹 Fixes

    • core: restore nx/src/index entrypoint for Nx Cloud client compatibility (#35712, #35708)

    ❤️ Thank You

    • Jason Jean @FrozenPandaz
    Open source →
  48. 23.0.0-beta.1416 May 2026pre-release
    Release notes

    23.0.0-beta.14 (2026-05-16)

    🩹 Fixes

    • ⚠️ core: remove deprecated initTasksRunner API (#35708, #29993)
    • core: do not drop target defaults in 23.0.0 array migration (#35711)
    • js: add backwards-compatible ./src/internal export shim for conformance@4/5 (#35710, #11347)

    ⚠️ Breaking Changes

    • core: remove deprecated initTasksRunner API (#35708, #29993) ** The deprecated initTasksRunner export is removed from the nx package. Consumers should use runDiscreteTasks / runContinuousTasks instead.

      Related Issue(s)

      Internal: NXC-4307

    ❤️ Thank You

    • Jason Jean @FrozenPandaz
    Open source →
  49. 23.0.0-beta.1316 May 2026pre-release
    Release notes

    23.0.0-beta.13 (2026-05-15)

    🚀 Features

    • core: rename nx watch --includeDependentProjects to --includeDependencies (#35699)
    • core: support filtered array-shape targetDefaults with projects and source (#35340)
    • linter: allow prompt-only entries in migration nx-plugin-checks (#35700, #35638)
    • ⚠️ release: drop deprecated releaseTag* flat properties and update v23 defaults (#35694)

    🩹 Fixes

    • core: use native graceful process tree shutdown (#33655, #32438)
    • core: warn instead of silently dropping legacy 'self'/'dependencies' dependsOn values (#35687, #35648)
    • core: preserve input order in createNodes plugin results (#35595)
    • gradle: pin generated e2e project toolchain to installed JDK (#35703)
    • js: build to local dist and use nodenext (#35538)
    • rspack: multi-version support compliance for @nx/rspack and @nx/rsbuild (#35676)

    ⚠️ Breaking Changes

    • release: drop deprecated releaseTag* flat properties and update v23 defaults (#35694)

    ❤️ Thank You

    • AI-JamesHenry @AI-JamesHenry
    • Alex
    • Claude Opus 4.6
    • Craigory Coppola @AgentEnder
    • FrozenPandaz @FrozenPandaz
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  50. 23.0.0-beta.1214 May 2026pre-release
    Release notes

    23.0.0-beta.12 (2026-05-14)

    🚀 Features

    • core: support prompt field in migration entries (#35638)

    🩹 Fixes

    • core: improve nx migrate multi-major flag handling and feedback (#35673, #35497, #35444)
    • linter: only rewrite workspace-package peer deps to workspace:* (#35423, #35318, #33417)
    • misc: stop inferring projects: 'self' in dependsOn entries (#35686)
    • testing: multi-version support compliance for @nx/cypress (#35670)
    • testing: correct yargs-parser import in getJestProjectsAsync (#35672, #35654)

    ❤️ Thank You

    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  51. 23.0.0-beta.1113 May 2026pre-release
    Release notes

    23.0.0-beta.11 (2026-05-13)

    🩹 Fixes

    • core: freshness-gate daemon recompute + per-OS force-flush grace (#35650, #35646)
    • gradle: add transitive:true to all tasks (#35677)

    ❤️ Thank You

    • FrozenPandaz @FrozenPandaz
    • Jason Jean @FrozenPandaz
    • Louie Weng @lourw
    Open source →
  52. 23.0.0-beta.1013 May 2026pre-release
    Release notes

    23.0.0-beta.10 (2026-05-13)

    🚀 Features

    • ⚠️ bundling: remove SVGR option and provide withSvgr migration (#35611)
    • bundling: add Vite 7 -> 8 migrations (#35614)
    • core: add --mode and --multi-major-mode flags to nx migrate (#35497)
    • ⚠️ misc: remove deprecated js option from component generators (#35616, #29111)
    • testing: bump cypress to 15.14 + remove stale Vite 8 guard (#35613)
    • testing: add migration for Jest 30 snapshot guide link (#35629)

    🩹 Fixes

    • angular: multi-version support compliance (#35587)
    • angular-rspack: exclude eslint config from tailwind v4 source scan (#35663)
    • core: support skipped batch tasks end-to-end and fix TUI double logs (#35617)
    • core: keep TUI task selection on the in-progress section (#35640)
    • core: drain in-flight notify events in daemon force_flush_pending (#35646, #35630)
    • ⚠️ core: drop legacy 'self'/'dependencies' magic strings in dependsOn (#35648, #4017)
    • core: correct TUI sidebar viewport height off-by-one (#34682)
    • core: allow nx mcp to run outside of an Nx workspace (#35655)
    • core: warn before installing unknown npm packages as preset (#35644)
    • gradle: support Windows file paths (#35184, #34987)
    • linter: improve convert-to-flat-config output fidelity (#35330)
    • misc: vite migration import fix and ai doc corrections (#35647)
    • testing: correct paths and reserve ports across flaky React MF e2e tests (#35633, #34148, #32948, #35325)
    • testing: multi-version support compliance for @nx/playwright (#35642)
    • testing: exclude dist and out-tsc from default jest module path scan (#35619)

    ⚠️ Breaking Changes

    • misc: remove deprecated js option from component generators (#35616, #29111)
    • core: drop legacy 'self'/'dependencies' magic strings in dependsOn (#35648, #4017)
    • bundling: remove SVGR option and provide withSvgr migration (#35611)

    ❤️ Thank You

    • Adam Keenan @adamk33n3r
    • Amp
    • Charlie Croom
    • Craigory Coppola @AgentEnder
    • FrozenPandaz @FrozenPandaz
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    • Max Kless
    Open source →
  53. 23.0.0-beta.98 May 2026pre-release
    Release notes

    23.0.0-beta.9 (2026-05-08)

    🚀 Features

    • ⚠️ angular: remove deprecated ngrx generator (#35567)
    • misc: drop Node 20 support and bump @types/node (#35591)
    • ⚠️ misc: deprecate executors with inferred-plugin replacements (#35576, #35517)
    • ⚠️ vite: remove vitest support in favor of @nx/vitest (#35517)

    🩹 Fixes

    • angular-rspack: keep root-scoped assets out of per-locale i18n emit (#35621)
    • core: skip handleimport miss path when nx key packages are absent (#35596)
    • core: use gethostuuid(3) instead of ioreg on macOS (#35599)
    • core: isolate cache env vars in splitArgs spec (#35584)
    • core: enable node's native v8 compile cache support (#35415, #20454)
    • core: error with helpful error instead of looping nx invocations (#34820)
    • devkit: exclude dist from jest module path scan (#35615)
    • gradle: exclude project-graph from jest module path scan (#35609)
    • linter: prevent ENOENT crash in getRelativeImportPath for unresolvable paths (#35007, #13872, #34066, #30491, #16716, #35006, #21889, #32190)
    • maven: widen runCLI timeout for --no-batch maven.test.ts cases (#35589)
    • release: restore packages/devkit/package.json after release (#35598, #34946)
    • repo: drop node 26 from nightly matrix until playwright/yauzl fix (#35626, #40724, #168)
    • testing: pin jest to ~30.3.0 to avoid jest-runtime 30.4 RN incompat (#35618)
    • testing: handle absolute cypress screenshotsFolder/videosFolder paths (#35624)

    ⚠️ Breaking Changes

    • misc: deprecate executors with inferred-plugin replacements (#35576, #35517)
    • angular: remove deprecated ngrx generator (#35567) The @nx/angular:ngrx generator has been removed. Use @nx/angular:ngrx-root-store for root state and @nx/angular:ngrx-feature-store for feature state instead.
    • vite: remove vitest support in favor of @nx/vitest (#35517)

    ❤️ Thank You

    • AgentEnder @AgentEnder
    • Craigory Coppola @AgentEnder
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • jaysoo @jaysoo
    • Leosvel Pérez Espinosa @leosvelperez
    • Sharon Lougheed
    Open source →
  54. 23.0.0-beta.86 May 2026pre-release
    Release notes

    23.0.0-beta.8 (2026-05-06)

    🚀 Features

    • ⚠️ bundling: drop legacy typescript plugin and align rollup buildLibsFromSource default (#35516)

    🩹 Fixes

    • core: update minimatch to 10.2.5 (#35569, #34660)
    • core: restore use-legacy-versioning shim for @nx/js@21 ensurePackage path (#35574)
    • core: isolate NX_PARALLEL env var in parallel-related specs (#35579)
    • core: bump axios to 1.16.0 for all packages (#35568)
    • dotnet: correct output paths for Web SDK and centralized dist setups (#35398)
    • repo: resolve graph-client build-client sandbox violations (#35522)

    ⚠️ Breaking Changes

    • bundling: drop legacy typescript plugin and align rollup buildLibsFromSource default (#35516)

    ❤️ Thank You

    • beeman
    • Claude
    • Craigory Coppola @AgentEnder
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Optischa @Optischa
    Open source →
  55. 23.0.0-beta.75 May 2026pre-release
    Release notes

    23.0.0-beta.7 (2026-05-05)

    🩹 Fixes

    ❤️ Thank You

    • FrozenPandaz @FrozenPandaz
    • Jason Jean @FrozenPandaz
    Open source →
  56. 23.0.0-beta.65 May 2026pre-release
    Release notes

    23.0.0-beta.6 (2026-05-05)

    🚀 Features

    • ⚠️ detox: deprecate the @nx/detox build and test executors (#35529)
    • devkit: migrate @nx/devkit/src/... deep imports (#35541, #34946)
    • ⚠️ testing: deprecate the @nx/cypress:cypress executor (#35531, #35529)

    🩹 Fixes

    • core: unique telemetry user_id; expose workspace_id dimension (#35553)
    • core: use workspace root for package manager detection in script targets (#35550, #35116)
    • devkit: drop build-base outputs override (#35542, #34946)
    • js: include transitive workspace deps in pruned pnpm lockfile (#35532, #35347, #34655)
    • maven: serialize Maven 4 build state recording (#35555)
    • misc: adopt PluginCache across createNodes plugins to prevent flaky cache parse errors (#35544)

    ⚠️ Breaking Changes

    • testing: deprecate the @nx/cypress:cypress executor (#35531, #35529)
    • detox: deprecate the @nx/detox build and test executors (#35529)

    ❤️ Thank You

    • FrozenPandaz @FrozenPandaz
    • Jason Jean @FrozenPandaz
    • MaxKless @MaxKless
    Open source →
  57. 23.0.0-beta.54 May 2026pre-release
    Release notes

    23.0.0-beta.5 (2026-05-01)

    🚀 Features

    • gradle: stream batch task results to nx as they finish (#35487)
    • nx-dev: track docs analytics for code copy, LLM prompt, YouTube (#35526)

    🩹 Fixes

    • nx-dev: short-circuit bot probes in framer rewrite edge function (#35527)

    ❤️ Thank You

    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    Open source →
  58. 23.0.0-beta.430 Apr 2026pre-release
    Release notes

    23.0.0-beta.4 (2026-04-30)

    🚀 Features

    • ⚠️ angular: remove deprecated @nx/angular/module-federation entry point (#35512)
    • ⚠️ angular: remove deprecated move generator (#35513)
    • core: show target uses task graph + filter broken dependsOn during normalization (#35367)

    🩹 Fixes

    • core: correctly classify same-second in-place updates in macOS watcher (#35514)
    • core: restore deprecated allWorkspaceFiles on WorkspaceFileMap (#35518, #34425, #35502)
    • core: ensure verbose logs go to stderr and daemon logs are properly decorated (#34358)
    • core: show flaky-task count in run summary (#35491)
    • js: reference vitest.config in eslint dep-checks for vitest libs (#35460, #33670, #35450)
    • maven: skip attached artifacts that fail to materialize in batch record (#35473)
    • nx-dev: document nested CLI subcommands beyond two levels (#35519)

    ⚠️ Breaking Changes

    • angular: remove deprecated move generator (#35513) The @nx/angular:move generator is removed. Use @nx/workspace:move (or its mv alias) instead.
    • angular: remove deprecated @nx/angular/module-federation entry point (#35512) The @nx/angular/module-federation entry point is removed. Update imports to use @nx/module-federation/angular instead. The update-23-0-0-update-with-module-federation-import migration handles this automatically when running nx migrate.

    ❤️ Thank You

    • AgentEnder @AgentEnder
    • Craigory Coppola @AgentEnder
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    Open source →
  59. 23.0.0-beta.330 Apr 2026pre-release
    Release notes

    23.0.0-beta.3 (2026-04-30)

    🩹 Fixes

    • core: preserve hydrateFileMap back-compat for cached nx-cloud workers (#35502, #34425)
    • gradle: exclude batch-runner from jest haste-map crawl (#35501)

    ❤️ Thank You

    • Jason Jean @FrozenPandaz
    Open source →
  60. 23.0.0-beta.229 Apr 2026pre-release
    Release notes

    23.0.0-beta.2 (2026-04-29)

    🚀 Features

    • ⚠️ misc: remove Tailwind CSS setup-tailwind generators (#35049)
    • ⚠️ misc: remove deprecated stylesheet options from generators (#35103)

    🩹 Fixes

    • angular: disable vitest watch by default (#35493)
    • bundling: include tsconfig solution input for rollup (#35476)
    • bundling: include tsconfig solution input for webpack (#35477, #35476)
    • core: keep continuous children alive when nx:noop orchestrator completes (#35388)
    • core: start TUI event reader synchronously in enter() to prevent stdin race (#35465, #34619, #34144)
    • core: use require for global to local Nx handoff so Windows drive paths work (#35478)
    • core: prevent daemon shutdown from cache-poisoned in-process nx loads (#35482, #35444, #34463, #34111)
    • core: add provenance check in nx console status path (#35485)
    • core: skip target-defaults synthesis when defaults are incompatible with the specified target (#35486)
    • core: native watcher rewrite + daemon hardening for daemon-on e2e (#35204, #14, #19, #12, #13)
    • core: remove access control header from graph app (#35494)
    • js: strip glob from inferred outputs before resolving as path (#35463, #35452)
    • misc: exclude stories and specs from tailwind content scanning (#35470)
    • misc: resolve pnpm catalog: refs in version lookups (#35459, #35453)
    • nextjs: use cached project graph in withNx (#35475, #34518, #32880)
    • node: include tsconfig input in node-app esbuild scaffold (#35466)
    • react: withSvgr migration preserves other properties (#35484)
    • release: handle short and full project names in commit scopes (#34219)

    ⚠️ Breaking Changes

    • misc: remove deprecated stylesheet options from generators (#35103)
    • misc: remove Tailwind CSS setup-tailwind generators (#35049)

    ❤️ Thank You

    • Claude
    • Craigory Coppola @AgentEnder
    • Jack Hsu @jaysoo
    • Jason Jean @FrozenPandaz
    • Leosvel Pérez Espinosa @leosvelperez
    • MaxKless @MaxKless
    • ShwethaSundar
    Open source →