The ESLint plugin for Nx contains executors, generators and utilities used for linting JavaScript/TypeScript projects within an Nx workspace.
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
1760 releases · first in 2023
Release timeline
1760 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