# angular-cli changelog > angular-cli release notes. - Vendor: angular-cli - Category: Developer Tools - Official site: https://github.com/angular/angular-cli - Tracked by: What's New (https://whatsnew.fyi/product/angular-cli) - Harvested from: GitHub (angular/angular-cli) - Entries below: 11 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v22.0.9 — 22.0.9 - Date: 2026-07-29 - Version: v22.0.9 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.0.9 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.0.9 ###### @angular/cli | Commit | Description | | -- | -- | | [![fix - 9ee8f9b669](https://img.shields.io/badge/9ee8f9b669-fix-green)](https://github.com/angular/angular-cli/commit/9ee8f9b6692b8efa2d0cabd502cd5a598f436c8a) | declare devserver_start and devserver_stop as isReadOnly:false | ###### @angular/build | Commit | Description | | -- | -- | | [![fix - d0c776d461](https://img.shields.io/badge/d0c776d461-fix-green)](https://github.com/angular/angular-cli/commit/d0c776d4610e2327c29900b9b3d679e9c0f28061) | safeguard Karma builder stream controller against closed state | ### v22.1.0-rc.0 — 22.1.0-rc.0 - Date: 2026-07-23 - Version: v22.1.0-rc.0 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.1.0-rc.0 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.1.0-rc.0 - Labels: Pre-release ###### @angular/cli | Commit | Description | | -- | -- | | [![fix - f59bcf529](https://img.shields.io/badge/f59bcf529-fix-green)](https://github.com/angular/angular-cli/commit/f59bcf52917bc5e25b97c863f96127ec8d0f12f5) | abort and guide manual mitigation when updating catalog packages | | [![fix - 5d4dda581](https://img.shields.io/badge/5d4dda581-fix-green)](https://github.com/angular/angular-cli/commit/5d4dda5819a7765e98af5b93cd407e6a6e7f70e4) | batch Prettier invocations during migration formatting | | [![fix - c963ecbec](https://img.shields.io/badge/c963ecbec-fix-green)](https://github.com/angular/angular-cli/commit/c963ecbec241d42dfb419ae081ba22429e37f09e) | remove algoliasearch dependency and support latest docs versions | | [![fix - 6859d25c3](https://img.shields.io/badge/6859d25c3-fix-green)](https://github.com/angular/angular-cli/commit/6859d25c32b6c93cbbf2d4ad4143aa10b52b7588) | resolve correct registry name when using npm alias syntax during update | | [![fix - 5c3101bff](https://img.shields.io/badge/5c3101bff-fix-green)](https://github.com/angular/angular-cli/commit/5c3101bff2e1b9d0b0e4668a183e8bcab8a1540e) | revert package.json changes if installation tasks fail during update | | [![fix - e12e00216](https://img.shields.io/badge/e12e00216-fix-green)](https://github.com/angular/angular-cli/commit/e12e00216cb2fcd1bc7f4895b39f6947eabdecb5) | update MCP devserver tool names to conform to spec regex | ###### @angular/build | Commit | Description | | -- | -- | | [![feat - 51f69276f](https://img.shields.io/badge/51f69276f-feat-blue)](https://github.com/angular/angular-cli/commit/51f69276fd2b2aab0e94901e79a51f6860ef8690) | enable chunk optimization for server builds | | [![feat - 10dc30f9c](https://img.shields.io/badge/10dc30f9c-feat-blue)](https://github.com/angular/angular-cli/commit/10dc30f9c680f46f65b5beb030f2a75c422a3e71) | migrate advanced optimization Babel plugins to oxc-parser + magic-string | | [![feat - 917393a4c](https://img.shields.io/badge/917393a4c-feat-blue)](https://github.com/angular/angular-cli/commit/917393a4cd85172574b155f727da5c1eae196fb1) | migrate i18n inliner to oxc-parser + magic-string | | [![fix - 95510511d](https://img.shields.io/badge/95510511d-fix-green)](https://github.com/angular/angular-cli/commit/95510511d963384c5a03298300246aa34a62328a) | add bounded timeout to vitest executor disposal | | [![fix - 62b11e316](https://img.shields.io/badge/62b11e316-fix-green)](https://github.com/angular/angular-cli/commit/62b11e316e8248161877592acee5954b2a8c9c66) | anchor debug ID comment matching and make injection idempotent | | [![fix - 4187e5e27](https://img.shields.io/badge/4187e5e27-fix-green)](https://github.com/angular/angular-cli/commit/4187e5e2776673b1146c6a5bc3362854373377c4) | canonicalize drive letter casing for workspace root on Windows | | [![fix - 21b8fc0f1](https://img.shields.io/badge/21b8fc0f1-fix-green)](https://github.com/angular/angular-cli/commit/21b8fc0f1271af956dbcfaa4a816caacd64f5dec) | ensure import map integrity keys are valid URL-like specifiers | | [![fix - 9a3c34bd1](https://img.shields.io/badge/9a3c34bd1-fix-green)](https://github.com/angular/angular-cli/commit/9a3c34bd16ac04fff423dff1ddaf6d6257a374f4) | favor istanbul coverage provider when browser testing is enabled | | [![fix - 80edac58b](https://img.shields.io/badge/80edac58b-fix-green)](https://github.com/angular/angular-cli/commit/80edac58b3cfadfeabd97091eebeac381d4b589d) | preserve custom config options in runnerConfig for vitest | | [![fix - 751adb9d7](https://img.shields.io/badge/751adb9d7-fix-green)](https://github.com/angular/angular-cli/commit/751adb9d7f92889c4e58de86f5389946b3159f1e) | remap metafile paths when workspace root is a symlink or junction | | [![fix - 0e3ca3dfb](https://img.shields.io/badge/0e3ca3dfb-fix-green)](https://github.com/angular/angular-cli/commit/0e3ca3dfba8ef60217089d93a321660ebb6fb838) | support hyphens and underscores when stripping chunk hash in chunk optimizer | | [![perf - 2462709d1]( _[Truncated at 4000 characters — full notes: https://github.com/angular/angular-cli/releases/tag/v22.1.0-rc.0]_ ### v22.0.8 — 22.0.8 - Date: 2026-07-23 - Version: v22.0.8 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.0.8 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.0.8 ###### @angular/cli | Commit | Description | | -- | -- | | [![fix - 41c356256](https://img.shields.io/badge/41c356256-fix-green)](https://github.com/angular/angular-cli/commit/41c356256525469a41ea72896b1ddff91a4e6e55) | batch Prettier invocations during migration formatting | | [![fix - bc87c85c3](https://img.shields.io/badge/bc87c85c3-fix-green)](https://github.com/angular/angular-cli/commit/bc87c85c3c660e969cf77a493dc4ee58fd831214) | update MCP devserver tool names to conform to spec regex | ###### @angular/build | Commit | Description | | -- | -- | | [![fix - 5724bf632](https://img.shields.io/badge/5724bf632-fix-green)](https://github.com/angular/angular-cli/commit/5724bf632eba59eccdd941beae8aafad35ce003e) | canonicalize drive letter casing for workspace root on Windows | | [![fix - b8bdbaa1e](https://img.shields.io/badge/b8bdbaa1e-fix-green)](https://github.com/angular/angular-cli/commit/b8bdbaa1ea1c58f061580bd58c015078f57c1530) | ensure import map integrity keys are valid URL-like specifiers | | [![fix - 212a7bb21](https://img.shields.io/badge/212a7bb21-fix-green)](https://github.com/angular/angular-cli/commit/212a7bb21eca131f32fd7b4e7b5a9ab87f2bfded) | favor istanbul coverage provider when browser testing is enabled | | [![fix - bc760b005](https://img.shields.io/badge/bc760b005-fix-green)](https://github.com/angular/angular-cli/commit/bc760b005e0dae10a2dfd31a7f0f772482305398) | preserve custom config options in runnerConfig for vitest | | [![fix - 19cda7415](https://img.shields.io/badge/19cda7415-fix-green)](https://github.com/angular/angular-cli/commit/19cda7415693f36e911a736a32576110905b6600) | remap metafile paths when workspace root is a symlink or junction | | [![perf - fdcc98c79](https://img.shields.io/badge/fdcc98c79-perf-orange)](https://github.com/angular/angular-cli/commit/fdcc98c7912f45431268fdf66c8b132bd119bc27) | skip semantic affected-file walk when type checking is disabled | ### v22.1.0-next.4 — 22.1.0-next.4 - Date: 2026-07-15 - Version: v22.1.0-next.4 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.1.0-next.4 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.1.0-next.4 - Labels: Pre-release ###### @schematics/angular | Commit | Description | | -- | -- | | [![fix - b345bb54d](https://img.shields.io/badge/b345bb54d-fix-green)](https://github.com/angular/angular-cli/commit/b345bb54d3ec7c73f9db70400f823d90aeab8fa8) | remove unused spec tsconfig outDir | ###### @angular/cli | Commit | Description | | -- | -- | | [![fix - 3789ceee1](https://img.shields.io/badge/3789ceee1-fix-green)](https://github.com/angular/angular-cli/commit/3789ceee18b4528c2acb7989b5d41c32d386a8a8) | copy packageManager field and yarn config for temp installs | | [![fix - b0b3a47ae](https://img.shields.io/badge/b0b3a47ae-fix-green)](https://github.com/angular/angular-cli/commit/b0b3a47ae95f4e98e1280ff5c9e3751ccecee5a8) | support resolving subproject dependencies in pnpm workspaces | ###### @angular/build | Commit | Description | | -- | -- | | [![feat - 0c18dc0f6](https://img.shields.io/badge/0c18dc0f6-feat-blue)](https://github.com/angular/angular-cli/commit/0c18dc0f6d4f36d7bbb6f35b37bfa688e8fcf7d2) | emit debug ids for stable subresource integrity hashes | | [![fix - 291caab61](https://img.shields.io/badge/291caab61-fix-green)](https://github.com/angular/angular-cli/commit/291caab6158fa804f6221dd024a5b96e6181eaad) | prevent stripping nested sourceMappingURL comments | ### v22.0.7 — 22.0.7 - Date: 2026-07-15 - Version: v22.0.7 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.0.7 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.0.7 ###### @angular/cli | Commit | Description | | -- | -- | | [![fix - e85c10ccb](https://img.shields.io/badge/e85c10ccb-fix-green)](https://github.com/angular/angular-cli/commit/e85c10ccb551eeaf9ac7e819ee6eb095317b5032) | copy packageManager field and yarn config for temp installs | | [![fix - b87cafec0](https://img.shields.io/badge/b87cafec0-fix-green)](https://github.com/angular/angular-cli/commit/b87cafec04b24c2f4337ecfa00388197ab5003f0) | support resolving subproject dependencies in pnpm workspaces | ### v21.2.19 — 21.2.19 - Date: 2026-07-09 - Version: v21.2.19 - Original notes: https://github.com/angular/angular-cli/releases/tag/v21.2.19 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v21.2.19 ###### @angular-devkit/build-angular | Commit | Description | | -- | -- | | [![fix - df5429871](https://img.shields.io/badge/df5429871-fix-green)](https://github.com/angular/angular-cli/commit/df54298712bb84ec079787e4ca6c0164f6358cf1) | update http-proxy-middleware to 3.0.7 | ### v20.3.32 — 20.3.32 - Date: 2026-07-09 - Version: v20.3.32 - Original notes: https://github.com/angular/angular-cli/releases/tag/v20.3.32 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v20.3.32 ###### @angular-devkit/build-angular | Commit | Description | | -- | -- | | [![fix - d4e07cb3e](https://img.shields.io/badge/d4e07cb3e-fix-green)](https://github.com/angular/angular-cli/commit/d4e07cb3e3f871822f9bf37fdea35814ec1cdb80) | update http-proxy-middleware to 3.0.7 | ### v22.1.0-next.3 — 22.1.0-next.3 - Date: 2026-07-09 - Version: v22.1.0-next.3 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.1.0-next.3 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.1.0-next.3 - Labels: Pre-release ###### @angular/build | Commit | Description | | -- | -- | | [![feat - 34d558c3c](https://img.shields.io/badge/34d558c3c-feat-blue)](https://github.com/angular/angular-cli/commit/34d558c3c98e1b59a2c2808fc04bfbb63dfe8acf) | add built-in SQLite cache store fallback | | [![feat - 52ae7f862](https://img.shields.io/badge/52ae7f862-feat-blue)](https://github.com/angular/angular-cli/commit/52ae7f862a581cac97d5a9b33c9b71b830d95b19) | share persistent build cache across git worktrees | | [![fix - 41bd100dd](https://img.shields.io/badge/41bd100dd-fix-green)](https://github.com/angular/angular-cli/commit/41bd100dd8edebdf6c7279e1c7d3847ee5f22702) | fallback to build target preserveSymlinks option in karma runner | | [![fix - 6d9b360e5](https://img.shields.io/badge/6d9b360e5-fix-green)](https://github.com/angular/angular-cli/commit/6d9b360e5f2b7ab3d4ace4db35f674166630f658) | prevent esbuild service hang on internal component stylesheet builds | | [![fix - 85c53d990](https://img.shields.io/badge/85c53d990-fix-green)](https://github.com/angular/angular-cli/commit/85c53d9909b8bcb35a360044a0afde5352d45d72) | prevent externalizing builder-injected i18n locale data | | [![fix - 004cc4104](https://img.shields.io/badge/004cc4104-fix-green)](https://github.com/angular/angular-cli/commit/004cc410487b2dbb80001f045cd19f899c980ccc) | strip all vite id prefixes from minified code with external dependencies | | [![perf - 09d0a11a8](https://img.shields.io/badge/09d0a11a8-perf-orange)](https://github.com/angular/angular-cli/commit/09d0a11a8b832f156aea100ad3497c5221fc0f50) | enable fast-path AST printing with sourcemaps in AotCompilation | ###### @angular/ssr | Commit | Description | | -- | -- | | [![fix - 0bd22dae0](https://img.shields.io/badge/0bd22dae0-fix-green)](https://github.com/angular/angular-cli/commit/0bd22dae09a83e36ed3863ca2b050666cc8d7aec) | replace all route parameters when resolving relative redirects | ### v22.0.6 — 22.0.6 - Date: 2026-07-09 - Version: v22.0.6 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.0.6 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.0.6 ###### @angular/build | Commit | Description | | -- | -- | | [![fix - df49966c6](https://img.shields.io/badge/df49966c6-fix-green)](https://github.com/angular/angular-cli/commit/df49966c6b8ec0c10b58fee18981fc2992ac071a) | fallback to build target preserveSymlinks option in karma runner | | [![fix - 9906add5b](https://img.shields.io/badge/9906add5b-fix-green)](https://github.com/angular/angular-cli/commit/9906add5b722cca7f61488b367dd73545c6e13bc) | prevent externalizing builder-injected i18n locale data | | [![fix - 070155f6e](https://img.shields.io/badge/070155f6e-fix-green)](https://github.com/angular/angular-cli/commit/070155f6ead185d4b478d9034662d65b8bb86a23) | strip all vite id prefixes from minified code with external dependencies | ###### @angular/ssr | Commit | Description | | -- | -- | | [![fix - c9aa354b1](https://img.shields.io/badge/c9aa354b1-fix-green)](https://github.com/angular/angular-cli/commit/c9aa354b1de0c946ddc994191613bb809a799f81) | replace all route parameters when resolving relative redirects | ### v22.1.0-next.2 — 22.1.0-next.2 - Date: 2026-07-01 - Version: v22.1.0-next.2 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.1.0-next.2 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.1.0-next.2 - Labels: Pre-release ###### @schematics/angular | Commit | Description | | -- | -- | | [![fix - 0b3172e07](https://img.shields.io/badge/0b3172e07-fix-green)](https://github.com/angular/angular-cli/commit/0b3172e076b75df5b8c3066a115d1151f8b0bad9) | remove unused app tsconfig outDir | ###### @angular/cli | Commit | Description | | -- | -- | | [![fix - 010cef665](https://img.shields.io/badge/010cef665-fix-green)](https://github.com/angular/angular-cli/commit/010cef6657365cad8529c164d7c594ca598180a0) | gracefully handle package manager errors in command handler | | [![fix - 3a2589dac](https://img.shields.io/badge/3a2589dac-fix-green)](https://github.com/angular/angular-cli/commit/3a2589dac684dfe26b2151b940bd40280d7c5d8e) | respect client-side release age settings during update resolution | | [![fix - edb4594de](https://img.shields.io/badge/edb4594de-fix-green)](https://github.com/angular/angular-cli/commit/edb4594deb5ff96967c1ce13b4494e3fd675ebec) | respect release age policy in update bootstrapping logic | ###### @angular-devkit/build-angular | Commit | Description | | -- | -- | | [![fix - 2d3eb7fb3](https://img.shields.io/badge/2d3eb7fb3-fix-green)](https://github.com/angular/angular-cli/commit/2d3eb7fb3b43b64c476296581481dbf67cb57b1d) | prevent OS command injection in ssr-dev-server builder | ###### @angular/build | Commit | Description | | -- | -- | | [![fix - 75c1dce38](https://img.shields.io/badge/75c1dce38-fix-green)](https://github.com/angular/angular-cli/commit/75c1dce387075d3ea9d6da572f7daa589856bc0e) | auto-inject localize/init in library unit tests | | [![fix - dc27e17fc](https://img.shields.io/badge/dc27e17fc-fix-green)](https://github.com/angular/angular-cli/commit/dc27e17fc2cbb91b10b508a7e46cd72734959ffa) | inherit preserveSymlinks option from build target in unit-test builder | | [![fix - 61e25fb1d](https://img.shields.io/badge/61e25fb1d-fix-green)](https://github.com/angular/angular-cli/commit/61e25fb1db56694da800f330dd65cb7e50ea2d11) | load zone.js dynamically for library unit tests | | [![fix - 0010b922f](https://img.shields.io/badge/0010b922f-fix-green)](https://github.com/angular/angular-cli/commit/0010b922f8fc5a9c57b9512594f9c3b4da3fa2ae) | scope createRequire module resolution using paths to prevent parent paths | ###### @angular/ssr | Commit | Description | | -- | -- | | [![fix - d9fb854c9](https://img.shields.io/badge/d9fb854c9-fix-green)](https://github.com/angular/angular-cli/commit/d9fb854c9a48ba8852d57f3fa8f7a9640ee0aab2) | preserve response headers during redirect | ### v22.0.5 — 22.0.5 - Date: 2026-07-01 - Version: v22.0.5 - Original notes: https://github.com/angular/angular-cli/releases/tag/v22.0.5 - Permalink: https://whatsnew.fyi/product/angular-cli/releases/v22.0.5 ###### @schematics/angular | Commit | Description | | -- | -- | | [![fix - 862a38069](https://img.shields.io/badge/862a38069-fix-green)](https://github.com/angular/angular-cli/commit/862a380697db60cee8cf83e8fe20641db2a6aae1) | remove unused app tsconfig outDir | ###### @angular/cli | Commit | Description | | -- | -- | | [![fix - f099e641c](https://img.shields.io/badge/f099e641c-fix-green)](https://github.com/angular/angular-cli/commit/f099e641c96a5932d81535e712af7044269b4788) | gracefully handle package manager errors in command handler | | [![fix - cf033ec48](https://img.shields.io/badge/cf033ec48-fix-green)](https://github.com/angular/angular-cli/commit/cf033ec48e2371655fbf6bcdb588c05aff2e6662) | respect release age policy in update bootstrapping logic | ###### @angular-devkit/build-angular | Commit | Description | | -- | -- | | [![fix - f75085f4b](https://img.shields.io/badge/f75085f4b-fix-green)](https://github.com/angular/angular-cli/commit/f75085f4b58ed61979a2901a4ef0353e56f22136) | prevent OS command injection in ssr-dev-server builder | ###### @angular/build | Commit | Description | | -- | -- | | [![fix - dfee1e7b1](https://img.shields.io/badge/dfee1e7b1-fix-green)](https://github.com/angular/angular-cli/commit/dfee1e7b142d767c86eecb7791ed72bce65866c5) | auto-inject localize/init in library unit tests | | [![fix - aba718403](https://img.shields.io/badge/aba718403-fix-green)](https://github.com/angular/angular-cli/commit/aba718403df7a96310570c1449674a49254cd4af) | inherit preserveSymlinks option from build target in unit-test builder | | [![fix - 7c0d9f03c](https://img.shields.io/badge/7c0d9f03c-fix-green)](https://github.com/angular/angular-cli/commit/7c0d9f03c2ae82a90a48e51b2aee731a36dc2beb) | load zone.js dynamically for library unit tests | | [![fix - 4288e4452](https://img.shields.io/badge/4288e4452-fix-green)](https://github.com/angular/angular-cli/commit/4288e44525e855f29f026276f518968b1b2697db) | scope createRequire module resolution using paths to prevent parent paths | ###### @angular/ssr | Commit | Description | | -- | -- | | [![fix - 5f774f891](https://img.shields.io/badge/5f774f891-fix-green)](https://github.com/angular/angular-cli/commit/5f774f891a086bf0a2ab6f86c24485425e99f16d) | preserve response headers during redirect |