Change8

22.2.0

📦 nxView on GitHub →
15 features🐛 45 fixes🔧 21 symbols

Summary

This release introduces support for Expo 54 and Nuxt v4, alongside numerous bug fixes focusing on core stability, build tooling improvements (Rollup, Vitest), and enhanced linter compatibility with ESLint v9.

Migration Steps

  1. Run migrations for Vitest 4 if you are using @nx/vite.
  2. Run migrations to add @nx/vitest if applicable.

✨ New Features

  • core: add multiple Nx version detection to nx report
  • core: add template support to create-nx-workspace
  • docker: auto-select version scheme when only one is available
  • expo: support Expo 54
  • gradle: add targetNamePrefix option to mark all gradle targets
  • linter: add util to load eslint rules from a directory
  • maven: update Maven plugin version to 0.0.11
  • nextjs: add migration to add AI instructions for upgrading to Next 16
  • nuxt: support nuxt v4
  • nx-cloud: prepend nx version to stats metadata
  • storybook: support storybook 10.1
  • vite: add vitest 4 migration for users using @nx/vite
  • vite: add migration to add @nx/vitest
  • vitest: update @analogjs/vitest-angular to 2.1.2
  • vitest: make initial generation for JS projects more lightweight

🐛 Bug Fixes

  • angular-rspack: use CJS when serving applications for HMR
  • angular-rspack: ensure rebuild logs are only printed once
  • bundling: replace rollup-plugin-copy with nx copy assets plugin
  • bundling: set buildLibsFromSource in normalize options for Rollup
  • core: don't presume a task is long running if its marked cacheable
  • core: daemon command should exit at end
  • core: provide error when nested graph construction would occur invoked during createNodes
  • core: filter out automated release commits in getCommitsRelevantToProjects
  • core: make daemon socket path unique per process to prevent race condition
  • core: use nx-mcp for older nx versions instead of nx mcp
  • core: propagate continuous task failures to dependent tasks
  • core: kill child process tree in different running tasks
  • core: include create-nx-workspace in migration package group
  • core: suppress git stderr output in parseGitOutput
  • core: prevent Nx Console prompt from blocking non-interactive commands
  • core: ensure perf logs are flushed before exit in graph command
  • core: nx-schema default value for preserveMatchingDependencyRanges should have changed in v22
  • core: stop adding outdated vscode/cursor rule files to gitignore
  • core: sanitize project names for valid git tag names in nx release
  • core: optimize bun lockfile parser
  • core: cnw sends correct selectedRepositoryName; prints instructions when user Ctrl+C
  • core: use Set for O(1) visited node lookup in hasPath
  • docker: fix releasing non docker projects
  • gradle: do not add gradle plugin to plugins block if using version catalogs
  • graph: align exclude flag with others by using findMatchingProjects
  • graph: surface task graph client error via error toast
  • js: ensure copy-workspace-modules copies transitive workspace dependencies
  • linter: handle various flat config override structures
  • linter: base eslint config should ignore out-tsc directories
  • linter: update generators to use ESLint v9 compatible versions
  • maven: remove incorrect threadSafe to parallelism mapping
  • misc: update output location of ai-migration files
  • nest: set moduleResolution to node to prevent TS5095 error
  • nextjs: make migration to next 16 optional
  • node: set generatePackageJson:false for TS Solution workspaces
  • nuxt: do not import base eslint config for root project
  • nuxt: update preset test for v4 app directory structure
  • react: exclude tailwind from CSS modules syntax in component generator
  • react: update @emotion/styled to latest version
  • release: ensure emoji is not repeated in breaking changes summary
  • release: interpolate releaseGroupName in getLatestGitTagForPattern
  • release: ensure --preid flag considers stable tags for version determination
  • repo: enable wayland-data-control feature for arboard
  • storybook: remove STORYBOOK_PROJECT_ROOT when running automigrate to prevent hanging
  • storybook: remove upper bound of migration requires

🔧 Affected Symbols

nx reportcreate-nx-workspacenx release@nx/expo@nx/gradleeslint rules loader@nx/maven@nx/nextjs@nx/nuxt@nx/storybook@nx/vite@nx/vitest@analogjs/vitest-angularnx daemonnx graphcopy-workspace-modules@nx/linter@nx/nest@nx/node@nx/react@emotion/styled