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.
Last release today
26 Aug 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
3 years old
1890 releases · first in 2023
Release timeline
1890 releases since 2023Releases
- 23.0.0-beta.128 Apr 2026pre-release
Release notes
Open source →23.0.0-beta.1 (2026-04-27)
🩹 Fixes
- 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)
- detox: generate valid JSON in .detoxrc for non-expo apps (bde1f18cef)
- js: include extended tsconfigs from project references in typecheck inputs (#35457)
- linter: detect root lint target added in same generator run (#35296, #23147, #34531)
- testing: convert executor-based jest.config.ts and preserve type-only imports (#35286, #34593)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- 23.0.0-beta.024 Apr 2026pre-release
Release notes
Open source →23.0.0-beta.0 (2026-04-24)
🚀 Features
- core: add support for '...' as a spread token when merging target config (#34285)
🩹 Fixes
- core: remove redundant
allWorkspaceFilesfrom the project graph pipeline (#34425)
❤️ Thank You
- Claude
- Craigory Coppola @AgentEnder
- Leosvel Pérez Espinosa @leosvelperez
- 22.7.830 Jul 2026
Release notes
Open source →22.7.8 (2026-07-30)
🩹 Fixes
- angular-rspack: dispose stylesheet bundler so one-shot builds exit (#35869)
- core: use workspace package manager when fetching migrations via install (#35866)
- core: omit peer dependencies when installing packages to a temp dir (#36295)
- core: prevent shell injection in nx import (#36348)
- core: stop passing git revisions through a shell in affected commands (#36379)
- core: allow nx build scripts in generated pnpm-workspace.yaml (#35564)
- core: acknowledge @swc/core build script in generated pnpm-workspace.yaml (#35608)
- core: keep real dependencies when omitting peers from npm temp installs (#36518, #36295)
- core: bump pinned axios and brace-expansion past vulnerable versions (#36507, #36474)
- detox: resolve jest versions locally instead of importing @nx/jest internals (3ce3f6ab6e)
- docker: run release pipeline docker commands without a shell (#36505)
- js: exclude typescript 7 from supported versions on 22.7.x (dc804964e9)
- js: resolve the verdaccio bin through its package.json (#36479)
- misc: use default import for chalk in @nx/workspace output.ts (#35523, #35521, #34111, #21201, #26667)
- repo: use default inputs instead of the '...' token in nx-dev on 22.7.x (#35530)
- repo: trust wix/brew tap so macOS detox CI can install applesimutils (#36146)
- testing: seed typescript before plugins in e2e workspaces to avoid TS7 stub (7f5ffbfcbc)
❤️ Thank You
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Jonathan Garvey @jdgarvey
- Miroslav Jonaš @meeroslav
- 22.7.711 Jul 2026
Release notes
Open source →22.7.7 (2026-07-10)
🩹 Fixes
- core: prevent path traversal / zip-slip in self-hosted remote cache (#36116)
- core: warn when the self-hosted remote cache disables TLS verification (NXC-4593) (#36132, #36116)
- dotnet: declare obj as a publish output to fix sandbox violation (#35858)
- dotnet: declare directory build props input for analyzer dotnet tasks (df7540195a)
- dotnet: declare directory build props on the separate release build target (6545ee2222)
- dotnet: declare directory build props on the analyzer tests dotnet targets (e72ee0dd79)
❤️ Thank You
- FrozenPandaz @FrozenPandaz
- Jason Jean @FrozenPandaz
- 22.7.623 Jun 2026
Release notes
Open source →22.7.6 (2026-06-23)
🩹 Fixes
- misc: bump happy-dom, tmp, and form-data to patched versions (#36013)
❤️ Thank You
- Jack Hsu @jaysoo
- 22.7.527 May 2026
Release notes
Open source →22.7.5 (2026-05-27)
🩹 Fixes
- core: update tmp to 0.2.6 due to CVE-2026-44705 (#35813)
❤️ Thank You
- Jack Hsu @jaysoo
- 22.7.425 May 2026
Release notes
Open source →22.7.4 (2026-05-25)
🩹 Fixes
- core: update brace-expansion and yaml (#35790)
❤️ Thank You
- Jack Hsu @jaysoo
- 22.7.322 May 2026
Release notes
Open source →22.7.3 (2026-05-22)
🚀 Features
- js: support pnpm 11.2.2 (#35772)
🩹 Fixes
- angular: only add @oxc-project/runtime on the vitest-analog path (#35734)
- angular-rspack: exclude eslint config from tailwind v4 source scan (#35663)
- core: warn before installing unknown npm packages as preset (#35644)
- core: preserve input order in createNodes plugin results (#35595)
- 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)
- dotnet: include Directory.. files in inputs (#35738)
- gradle: add transitive:true to all tasks (#35677)
- gradle: pin generated e2e project toolchain to installed JDK (#35703)
- js: fall back to npm publish when bun publish fails with auth error (#35756)
- linter: improve convert-to-flat-config output fidelity (#35330)
- linter: only rewrite workspace-package peer deps to workspace:* (#35423, #35318, #33417)
- misc: stop inferring
projects: 'self'independsOnentries (#35686) - misc: skip
$escaping in file paths on windows (#35692) - repo: run dotnet restore before publish (#35771)
- repo: run dotnet restore before macos e2e job (#35774)
- rsbuild: infer build outputs from distPath.root directly (#35707)
- rsbuild: lazy-require @rsbuild/core in plugin so spec mocks work after jest.resetModules (#35707)
- testing: correct yargs-parser import in getJestProjectsAsync (#35672, #35654)
❤️ Thank You
- AgentEnder @AgentEnder
- Artur @arturovt
- Benjamin Staneck @Stanzilla
- Copilot @Copilot
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- leosvelperez @leosvelperez
- Louie Weng @lourw
- 22.7.214 May 2026
Release notes
Open source →22.7.2 (2026-05-14)
🚀 Features
- gradle: stream batch task results to nx as they finish (#35487)
- nx-dev: track docs analytics for code copy, LLM prompt, YouTube (#35526)
- testing: add migration for Jest 30 snapshot guide link (#35629)
🩹 Fixes
- angular: disable vitest watch by default (#35493)
- angular-rspack: keep root-scoped assets out of per-locale i18n emit (#35621)
- bundling: include tsconfig solution input for rollup (#35476)
- bundling: include tsconfig solution input for webpack (#35477, #35476)
- core: bump axios to 1.16.0 for all packages (#35568)
- core: add provenance check in nx console status path (#35485)
- core: remove access control header from graph app (#35494)
- 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: 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: 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: 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: allow
nx mcpto run outside of an Nx workspace (#35655) - core: cast perf entries to PerformanceMeasure for detail access (43c0c821ba)
- devkit: exclude dist from jest module path scan (#35615)
- devkit: expand @nx/devkit/internal re-exports for cherry-picked v23 deep-import migration (#35541)
- dotnet: correct output paths for Web SDK and centralized dist setups (#35398)
- 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)
- 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)
- linter: prevent ENOENT crash in getRelativeImportPath for unresolvable paths (#35007, #13872, #34066, #30491, #16716, #35006, #21889, #32190)
- 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)
- nx-dev: document nested CLI subcommands beyond two levels (#35519)
- nx-dev: short-circuit bot probes in framer rewrite edge function (#35527)
- react: withSvgr migration preserves other properties (#35484)
- repo: clear NX_INVOCATION_ROOT_PID in run-native-target to avoid recursion false-positive (443dee0b22)
- repo: revert deep-import rewrites that targeted v23-only @nx/devkit/internal entry (ac8187963d)
- repo: unblock 22.7.x cargo tests and nx-build e2e (#34285)
- repo: expand "..." spread token in graph typecheck inputs (#34285, #35458)
- 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: exclude dist and out-tsc from default jest module path scan (#35619)
- testing: update remaining snapshot guide links missed by migration (cd350c1140)
❤️ Thank You
- Adam Keenan @adamk33n3r
- AgentEnder @AgentEnder
- beeman
- Claude
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Max Kless
- MaxKless @MaxKless
- Optischa @Optischa
- Sharon Lougheed
- 22.7.128 Apr 2026
Release notes
Open source →22.7.1 (2026-04-28)
🩹 Fixes
- core: prevent spinner flicker when sync applying (#35445)
- core: exclude hyperfine env vars from daemon env reflection (5095b4be7d)
- 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)
- detox: generate valid JSON in .detoxrc for non-expo apps (eb2fa8ced4)
- js: include extended tsconfigs from project references in typecheck inputs (#35457)
- linter: detect root lint target added in same generator run (#35296, #23147, #34531)
- 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)
- release: handle short and full project names in commit scopes (#34219)
- testing: convert executor-based jest.config.ts and preserve type-only imports (#35286, #34593)
❤️ Thank You
- Claude
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- ShwethaSundar
- 22.7.024 Apr 2026
Release notes
Open source →22.7.0 (2026-04-24)
🚀 Features
- core: add .nx/self-healing to .gitignore (#34855)
- core: decouple DB version from Nx version and share DB across worktrees (#34942)
- core: auto-open browser for Cloud setup URL during create-nx-workspace (#35014)
- core: allow generate command to skip project graph creation (#35170)
- core: remove polygraph cloud passthrough (#35153)
- core: use CNW variant 1 cloud prompt in nx init (#35155)
- core: add source map annotations to nx show target (#35225)
- core: prompt for setup mode when running nx init in empty git directory (#35226)
- core: add json input type for selective JSON field hashing (#35248)
- core: update nx-set-shas usage to v5 (#34934)
- core: add NX_BAIL environment variable (#34711)
- core: add page up/down to tui shortcuts (#34525)
- core: add logging and progress message types to daemon (#35342)
- dotnet: add ci-workflow generator (#33321)
- js: support nx.sync.ignoredDependencies in typescript-sync (#35401)
- misc: a/b test cloud prompt copy in create-nx-workspace (#35039)
- misc: update nx init telemetry meta from CSV to JSON format (#35076)
- misc: lock in CNW cloud prompt A/B winner and add new variants (#35154)
- nx-dev: add conditional blog/changelog proxy in edge function (#35043)
- nx-dev: add nx-blog sitemap to root sitemap index (#35363)
- repo: add nx-labs repo target and use glob pattern for update-all-repos (#34999)
- repo: enable tsgo compiler for nx package (#35047)
- repo: enforce no-disabled-tests via ESLint with per-project warning caps (#35122)
- repo: add e2e test for nx build process verification (#35119)
- vite: add compiler option to vite plugin for tsgo support (#35429, #33821, #35047, #35167)
🩹 Fixes
- angular: update duplicate migration keys (#34961)
- angular: add storybook and playwright as implicit dependencies (#35224)
- angular: preserve specific file paths in tsconfig when adding secondary entry point (#35254, #33051)
- angular: fall back to addUndefinedDefaults when addUndefinedObjectDefaults is unavailable (#35290)
- angular-rspack: ensure rebuild chunks emitted summary accurate (#34979, #34936)
- angular-rspack: normalize Windows path separators for i18n (#35252, #32864)
- angular-rspack: add fileReplacements to resolve.alias (#34197)
- angular-rspack: fixes issues with angular-rspack hmr (#35294, #35040)
- bundling: disable swc input source map resolution (#35010, #32671)
- bundling: bump esbuild for new projects to a version compatible with vite 8 (#35132)
- bundling: declare tsconfig.json as input for esbuild targets (#35432)
- core: skip analytics and DB connection when global bin hands off to local (#34914)
- core: properly quote shell metacharacters in CLI args passed to tasks (#34491, #32305, #26682)
- core: avoid redundant project graph requests in ngcli adapter (#34907)
- core: ensure postTasksExecution fires on SIGINT for continuous tasks (#34876, #34623, #34869)
- core: improve error handling in nx migrate registry fetching (#34926, #33014, #33135)
- core: remove CRA migration logic from nx init (#34912)
- core: pass collectInputs flag through daemon IPC for task hashing (#34915)
- core: prevent DB corruption from concurrent initialization (#34861)
- core: set windowsHide: true on all child process spawns (#34894, #34455)
- core: split-target should handle projects with colons in name better (#34725)
- core: prevent TUI crash when task output arrives after completion (#34785, #34677)
- core: respect --parallel limit for discrete task concurrency (#34721, #34117, #31494)
- core: use scroll-offset-based scrollbar positioning in TUI (#34689)
- core: skip import-equals namespace aliases in native scanner (#34947, #34644)
- core: include command name on all telemetry events (#34949)
- core: skip workspace context setup when global bin hands off to local (#34953, #34914)
- core: add explicit exports entry for nx/src/native directory (#34967, #34111)
- core: use upsert to prevent FK constraint violations in task DB (#34977)
- core: runtime inputs shouldn't be cached at task_hasher layer and filesets should be in the hash_plans layer (#34971, #30170)
- core: suppress postinstall error output when nx is not yet built (#34986)
- core: show better log message when isolated plugin shuts down after hook completion (#34922)
- core: handle owners and conformance project refs on move/remove (#34815)
- core: resolve published nx migrate package resolution (#35013, #34111)
- core: prevent batch executor error on prematurely completed tasks (#35015)
- core: add timeouts to GitHub push flow to prevent CLI hangs (#35011, #34482)
- core: prevent nx watch infinite loop from overly broad output globs (#34995)
- core: add package export for nx/release/changelog-renderer (#35033)
- core: validate bundler option for Angular presets in create-nx-workspace (#35074)
- core: handle "." and absolute paths as workspace name in CNW (#35083, #1)
- core: pin version of axios (#35093)
- core: preserve sibling dependency inputs in native hashing (#35071)
- core: restore nx package exports compatibility (#35095)
- core: sandbox exclusions, multi-line typeof import detection, global ensurePackage mock (#35056)
- core: restore metadata table for telemetry session tracking (#35099)
- core: no-interactive should disable prompts during migrate (#35106)
- core: reduce published nx package size with files allowlist (#35109)
- core: clean up legacy .gemini/skills during configure-ai-agents (#35117)
- core: copy pnpm install configuration to generated package.json (#35016, #30240)
- core: improve migrate error reporting (#34980)
- core: display actual error message when plugin loading fails (#35138, #35137)
- core: bump axios to 1.13.5 to resolve CVE-2026-25639 (#35148, #35145)
- core: update and pin ejs to 5.0.1 (#35157)
- core: misc tui perf fixes (#35187)
- core: replace LGPL-licensed @ltd/j-toml with BSD-3-Clause smol-toml (#35188)
- core: supply chain hardening via transitive dependency pinning (#35159)
- core: kill discrete tasks and use tree-kill for batch cleanup on SIGINT (#35175)
- core: support cross-file variable references in .env files (#34956, #34955)
- core: disable Yarn scripts for temp nx@latest installs (#35210)
- core: use fresh package manager cache for e2e tests (#35211)
- core: add missing inputs and sandbox exclusions for native tasks (#35212)
- core: prevent phantom connections and dead polling in plugin workers (#34823, #34388)
- core: ensure build tasks use copyReadme named input (#35217)
- core: add prettier config inputs to astro-docs format target (#35222)
- core: add vale-changed.mjs script to vale target inputs (d4c55d806a)
- core: add missing build inputs for angular-rspack example projects (fd0dff1078)
- core: add run-native-target script input to dotnet build-analyzer (#35221)
- core: overwrite inferred script target when nx prop defines executor or command (#35227)
- core: exclude populate-local-registry-storage from sandbox I/O checks (#35239)
- core: replace exec() with spawn() to prevent maxBuffer crash on large command output (#35256)
- core: inline daemon status check, drop subprocess workaround (#35273)
- core: don't cache project graph errors on daemon (#35088)
- core: cap TUI parallel slots by total task count (#35299)
- core: don't hang when workspace contains a named pipe (#35289)
- core: optimize warm cache performance for task execution (#35172, #31067)
- core: allow controlling migrate fallback installation concurrency (#35312)
- core: support pnpm multi-document lockfiles (#35271)
- core: await queued processTask promises before cache.getBatch (#35322, #35172)
- core: use v8 serialization in pseudo-IPC channel (#35332)
- core: recognize json inputs in TS task hasher fallback (#35334)
- core: speed up nx --version by avoiding heavy imports (#35326)
- core: resolve native binary crash on aarch64 linux with 16K/64K page kernels (#35356, #145353, #6541, #1547, #1549, #35345)
- core: normalize spawned run-commands output (#35358)
- core: create process report on fatal error in .nx/workspace-data (#35193)
- core: improve native TypeScript type definitions (#35251)
- core: don't spread plugin name into set constructor (#35385)
- core: allow --target/-t and -p flags for nx run with colon targets (#35394, #35098)
- core: make nx version lookup bundle-safe (#35430)
- core: restore top-level schemas/ in published nx package (#35427, #34111, #35109, #35411)
- core: wait for stdio drain before capturing task output (#35422, #35302)
- core: prevent deferred spinner text update from causing early spinner appearance (#35435)
- devkit: prevent double install in generators for TS solution workspaces (#34891)
- devkit: add startTime and endTime to TaskResult interface (#34996)
- gradle: remove annotations from atomizer (#34871)
- gradle: ignore test enums when atomizing (#34974)
- gradle: increase project graph timeout defaults (#35058)
- gradle: use object notation for exclude tasks (#35085)
- gradle: detect @Input provider-based dependencies (#35090)
- gradle: prevent Gradle and Maven daemon accumulation during project graph recalculation (#35143)
- gradle: infer input extensions on project graph generation (#35160)
- gradle: hoist shared task computation out of per-class loop in atomized CI target generation (#35199)
- gradle: patch 0.1.19 to beta.11 (#35202)
- gradle: recognize Kotlin compile tasks in inferred input extensions (#35335)
- gradle: resolve sandbox violations in e2e-gradle tests (#35349, #35315)
- js: normalize cwd path separator in typescript plugin targets (#34911)
- js: preserve tsconfig fields in typescript plugin cache (#34908)
- js: pass configName to typecheck command in TS plugin (#34989, #34274)
- js: add input on .d.ts files within dependency projects (#34968)
- js: add {projectRoot} prefix to d.ts fileset in typescript plugin (#35037)
- js: recognize tsgo in dependency-checks lint rule (#35048)
- js: narrow tsc build-base outputs to only tsc-produced file types (#35041)
- js: include tsbuildinfo in narrowed tsc build-base outputs (#35086, #35041)
- js: use explicit nx/bin/nx path in start-local-registry (#35127)
- js: resolve ENOWORKSPACES test error in setupVerdaccio for @nx/js:library generator (#34755)
- js: include npm overrides in generated lockfile (#35192, #34529)
- js: stop generating baseUrl in tsconfig, use ./ prefix for path mappings (#34965, #32958)
- js: suppress false swc-node/ts-node warning on Node 22.18+ (#35247, #32567)
- js: avoid full source scan in readTsConfigPaths (#35300)
- js: resolve project tsconfig for inferred tsc run-commands targets in dependency-checks (#35291)
- js: declare .d.cts/.d.mts as typecheck inputs and outputs (#35357)
- js: resolve build output dir from globbed outputs in node executor (#35288, #35041, #35198, #35301)
- js: avoid double-prefixing node executor output paths (#35050, #35044, #33577)
- js: add npm workspace support to prune-lockfile executor (#35383, #33523)
- linter: detect require() calls in enforce-module-boundaries rule (#34896, #34096)
- linter: use native nx.configs in convert-to-flat-config for Nx plugins (#34897, #31736)
- linter: convert project-level eslint configs and log when skipped (#34899, #29458)
- linter: use root config to determine ESLint class in plugin (#34900, #32110)
- linter: prepend framework configs before baseConfig in flat config generation (#34898, #28381, #32923)
- linter: remove custom eslint hasher (d64aeef5df)
- linter: infer extended tsconfig files as task inputs (#35190)
- linter: add missing inputs to eslint executor target defaults (#35236)
- maven: prevent batch executor hang from premature worker exit (#35001, #34757)
- maven: make install targets noop when maven.install.skip=true (#35009)
- maven: log analyzer startup under verbose instead of stdout (#35361)
- maven: honor settings.xml in Maven 3 batch runner (#35216)
- misc: make webinar banner theme-aware with light mode support (#35029)
- misc: handle non-interactive mode and add template shorthand names for CNW (#35045)
- misc: use workspace root for package manager detection and normalize paths in plugins (#35116)
- misc: stream Framer proxy responses and add edge function timing (#35215)
- misc: bump axios to 1.15.0 for all packages (#35237)
- misc: allow create-nx-workspace . --no-interactive in empty directory (#35281)
- misc: remove process exit handlers when child process exits (#35279)
- module-federation: enable ESM output for Angular rspack MF plugin (#34839, #34584, #33992)
- module-federation: bump @module-federation/enhanced to ^2.3.3 (#35314, #35311)
- nextjs: align nx-dev build inputs and update plugin defaults (#35238)
- nextjs: add semver to required packages in update-package-json (#35384, #34095)
- node: split package-manager exec command for VS Code launch.json (#35295, #35276)
- nx-cloud: remove invalid images (#34997, #34970)
- nx-dev: resolve changelog page 500 error (#34920, #34909)
- nx-dev: build nx-dev in-place to fix ai package resolution (#34730, #34669)
- nx-dev: improve docs search ranking and metrics (#34992)
- nx-dev: correct YouTube channel URL on courses page (#35034)
- nx-dev: improve search ranking for reference pages (#35243, #1, #7, #2)
- nx-dev: seo improvements for nx.dev/docs (#35244)
- nx-dev: restore sitemap generation (#35351)
- nx-dev: remove broken header links (podcast) (#35410)
- react: force Vite 7 when using React Router in framework mode (#35101)
- react: support Vite 8 for React Router apps (#35365)
- release: fall back to gh user search for author usernames (#34904)
- release: surface swallowed publish errors when stdout is not valid JSON (#35283, #34497)
- release: apply preid to dependent patch bumps (#35381, #33488)
- repo: skip flaky Cypress HMR e2e tests (#34969)
- repo: use @nx/nx-source export condition in jest resolver (#34972)
- repo: resolve FreeBSD build disk space issue (#35030)
- repo: add copy-assets plugin and migrate all packages from legacy-post-build (#34994)
- repo: copy-assets plugin and e2e improvements (#35042, #34994)
- repo: pass env vars into docker builds in publish workflow (#35060)
- repo: bump picomatch from 4.0.2 to 4.0.4 (#35081, #35068)
- repo: fixup lock-threads failing with resource inaccessible message (#35005)
- repo: re-enable Cypress HMR e2e tests after upstream tapable fix (#35105, #34969, #20693)
- repo: clean Angular CLI restore target before cache copy (#35121)
- repo: correct build target outputs for docker and vue packages (#35136)
- repo: narrow copy-assets outputs to prevent overlap with build-base (#35097)
- repo: update issue-notifier.yml (#35178)
- repo: resolve FreeBSD build OOM and disk exhaustion (#35309, #35231)
- repo: switch agent apt mirror to azure to avoid canonical sync races (#35324)
- testing: handle undefined options in playwright preset (#34750)
- testing: gracefully handle broken jest configs in alias migration (#34901)
- testing: add dependent .d.ts inputs for ts-jest without isolatedModules (#35231)
- testing: declare external tsconfig files as playwright e2e task inputs (#35287)
- testing: include config file path in plugin hash calculation (#35346)
- vite: add support for Vite 8 (#34850, #34849)
- vite: update vitest and plugin-react-swc versions for vite 8 compat (#35062)
- vite: bump sass version for vue/nuxt presets for Vite 8 compat (#35073)
- vitest: resolve addPlugin default in init generator (#34990)
- vitest: add dependent task output files as inputs for vitest test targets (#35242)
- vitest: infer ancestor tsconfig files as test task inputs (#35241)
- webpack: bump postcss-loader to ^8.2.1 to eliminate transitive [email protected] CVE (#35028, #35025)
❤️ Thank You
- AgentEnder @AgentEnder
- AI-JamesHenry @AI-JamesHenry
- Alexandre Ducarne @JiggyJinjo
- Amp
- barbados-clemens @barbados-clemens
- Ben Snyder
- Caleb Ukle
- Charlie Croom
- Claude
- Claude Opus 4.6
- Claude Opus 4.6 (1M context)
- Colum Ferry @Coly010
- Copilot @Copilot
- Craigory Coppola @AgentEnder
- dan-winters @dan-winters
- Eric Baer
- FrozenPandaz @FrozenPandaz
- FUASHI LOT-BILL
- Jack Baker
- Jack Hsu @jaysoo
- Jack Stevenson
- James Henry @JamesHenry
- jase @jase88
- Jason Jean @FrozenPandaz
- Jay Bell
- jaysoo @jaysoo
- Jeff Miller @jeff-miller-cfa
- John Wiegert
- Juri Strumpflohner @juristr
- Leosvel Pérez Espinosa @leosvelperez
- leosvelperez @leosvelperez
- Louie Weng @lourw
- lourw @lourw
- Lucas Estevão
- MaxKless @MaxKless
- Miroslav Jonaš @meeroslav
- mungodewar @mungodewar
- Nelson Dominguez @ekkolon
- Parker Norwood @parker-norwood
- Raashish Aggarwal @raashish1601
- Robert Sidzinka
- Sai Asish Y @SAY-5
- Seth Davenport @SethDavenport
- Steven Nance
- Tomas Ptacek @faileon
- Victor Savkin @vsavkin
- 22.7.0-rc.224 Apr 2026pre-release
Release notes
Open source →22.7.0-rc.2 (2026-04-24)
🚀 Features
🩹 Fixes
- bundling: declare tsconfig.json as input for esbuild targets (#35432)
- core: allow --target/-t and -p flags for nx run with colon targets (#35394, #35098)
- core: make nx version lookup bundle-safe (#35430)
- core: restore top-level schemas/ in published nx package (#35427, #34111, #35109, #35411)
- core: wait for stdio drain before capturing task output (#35422, #35302)
- js: add npm workspace support to prune-lockfile executor (#35383, #33523)
- maven: honor settings.xml in Maven 3 batch runner (#35216)
- misc: remove process exit handlers when child process exits (#35279)
- nx-dev: remove broken header links (podcast) (#35410)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Jeff Miller @jeff-miller-cfa
- Juri Strumpflohner @juristr
- Leosvel Pérez Espinosa @leosvelperez
- Lucas Estevão
- MaxKless @MaxKless
- Seth Davenport @SethDavenport
- 22.7.0-rc.123 Apr 2026pre-release
Release notes
Open source →22.7.0-rc.1 (2026-04-23)
🚀 Features
- js: support nx.sync.ignoredDependencies in typescript-sync (#35401)
🩹 Fixes
- js: avoid double-prefixing node executor output paths (#35050, #35044, #33577)
- release: apply preid to dependent patch bumps (#35381, #33488)
❤️ Thank You
- Claude
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Raashish Aggarwal @raashish1601
- 22.7.0-rc.022 Apr 2026pre-release
Release notes
Open source →22.7.0-rc.0 (2026-04-22)
🩹 Fixes
- core: don't spread plugin name into set constructor (#35385)
- nextjs: add semver to required packages in update-package-json (#35384, #34095)
- react: support Vite 8 for React Router apps (#35365)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- 22.7.0-pr.35413.8891d1723 Apr 2026pre-release
Nothing published for this version
- 22.7.0-pr.35356.e1b62ce21 Apr 2026pre-release
Nothing published for this version
- 22.7.0-pr.35019.f500fd725 Mar 2026pre-release
Nothing published for this version
- 22.7.0-pr.34971.73bed1f24 Mar 2026pre-release
Nothing published for this version
- 22.7.0-pr.34971.531c09c23 Mar 2026pre-release
Nothing published for this version
- 22.7.0-pr.34941.897df6923 Mar 2026pre-release
Nothing published for this version
- 22.7.0-pr.34894.3fb67b519 Mar 2026pre-release
Nothing published for this version
- 22.7.0-pr.34823.636be203 Apr 2026pre-release
Nothing published for this version
- 22.7.0-pr.33655.d8f5d5030 Mar 2026pre-release
Nothing published for this version
- 22.7.0-pr.33655.9c4745323 Mar 2026pre-release
Nothing published for this version
- 22.7.0-pr.33655.57246dd22 Apr 2026pre-release
Nothing published for this version
- 22.7.0-pr.33655.527519b25 Mar 2026pre-release
Nothing published for this version
- 22.7.0-pr.33655.2b962771 Apr 2026pre-release
Nothing published for this version
- 22.7.0-pr.33655.12b0dd724 Mar 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260422-3d9bc7a22 Apr 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260417-8f47bf217 Apr 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260407-918193a7 Apr 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260407-794e0b47 Apr 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260403-8d35b8a3 Apr 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260331-63a8f2731 Mar 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260327-691bb1127 Mar 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260325-bc9823925 Mar 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260322-79bbe1b22 Mar 2026pre-release
Nothing published for this version
- 22.7.0-canary.20260320-2c4fb2a20 Mar 2026pre-release
Nothing published for this version
- 22.7.0-beta.1722 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.17 (2026-04-22)
🚀 Features
- core: add logging and progress message types to daemon (#35342)
- nx-dev: add nx-blog sitemap to root sitemap index (#35363)
🩹 Fixes
- core: create process report on fatal error in .nx/workspace-data (#35193)
- core: improve native TypeScript type definitions (#35251)
- maven: log analyzer startup under verbose instead of stdout (#35361)
- misc: allow create-nx-workspace . --no-interactive in empty directory (#35281)
- testing: include config file path in plugin hash calculation (#35346)
❤️ Thank You
- AgentEnder @AgentEnder
- Claude
- Claude Opus 4.6
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jack Stevenson
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- mungodewar @mungodewar
- 22.7.0-beta.1621 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.16 (2026-04-21)
🩹 Fixes
- core: speed up nx --version by avoiding heavy imports (#35326)
- core: resolve native binary crash on aarch64 linux with 16K/64K page kernels (#35356, #145353, #6541, #1547, #1549, #35345)
- core: normalize spawned run-commands output (#35358)
- gradle: recognize Kotlin compile tasks in inferred input extensions (#35335)
- gradle: resolve sandbox violations in e2e-gradle tests (#35349, #35315)
- js: declare .d.cts/.d.mts as typecheck inputs and outputs (#35357)
- js: resolve build output dir from globbed outputs in node executor (#35288, #35041, #35198, #35301)
- module-federation: bump @module-federation/enhanced to ^2.3.3 (#35314, #35311)
- nx-dev: restore sitemap generation (#35351)
❤️ Thank You
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- 22.7.0-beta.1517 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.15 (2026-04-17)
🩹 Fixes
- core: use v8 serialization in pseudo-IPC channel (#35332)
- core: recognize json inputs in TS task hasher fallback (#35334)
❤️ Thank You
- AgentEnder @AgentEnder
- Craigory Coppola @AgentEnder
- 22.7.0-beta.1417 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.14 (2026-04-17)
🚀 Features
- core: add page up/down to tui shortcuts (#34525)
🩹 Fixes
- core: allow controlling migrate fallback installation concurrency (#35312)
- core: support pnpm multi-document lockfiles (#35271)
- core: await queued processTask promises before cache.getBatch (#35322, #35172)
- repo: switch agent apt mirror to azure to avoid canonical sync races (#35324)
❤️ Thank You
- Ben Snyder
- Caleb Ukle
- Craigory Coppola @AgentEnder
- Jason Jean @FrozenPandaz
- Jay Bell
- Leosvel Pérez Espinosa @leosvelperez
- 22.7.0-beta.1316 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.13 (2026-04-16)
🚀 Features
- core: add json input type for selective JSON field hashing (#35248)
- core: update nx-set-shas usage to v5 (#34934)
- core: add NX_BAIL environment variable (#34711)
🩹 Fixes
- angular: preserve specific file paths in tsconfig when adding secondary entry point (#35254, #33051)
- angular: fall back to addUndefinedDefaults when addUndefinedObjectDefaults is unavailable (#35290)
- angular-rspack: normalize Windows path separators for i18n (#35252, #32864)
- angular-rspack: add fileReplacements to resolve.alias (#34197)
- angular-rspack: fixes issues with angular-rspack hmr (#35294, #35040)
- core: replace exec() with spawn() to prevent maxBuffer crash on large command output (#35256)
- core: inline daemon status check, drop subprocess workaround (#35273)
- core: don't cache project graph errors on daemon (#35088)
- core: cap TUI parallel slots by total task count (#35299)
- core: don't hang when workspace contains a named pipe (#35289)
- core: optimize warm cache performance for task execution (#35172, #31067)
- js: stop generating baseUrl in tsconfig, use ./ prefix for path mappings (#34965, #32958)
- js: suppress false swc-node/ts-node warning on Node 22.18+ (#35247, #32567)
- js: avoid full source scan in readTsConfigPaths (#35300)
- js: resolve project tsconfig for inferred tsc run-commands targets in dependency-checks (#35291)
- nextjs: align nx-dev build inputs and update plugin defaults (#35238)
- node: split package-manager exec command for VS Code launch.json (#35295, #35276)
- nx-dev: improve search ranking for reference pages (#35243, #1, #7, #2)
- nx-dev: seo improvements for nx.dev/docs (#35244)
- release: surface swallowed publish errors when stdout is not valid JSON (#35283, #34497)
- repo: resolve FreeBSD build OOM and disk exhaustion (#35309, #35231)
- testing: declare external tsconfig files as playwright e2e task inputs (#35287)
- vitest: add dependent task output files as inputs for vitest test targets (#35242)
- vitest: infer ancestor tsconfig files as test task inputs (#35241)
❤️ Thank You
- Caleb Ukle
- Claude Opus 4.6 (1M context)
- Craigory Coppola @AgentEnder
- dan-winters @dan-winters
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- jase @jase88
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Leosvel Pérez Espinosa @leosvelperez
- Miroslav Jonaš @meeroslav
- Nelson Dominguez @ekkolon
- Sai Asish Y @SAY-5
- Tomas Ptacek @faileon
- 22.7.0-beta.1210 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.12 (2026-04-10)
🚀 Features
- core: use CNW variant 1 cloud prompt in nx init (#35155)
- core: add source map annotations to nx show target (#35225)
- core: prompt for setup mode when running nx init in empty git directory (#35226)
🩹 Fixes
- angular: add storybook and playwright as implicit dependencies (#35224)
- core: support cross-file variable references in .env files (#34956, #34955)
- core: disable Yarn scripts for temp nx@latest installs (#35210)
- core: use fresh package manager cache for e2e tests (#35211)
- core: add missing inputs and sandbox exclusions for native tasks (#35212)
- core: prevent phantom connections and dead polling in plugin workers (#34823, #34388)
- core: ensure build tasks use copyReadme named input (#35217)
- core: add prettier config inputs to astro-docs format target (#35222)
- core: add vale-changed.mjs script to vale target inputs (d4c55d806a)
- core: add missing build inputs for angular-rspack example projects (fd0dff1078)
- core: add run-native-target script input to dotnet build-analyzer (#35221)
- core: overwrite inferred script target when nx prop defines executor or command (#35227)
- core: exclude populate-local-registry-storage from sandbox I/O checks (#35239)
- js: include npm overrides in generated lockfile (#35192, #34529)
- linter: remove custom eslint hasher (d64aeef5df)
- linter: infer extended tsconfig files as task inputs (#35190)
- linter: add missing inputs to eslint executor target defaults (#35236)
- misc: stream Framer proxy responses and add edge function timing (#35215)
- misc: bump axios to 1.15.0 for all packages (#35237)
- testing: add dependent .d.ts inputs for ts-jest without isolatedModules (#35231)
❤️ Thank You
- AgentEnder @AgentEnder
- Claude
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- FUASHI LOT-BILL
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- MaxKless @MaxKless
- 22.7.0-beta.118 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.11 (2026-04-08)
🚀 Features
- core: allow generate command to skip project graph creation (#35170)
- core: remove polygraph cloud passthrough (#35153)
- repo: add e2e test for nx build process verification (#35119)
🩹 Fixes
- core: misc tui perf fixes (#35187)
- core: replace LGPL-licensed @ltd/j-toml with BSD-3-Clause smol-toml (#35188)
- core: supply chain hardening via transitive dependency pinning (#35159)
- core: kill discrete tasks and use tree-kill for batch cleanup on SIGINT (#35175)
- gradle: infer input extensions on project graph generation (#35160)
- gradle: hoist shared task computation out of per-class loop in atomized CI target generation (#35199)
- gradle: patch 0.1.19 to beta.11 (#35202)
- maven: prevent batch executor hang from premature worker exit (#35001, #34757)
- maven: make install targets noop when maven.install.skip=true (#35009)
- repo: update issue-notifier.yml (#35178)
❤️ Thank You
- Alexandre Ducarne @JiggyJinjo
- Claude
- Claude Opus 4.6 (1M context)
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Louie Weng @lourw
- MaxKless @MaxKless
- Victor Savkin @vsavkin
- 22.7.0-beta.102 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.10 (2026-04-02)
🚀 Features
- misc: lock in CNW cloud prompt A/B winner and add new variants (#35154)
- repo: enforce no-disabled-tests via ESLint with per-project warning caps (#35122)
🩹 Fixes
- bundling: bump esbuild for new projects to a version compatible with vite 8 (#35132)
- core: reduce published nx package size with files allowlist (#35109)
- core: clean up legacy .gemini/skills during configure-ai-agents (#35117)
- core: copy pnpm install configuration to generated package.json (#35016, #30240)
- core: improve migrate error reporting (#34980)
- core: display actual error message when plugin loading fails (#35138, #35137)
- core: bump axios to 1.13.5 to resolve CVE-2026-25639 (#35148, #35145)
- core: update and pin ejs to 5.0.1 (#35157)
- gradle: prevent Gradle and Maven daemon accumulation during project graph recalculation (#35143)
- js: use explicit nx/bin/nx path in start-local-registry (#35127)
- js: resolve ENOWORKSPACES test error in setupVerdaccio for @nx/js:library generator (#34755)
- misc: use workspace root for package manager detection and normalize paths in plugins (#35116)
- repo: clean Angular CLI restore target before cache copy (#35121)
- repo: correct build target outputs for docker and vue packages (#35136)
- repo: narrow copy-assets outputs to prevent overlap with build-base (#35097)
❤️ Thank You
- Claude Opus 4.6
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- leosvelperez @leosvelperez
- MaxKless @MaxKless
- Parker Norwood @parker-norwood
- Robert Sidzinka
- Steven Nance
- 22.7.0-beta.91 Apr 2026pre-release
Release notes
Open source →22.7.0-beta.9 (2026-03-31)
🩹 Fixes
- core: restore metadata table for telemetry session tracking (#35099)
- core: no-interactive should disable prompts during migrate (#35106)
- gradle: detect @Input provider-based dependencies (#35090)
- react: force Vite 7 when using React Router in framework mode (#35101)
- repo: fixup lock-threads failing with resource inaccessible message (#35005)
- repo: re-enable Cypress HMR e2e tests after upstream tapable fix (#35105, #34969, #20693)
❤️ Thank You
- Craigory Coppola @AgentEnder
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Louie Weng @lourw
- 22.7.0-beta.831 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.8 (2026-03-31)
🚀 Features
- misc: update nx init telemetry meta from CSV to JSON format (#35076)
- repo: enable tsgo compiler for nx package (#35047)
🩹 Fixes
- core: validate bundler option for Angular presets in create-nx-workspace (#35074)
- core: handle "." and absolute paths as workspace name in CNW (#35083, #1)
- core: pin version of axios (#35093)
- core: preserve sibling dependency inputs in native hashing (#35071)
- core: restore nx package exports compatibility (#35095)
- core: sandbox exclusions, multi-line typeof import detection, global ensurePackage mock (#35056)
- gradle: increase project graph timeout defaults (#35058)
- gradle: use object notation for exclude tasks (#35085)
- js: include tsbuildinfo in narrowed tsc build-base outputs (#35086, #35041)
- repo: pass env vars into docker builds in publish workflow (#35060)
- repo: bump picomatch from 4.0.2 to 4.0.4 (#35081, #35068)
- vite: update vitest and plugin-react-swc versions for vite 8 compat (#35062)
- vite: bump sass version for vue/nuxt presets for Vite 8 compat (#35073)
- webpack: bump postcss-loader to ^8.2.1 to eliminate transitive [email protected] CVE (#35028, #35025)
❤️ Thank You
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- lourw @lourw
- Miroslav Jonaš @meeroslav
- Robert Sidzinka
- 22.7.0-beta.728 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.7 (2026-03-28)
🚀 Features
- nx-dev: add conditional blog/changelog proxy in edge function (#35043)
🩹 Fixes
- gradle: increase project graph timeout defaults (#35058)
- js: recognize tsgo in dependency-checks lint rule (#35048)
- js: narrow tsc build-base outputs to only tsc-produced file types (#35041)
- misc: handle non-interactive mode and add template shorthand names for CNW (#35045)
- repo: copy-assets plugin and e2e improvements (#35042, #34994)
- repo: pass env vars into docker builds in publish workflow (#35060)
- vite: update vitest and plugin-react-swc versions for vite 8 compat (#35062)
❤️ Thank You
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- 22.7.0-beta.627 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.6 (2026-03-27)
🚀 Features
- misc: a/b test cloud prompt copy in create-nx-workspace (#35039)
🩹 Fixes
- core: add package export for nx/release/changelog-renderer (#35033)
- js: add {projectRoot} prefix to d.ts fileset in typescript plugin (#35037)
- nx-dev: correct YouTube channel URL on courses page (#35034)
- repo: add copy-assets plugin and migrate all packages from legacy-post-build (#34994)
❤️ Thank You
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Juri Strumpflohner @juristr
- 22.7.0-beta.527 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.5 (2026-03-27)
🚀 Features
- core: auto-open browser for Cloud setup URL during create-nx-workspace (#35014)
- repo: add nx-labs repo target and use glob pattern for update-all-repos (#34999)
🩹 Fixes
- bundling: disable swc input source map resolution (#35010, #32671)
- core: show better log message when isolated plugin shuts down after hook completion (#34922)
- core: handle owners and conformance project refs on move/remove (#34815)
- core: resolve published nx migrate package resolution (#35013, #34111)
- core: prevent batch executor error on prematurely completed tasks (#35015)
- core: add timeouts to GitHub push flow to prevent CLI hangs (#35011, #34482)
- core: prevent nx watch infinite loop from overly broad output globs (#34995)
- devkit: add startTime and endTime to TaskResult interface (#34996)
- js: add input on .d.ts files within dependency projects (#34968)
- misc: make webinar banner theme-aware with light mode support (#35029)
- repo: resolve FreeBSD build disk space issue (#35030)
- vite: add support for Vite 8 (#34850, #34849)
❤️ Thank You
- AgentEnder @AgentEnder
- barbados-clemens @barbados-clemens
- Caleb Ukle
- Claude Opus 4.6
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- Robert Sidzinka
- Steven Nance
- 22.7.0-beta.424 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.4 (2026-03-24)
🚀 Features
- core: decouple DB version from Nx version and share DB across worktrees (#34942)
🩹 Fixes
- angular-rspack: ensure rebuild chunks emitted summary accurate (#34979, #34936)
- core: use upsert to prevent FK constraint violations in task DB (#34977)
- core: runtime inputs shouldn't be cached at task_hasher layer and filesets should be in the hash_plans layer (#34971, #30170)
- core: suppress postinstall error output when nx is not yet built (#34986)
- gradle: ignore test enums when atomizing (#34974)
- js: pass configName to typecheck command in TS plugin (#34989, #34274)
- nx-cloud: remove invalid images (#34997, #34970)
- nx-dev: improve docs search ranking and metrics (#34992)
- repo: use @nx/nx-source export condition in jest resolver (#34972)
- vitest: resolve addPlugin default in init generator (#34990)
❤️ Thank You
- Caleb Ukle
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- 22.7.0-beta.324 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.3 (2026-03-23)
🩹 Fixes
- angular: update duplicate migration keys (#34961)
- core: prevent TUI crash when task output arrives after completion (#34785, #34677)
- core: respect --parallel limit for discrete task concurrency (#34721, #34117, #31494)
- core: use scroll-offset-based scrollbar positioning in TUI (#34689)
- core: skip import-equals namespace aliases in native scanner (#34947, #34644)
- core: include command name on all telemetry events (#34949)
- core: skip workspace context setup when global bin hands off to local (#34953, #34914)
- core: add explicit exports entry for nx/src/native directory (#34967, #34111)
- release: fall back to gh user search for author usernames (#34904)
- repo: skip flaky Cypress HMR e2e tests (#34969)
❤️ Thank You
- AI-JamesHenry @AI-JamesHenry
- Amp
- Charlie Croom
- FrozenPandaz @FrozenPandaz
- Jack Baker
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- 22.7.0-beta.221 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.2 (2026-03-21)
🩹 Fixes
- core: set windowsHide: true on all child process spawns (#34894, #34455)
- core: split-target should handle projects with colons in name better (#34725)
- devkit: prevent double install in generators for TS solution workspaces (#34891)
- gradle: remove annotations from atomizer (#34871)
- linter: prepend framework configs before baseConfig in flat config generation (#34898, #28381, #32923)
- module-federation: enable ESM output for Angular rspack MF plugin (#34839, #34584, #33992)
- nx-dev: build nx-dev in-place to fix ai package resolution (#34730, #34669)
- testing: gracefully handle broken jest configs in alias migration (#34901)
❤️ Thank You
- Claude Opus 4.6
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Juri Strumpflohner @juristr
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- lourw @lourw
- 22.7.0-beta.120 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.1 (2026-03-19)
🩹 Fixes
- core: prevent DB corruption from concurrent initialization (#34861)
❤️ Thank You
- Leosvel Pérez Espinosa @leosvelperez
- 22.7.0-beta.019 Mar 2026pre-release
Release notes
Open source →22.7.0-beta.0 (2026-03-19)
🚀 Features
- core: add .nx/self-healing to .gitignore (#34855)
🩹 Fixes
- core: skip analytics and DB connection when global bin hands off to local (#34914)
- core: properly quote shell metacharacters in CLI args passed to tasks (#34491, #32305, #26682)
- core: avoid redundant project graph requests in ngcli adapter (#34907)
- core: ensure postTasksExecution fires on SIGINT for continuous tasks (#34876, #34623, #34869)
- core: improve error handling in nx migrate registry fetching (#34926, #33014, #33135)
- core: remove CRA migration logic from nx init (#34912)
- core: pass collectInputs flag through daemon IPC for task hashing (#34915)
- js: normalize cwd path separator in typescript plugin targets (#34911)
- js: preserve tsconfig fields in typescript plugin cache (#34908)
- linter: detect require() calls in enforce-module-boundaries rule (#34896, #34096)
- linter: use native nx.configs in convert-to-flat-config for Nx plugins (#34897, #31736)
- linter: convert project-level eslint configs and log when skipped (#34899, #29458)
- linter: use root config to determine ESLint class in plugin (#34900, #32110)
- nx-dev: resolve changelog page 500 error (#34920, #34909)
- testing: handle undefined options in playwright preset (#34750)
❤️ Thank You
- Caleb Ukle
- Claude Opus 4.6 (1M context)
- Craigory Coppola @AgentEnder
- Eric Baer
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- John Wiegert
- Leosvel Pérez Espinosa @leosvelperez
- MaxKless @MaxKless
- 22.6.510 Apr 2026
Release notes
Open source →22.6.5 (2026-04-10)
🚀 Features
- core: allow generate command to skip project graph creation (#35170)
- core: use CNW variant 1 cloud prompt in nx init (#35155)
- core: prompt for setup mode when running nx init in empty git directory (#35226)
- misc: lock in CNW cloud prompt A/B winner and add new variants (#35154)
🩹 Fixes
- angular: add storybook and playwright as implicit dependencies (#35224)
- bundling: bump esbuild for new projects to a version compatible with vite 8 (#35132)
- core: clean up legacy .gemini/skills during configure-ai-agents (#35117)
- core: copy pnpm install configuration to generated package.json (#35016, #30240)
- core: display actual error message when plugin loading fails (#35138, #35137)
- core: bump axios to 1.13.5 to resolve CVE-2026-25639 (#35148, #35145)
- core: update and pin ejs to 5.0.1 (#35157)
- core: misc tui perf fixes (#35187)
- core: replace LGPL-licensed @ltd/j-toml with BSD-3-Clause smol-toml (#35188)
- core: kill discrete tasks and use tree-kill for batch cleanup on SIGINT (#35175)
- core: support cross-file variable references in .env files (#34956, #34955)
- core: disable Yarn scripts for temp nx@latest installs (#35210)
- core: use fresh package manager cache for e2e tests (#35211)
- core: prevent phantom connections and dead polling in plugin workers (#34823, #34388)
- core: add prettier config inputs to astro-docs format target (#35222)
- core: add vale-changed.mjs script to vale target inputs (41a71dd97d)
- core: add missing build inputs for angular-rspack example projects (d71dcc6a9a)
- core: add run-native-target script input to dotnet build-analyzer (#35221)
- core: overwrite inferred script target when nx prop defines executor or command (#35227)
- core: update cleanup mock to match async signature in package-json spec (c9d51d31f9)
- gradle: prevent Gradle and Maven daemon accumulation during project graph recalculation (#35143)
- gradle: use namespace import for tree-kill to match codebase convention (7c4f4af802)
- js: resolve ENOWORKSPACES test error in setupVerdaccio for @nx/js:library generator (#34755)
- js: include npm overrides in generated lockfile (#35192, #34529)
- linter: infer extended tsconfig files as task inputs (#35190)
- maven: prevent batch executor hang from premature worker exit (#35001, #34757)
- maven: use require for tree-kill to avoid esModuleInterop mismatch between lib and spec configs (8bd4c182ca)
- misc: use workspace root for package manager detection and normalize paths in plugins (#35116)
- misc: stream Framer proxy responses and add edge function timing (#35215)
- misc: bump axios to 1.15.0 for all packages (#35237)
- repo: clean Angular CLI restore target before cache copy (#35121)
- repo: update issue-notifier.yml (#35178)
❤️ Thank You
- Alexandre Ducarne @JiggyJinjo
- Claude
- Claude Opus 4.6
- Claude Opus 4.6 (1M context)
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- FUASHI LOT-BILL
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- leosvelperez @leosvelperez
- MaxKless @MaxKless
- Parker Norwood @parker-norwood
- Robert Sidzinka
- Steven Nance
- Victor Savkin @vsavkin
- 22.6.41 Apr 2026
Release notes
Open source →22.6.4 (2026-04-01)
🚀 Features
- misc: update nx init telemetry meta from CSV to JSON format (#35076)
- nx-dev: add conditional blog/changelog proxy in edge function (#35043)
🩹 Fixes
- core: validate bundler option for Angular presets in create-nx-workspace (#35074)
- core: handle "." and absolute paths as workspace name in CNW (#35083, #1)
- core: pin version of axios (#35093)
- core: preserve sibling dependency inputs in native hashing (#35071)
- core: sandbox exclusions, multi-line typeof import detection, global ensurePackage mock (#35056)
- core: no-interactive should disable prompts during migrate (#35106)
- gradle: increase project graph timeout defaults (#35058)
- js: recognize tsgo in dependency-checks lint rule (#35048)
- js: narrow tsc build-base outputs to only tsc-produced file types (#35041)
- js: include tsbuildinfo in narrowed tsc build-base outputs (#35086, #35041)
- js: use explicit nx/bin/nx path in start-local-registry (#35127)
- misc: handle non-interactive mode and add template shorthand names for CNW (#35045)
- react: force Vite 7 when using React Router in framework mode (#35101)
- react-native: use vite's transformWithEsbuild instead of direct esbuild import (5771eb3346)
- repo: pass env vars into docker builds in publish workflow (#35060)
- repo: bump picomatch from 4.0.2 to 4.0.4 (#35081, #35068)
- repo: fixup lock-threads failing with resource inaccessible message (#35005)
- repo: fix lockfile (b070e23445)
- repo: re-enable Cypress HMR e2e tests after upstream tapable fix (#35105, #34969, #20693)
- repo: disable ts-jest diagnostics for workspace-plugin tests (b013f93dca)
- vite: update vitest and plugin-react-swc versions for vite 8 compat (#35062)
- vite: bump sass version for vue/nuxt presets for Vite 8 compat (#35073)
- webpack: bump postcss-loader to ^8.2.1 to eliminate transitive [email protected] CVE (#35028, #35025)
❤️ Thank You
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- Leosvel Pérez Espinosa @leosvelperez
- Miroslav Jonaš @meeroslav
- Robert Sidzinka
- 22.6.327 Mar 2026
Release notes
Open source →22.6.3 (2026-03-27)
🚀 Features
- misc: a/b test cloud prompt copy in create-nx-workspace (#35039)
🩹 Fixes
- js: add {projectRoot} prefix to d.ts fileset in typescript plugin (#35037)
- misc: use namespace import for chalk v4 compatibility (7c9f873bd1)
- misc: handle non-interactive mode and add template shorthand names for CNW (#35045)
❤️ Thank You
- FrozenPandaz @FrozenPandaz
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- 22.6.226 Mar 2026
Release notes
Open source →22.6.2 (2026-03-26)
🚀 Features
- core: auto-open browser for Cloud setup URL during create-nx-workspace (#35014)
- repo: add nx-labs repo target and use glob pattern for update-all-repos (#34999)
🩹 Fixes
- angular: update duplicate migration keys (#34961)
- angular-rspack: ensure rebuild chunks emitted summary accurate (#34979, #34936)
- bundling: disable swc input source map resolution (#35010, #32671)
- core: split-target should handle projects with colons in name better (#34725)
- core: prevent TUI crash when task output arrives after completion (#34785, #34677)
- core: respect --parallel limit for discrete task concurrency (#34721, #34117, #31494)
- core: use scroll-offset-based scrollbar positioning in TUI (#34689)
- core: skip import-equals namespace aliases in native scanner (#34947, #34644)
- core: include command name on all telemetry events (#34949)
- core: skip workspace context setup when global bin hands off to local (#34953, #34914)
- core: use upsert to prevent FK constraint violations in task DB (#34977)
- core: runtime inputs shouldn't be cached at task_hasher layer and filesets should be in the hash_plans layer (#34971, #30170)
- core: show better log message when isolated plugin shuts down after hook completion (#34922)
- core: handle owners and conformance project refs on move/remove (#34815)
- core: resolve published nx migrate package resolution (#35013, #34111)
- core: prevent batch executor error on prematurely completed tasks (#35015)
- core: add timeouts to GitHub push flow to prevent CLI hangs (#35011, #34482)
- devkit: prevent double install in generators for TS solution workspaces (#34891)
- devkit: add startTime and endTime to TaskResult interface (#34996)
- gradle: ignore test enums when atomizing (#34974)
- js: pass configName to typecheck command in TS plugin (#34989, #34274)
- js: add input on .d.ts files within dependency projects (#34968)
- linter: prepend framework configs before baseConfig in flat config generation (#34898, #28381, #32923)
- misc: make webinar banner theme-aware with light mode support (#35029)
- module-federation: enable ESM output for Angular rspack MF plugin (#34839, #34584, #33992)
- nx-cloud: remove invalid images (#34997, #34970)
- nx-dev: build nx-dev in-place to fix ai package resolution (#34730, #34669)
- nx-dev: improve docs search ranking and metrics (#34992)
- release: fall back to gh user search for author usernames (#34904)
- repo: skip flaky Cypress HMR e2e tests (#34969)
- repo: resolve FreeBSD build disk space issue (#35030)
- vite: add support for Vite 8 (#34850, #34849)
- vitest: resolve addPlugin default in init generator (#34990)
❤️ Thank You
- AgentEnder @AgentEnder
- AI-JamesHenry @AI-JamesHenry
- Amp
- barbados-clemens @barbados-clemens
- Caleb Ukle
- Charlie Croom
- Claude Opus 4.6
- Colum Ferry @Coly010
- Craigory Coppola @AgentEnder
- FrozenPandaz @FrozenPandaz
- Jack Baker
- Jack Hsu @jaysoo
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- Robert Sidzinka
- Steven Nance