22.3.0-beta.0 (2025-12-12)
🚀 Features
- angular: support angular v21 (#33378)
- core: add NX_DEFAULT_OUTPUT_STYLE env var (#33493, #27490)
- core: add CnwError class for typed error handling in create-nx-workspace (#33839)
- js: add option for using tsgo compiler when inferring build and typecheck tasks (#33821, #32591)
- js: improve SWC compilation error logging (#33297)
- rspack: add support for
cssFilenameconfig #32498 (#32506, #32498) - testing: add option to playwright preset to open html report (#31282)
- webpack: add support for merging externals to NxAppWebpackPlugin (#33833)
🩹 Fixes
- angular: process only the in progress entry points in ng-packagr-lite's write bundles transform function (#33784, #3172, #33560)
- angular: collect known tsconfig files from non-buildable angular libraries in migration (#33834, #33705)
- angular: improve error message when using esbuild-based build targets and generating cypress ct (#33846, #33329)
- bundling: correct project path for createTmpTsConfig (#31314, #31522)
- core: optimize pnpm lockfile parsing with pre-built indexes (#33750, #32669, #32254, #33751)
- core: share visited Set across affected graph traversal (#33756, #32265)
- core: set max listeners for process in task orchestrator (#33596, #32439)
- core: exit with error when generator prompts fail (#33691)
- core: fix record stat on initial CNW call (#33783)
- core: ensure
terminalOutputis always a string in task results (#33782, #32675) - core: improve node creation for pnpm parser (#33788)
- core: add pnpm/yarn support for CNW templates (#33827)
- core: swc register base url missing when using tsgo (#33332)
- core: pass more error detail for CNW (#33844)
- core: create all tables upfront when creating the database (#33843)
- expo: set projectRoot to workspaceRoot for Expo SDK 54+ compatibility (#33836, #33597)
- js: use Set for O(1) package.json root lookup (#33757, #32265)
- js: recognize NodeNext as ESM (#31508)
- js: display pnpm publish errors without requiring --verbose (#33837)
- js: make CopyAssetsHandler per-file logs opt-in via verbose mode (#33835, #33521)
- js: prevent crash when terminating task using the
@nx/js:swcexecutor (#33845, #31938) - js: handle workspace packages when nx.name differs from package.json.name (#33583, #33582)
- js: resolve nx binary from workspace root in node executor (#33842, #33776)
- module-federation: normalize workspace protocol versions in requiredVersion (#33733, #31397, #33734)
- node: sourceMaps option to sourceMap in webpack config (#33333)
- react: update template comment to be valid css (#33169, #20192639)
- repo: fix dotnet installation on Windows (#33786)
- repo: restore mise tools in e2e-matrix workflow (#33785, #33772)
- repo: install nightly Rust for WASM build in publish workflow (#33792, #33772)
- repo: use RUSTUP_TOOLCHAIN env var for WASM builds (#33794)
- repo: revert to older nightly Rust for WASM builds (#33797)
- rspack: enable build mode for TypeScript checker in TS solution setups (#33447)
- storybook: conditionally include node imports only for non-angular frameworks (#33728)
- testing: update jest ci target to forward top level args (#31379)
- vite: update worker configuration in generator to follow Vite's … (#30465)
- webpack: show webpack chunks when verbose (#30960)
- webpack: interpolate process.env more verbosely to reduce bundle size with DefinePlugin (#30826)
❤️ Thank You
- Aaro Karell @ajkarell
- Adwait Athale @adwait1290
- Alexey Balmasov
- Andreas Jagiella @AndreasJagiella-EH
- Andrew Ovens @avens19
- Ashish Shanker @AshishShanker
- Claude Opus 4.5
- Colum Ferry @Coly010
- David Antoon @davidantoon
- Guilherme Siquinelli
- Hamza Khan @112khanhamza
- Jack Hsu @jaysoo
- James Kraus
- Jason Jean @FrozenPandaz
- Jay Bell
- Joe Prisk
- Jonathan Wilbur @JonathanWilbur
- Kamenskih Dmitriy
- Kasper Christensen
- Leosvel Pérez Espinosa @leosvelperez
- Miguel @mpsanchis
- Miroslav Jonaš @meeroslav
- Nicholas Cunningham @ndcunningham
- ResonAtom
- Svyatoslav Zaytsev @MillerSvt
- Timo Santi @diginikkari
- Yevhenii Yusenkov @YevheniiYusenkov