Change8

22.1.0

📦 nxView on GitHub →
33 features🐛 31 fixes🔧 4 symbols

Summary

This release focuses heavily on performance improvements, TUI enhancements (now default on Windows), and broad framework compatibility updates including Next.js 16 and Storybook 10. The Vitest implementation has also been modularized into a dedicated plugin.

Migration Steps

  1. If you were relying on system metrics collection, note that it has been removed in this release.
  2. If you were using Vitest, you may need to update your imports as the functionality has been split into the @nx/vitest plugin.

✨ New Features

  • core: update rust
  • core: enable tui by default on windows
  • core: batch hash tasks without custom hashers
  • core: add OSC 9;4 progress indicator support to TUI
  • core: collect resource usage
  • core: disable interactivity by default for run-one task outputs in tui
  • core: track system metrics and link plugins to workers when possible
  • core: pull nx init from latest before executing
  • core: export TypeScript schema definitions via wildcard patterns
  • core: make console daemon check backgroundable and pulling from latest
  • core: apply parent env to atomized target
  • docker: support inferring additional args for targets with interpolation support
  • docker: add skipDefaultTag option to build target
  • gradle: add custom installation path to options
  • gradle: use gitignore to determine dependant task output files
  • gradle: allow specifying project and task configuration from gradle build files
  • maven: upgrade to version 0.0.8 with automated migration
  • maven: add ci-workflow generator
  • maven: bump version from 0.0.8 to 0.0.9
  • maven: add option to prefix all maven targets
  • misc: remove CI investigation recommendations from agent rules
  • nextjs: add support for next 16
  • nx-dev: add downloadable resources page and React book blog post
  • release: support {versionActionsVersion} in docker version scheme
  • release: add resolveVersionPlans option to changelog CLI and API
  • storybook: add support for storybook 10
  • storybook: generate ai instructions for converting from CJS to ESM after migration
  • testing: support cypress v15
  • vite: add atomizer support for vitest
  • vite: add vitest 4 to peerDep range to prevent conflicts
  • vitest: split vitest into @nx/vitest plugin
  • vitest: split entrypoint into plugin, generators, executors
  • vitest: support vitest 4

🐛 Bug Fixes

  • core: adding output error reason
  • core: continue execution when cloud client is unavailable
  • core: prevent error message containing "[object Object]" for invalid {workspaceRoot} placement
  • core: fix swapped arguments when resolving catalog references from the filesystem
  • core: should find dockerfiles to suggest installing docker plugin
  • core: stream without prefixes showing tui
  • core: ensure daemon writes project graph cache to disk consistently
  • core: add accept header to http remote cache get
  • core: prevent undefined importer crash in pnpm lockfile parsing
  • core: split lockfile cache and other performance improvements
  • core: turn v8 serializer off by default but fallback to it if json serialization fails
  • core: make sure that gemini contextFileName is string before trying to resolve
  • core: also look in .nx installation when reading nx.json extends
  • core: handle various directories when importing prettier
  • core: prevent args from being split by spaces when executing through nx wrapper
  • core: correctly identify local workspace dependencies on windows
  • core: clean up dead processes from metrics
  • core: resolve lockfile cache regression with keyMap state
  • core: remove system metrics collection and reporting
  • core: optimize batch task scheduling to prevent redundant traversals
  • core: capture stderr in nx add command for better error messages
  • core: include require paths when resolving specified plugins
  • core: prevent hanging between command end and process exit
  • core: resolve all lock ordering deadlocks in metrics collector
  • core: avoid leaking memory due by creating an unref'd interval for each daemon connection
  • core: default input should indeed be default
  • docker: handle undefined options when creating graph
  • docker: handle dockerfile at project root tag
  • docker: guard commitSha null in plugin interpolation
  • gradle: bump gradle migration version
  • graph: add nx:build-native dependency to typecheck target

🔧 Affected Symbols

nx.json extends resolutionprettier import resolutionnx add command stderr captureVitest entrypoints