Change8

Migrating to Nx 23.0.0

Version 23.0.0 introduces 8 breaking changes. This guide details how to update your code.

Released: 6/16/2026

8
Breaking Changes
14
Migration Steps
46
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

@nx/angular/module-federationmove generator (@nx/angular)ngrx generator (@nx/angular)convert-to-with-mf generator (@nx/angular)SCAM generators (@nx/angular)rollup buildLibsFromSourceSVGR option (bundling)Vite 7 -> 8 migrationstarget config merging ('...')target uses task graphdependsOn normalizationnx migrate --modenx migrate --multi-major-modemigration entries ('prompt' field)nx watch --includeDependentProjectsnx watch --includeDependenciestargetDefaults (array-shape)native Node.js TypeScript strippingnx migrate --includeCreateNodes V2 typesaddProjectConfiguration (standalone parameter)@nx/detox build executor@nx/detox test executor@nx/devkit/src/...nx migrate --run-migrations (agentic mode)nx.json (migrate configuration section)migrations.json (JSON schema)createNodesV2createNodesnx-plugin-checks (prompt-only entries)ESLint v8 support (@nx/linter)Tailwind CSS setup-tailwind generatorsstylesheet options (generators)component generators (js option)webpack plugin re-exportsnx migrate --trustThirdPartyPresetreleaseTag* flat properties@nx/cypress:cypress executorCypress 15.14Jest 30 snapshot guide linkskipSetupFile (jest option)setupFile (jest option)Vitest support (@nx/vite)nxViteTsPaths helpernxCopyAssetsPlugin helperwebpack/rspack config compose helpers

Breaking Changes

Issue #1

The legacy typescript plugin for bundling was dropped, aligning the rollup buildLibsFromSource default.

Solution

Review rollup configurations related to library building if custom plugins were used.

Issue #2

The SVGR option in bundling was removed. Users relying on this must migrate to the new mechanism.

Solution

Use the provided migration to update SVGR configurations.

Issue #3

Native Node.js TypeScript stripping is now enabled by default.

Solution

If this causes unexpected behavior, investigate configuration related to TypeScript processing.

Issue #4

The array-shape support for targetDefaults with projects and source was reverted pending redesign.

Solution

Revert any usage of array-shape configurations in targetDefaults until the redesign is complete.

Issue #5

Node 20 support was dropped.

Solution

Upgrade your Node.js environment to a supported version (e.g., Node 22+).

Issue #6

The js option was removed from component generators.

Solution

Use TypeScript for component generation or adjust generator calls.

Issue #7

Deprecated webpack/rspack config compose helpers were removed.

Solution

Update custom webpack/rspack configurations to use the new composition methods or alternatives.

Issue #8

Vitest support within the core @nx/vite plugin was removed in favor of the dedicated @nx/vitest plugin.

Solution

Migrate Vitest configurations and usage to the new @nx/vitest plugin.

Migration Steps

  1. 1
    If you were using the deprecated @nx/angular/module-federation entry point, update your imports.
  2. 2
    If you were using the deprecated @nx/angular move generator, use the replacement.
  3. 3
    If you were using the deprecated @nx/angular ngrx generator, use the replacement.
  4. 4
    If you were using the SVGR option in bundling, use the provided migration to update configurations.
  5. 5
    Rename usages of `nx watch --includeDependentProjects` to `nx watch --includeDependencies`.
  6. 6
    Migrate deep imports from `@nx/devkit/src/...` to canonical locations.
  7. 7
    If using ESLint v8, plan migration away from it as support is deprecated.
  8. 8
    If using deprecated executors, migrate to their inferred-plugin replacements.
  9. 9
    Replace usage of the `withNx` function in Next.js projects.
  10. 10
    Remove deprecated `skipSetupFile` and `setupFile` options from Jest configurations.
  11. 11
    Migrate Vitest configurations from @nx/vite to the dedicated @nx/vitest plugin.
  12. 12
    Update webpack/rspack configurations to use the new config composition helpers instead of the deprecated ones.
  13. 13
    If you relied on array-shape targetDefaults, reconfigure them to the new structure after the redesign.
  14. 14
    Run `nx migrate` to apply agentic mode updates and migration for createNodesV2 rename.

Release Summary

Version 23.0.0 introduces significant cleanup by removing long-deprecated features across Angular, Bundling, and Misc areas, while heavily enhancing the `nx migrate` experience with agentic mode and better configuration support. Node 20 support has been dropped.

Need More Details?

View the full release notes and all changes for Nx 23.0.0.

View Full Changelog