# Angular changelog > The web development framework for building modern apps. - Vendor: Google - Category: Frameworks & Libraries - Official site: https://angular.dev - Tracked by: What's New (https://whatsnew.fyi/product/angular) - Harvested from: GitHub (angular/angular) - Entries below: 10 (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.2.0-next.0 — 22.2.0-next.0 - Date: 2026-07-29 - Version: v22.2.0-next.0 - Original notes: https://github.com/angular/angular/releases/tag/v22.2.0-next.0 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.2.0-next.0 - Labels: Pre-release - **added** — Allow permanent hidden fields in signal forms ###### forms | Commit | Description | | -- | -- | | [![feat - d5e8b1ef7a](https://img.shields.io/badge/d5e8b1ef7a-feat-blue)](https://github.com/angular/angular/commit/d5e8b1ef7a02c84d4fd70a6b4d748ead9ff815bf) | allow permanent hidden fields in signal forms | ### v21.2.19 — 21.2.19 - Date: 2026-07-29 - Version: v21.2.19 - Original notes: https://github.com/angular/angular/releases/tag/v21.2.19 - Permalink: https://whatsnew.fyi/product/angular/releases/v21.2.19 - **fixed** — Disallow i18n event attributes - **fixed** — Restrict possible event handler check to property names longer than 2 characters - **fixed** — Distinguish repeated transfer cache params - **fixed** — Enable xsrf for root-provided HttpClient - **changed** — Update domino to latest version ###### compiler | Commit | Description | | -- | -- | | [![fix - e2660c3dee](https://img.shields.io/badge/e2660c3dee-fix-green)](https://github.com/angular/angular/commit/e2660c3deeccb86471f9c11b7e65ebcc89d84e9e) | disallow i18n event attributes | | [![fix - 7b884f585a](https://img.shields.io/badge/7b884f585a-fix-green)](https://github.com/angular/angular/commit/7b884f585abf50480c271d234c892c141eb61e2c) | restrict possible event handler check to property names longer than 2 characters | ###### http | Commit | Description | | -- | -- | | [![fix - 948a8d6831](https://img.shields.io/badge/948a8d6831-fix-green)](https://github.com/angular/angular/commit/948a8d6831e8920b54663ec79421da95210e0e35) | distinguish repeated transfer cache params | | [![fix - 9949dccce1](https://img.shields.io/badge/9949dccce1-fix-green)](https://github.com/angular/angular/commit/9949dccce164638597496a6b3881043117dfd1df) | enable xsrf for root-provided HttpClient | ###### platform-server | Commit | Description | | -- | -- | | [![fix - f34a93c946](https://img.shields.io/badge/f34a93c946-fix-green)](https://github.com/angular/angular/commit/f34a93c946c017eff526cfb0c8d17f51e97f01e4) | update domino to latest version | ### v22.1.0 — 22.1.0 - Date: 2026-07-29 - Version: v22.1.0 - Original notes: https://github.com/angular/angular/releases/tag/v22.1.0 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.1.0 - **fixed** — skip transfer cache for uncacheable HTTP traffic - **added** — add an error for --global-foo cases - **added** — namespace CSS variables to the app - **added** — support css var namespacing in properties - **fixed** — permissive whitespace parsing in default never blocks - **fixed** — support foreign components defined outside top-level scope - **fixed** — support foreign components inside control flow blocks - **fixed** — allow passing uninvoked signals as foreign component props - **fixed** — support import aliases in foreignImports - **added** — add custom set option to linkedSignal - **added** — add deep linking from Performance panel to DevTools - **fixed** — account for namespaces in host binding sanitization - **fixed** — correct container anchor collection order to match DOM layout - **fixed** — introduce disposal mechanism for Angular views in foreign @content - **fixed** — introduce logical-only containers for foreign content - **fixed** — sanitize host bindings on concrete hosts - **fixed** — set current tnode in foreign component instruction on reuse - **added** — add options to allow caching of credentialed and non-cacheable HTTP requests - **fixed** — enable xsrf for root-provided HttpClient - **fixed** — match header values exactly when deleting - **deprecated** — deprecate jsonp support ###### common | Commit | Description | | -- | -- | | [![fix - 1ad6824d0d](https://img.shields.io/badge/1ad6824d0d-fix-green)](https://github.com/angular/angular/commit/1ad6824d0dd17a0515ad0544cf435d1e3af6982e) | skip transfer cache for uncacheable HTTP traffic (#69017) | ###### compiler | Commit | Description | | -- | -- | | [![feat - af5e4e1131](https://img.shields.io/badge/af5e4e1131-feat-blue)](https://github.com/angular/angular/commit/af5e4e113130427ba8152166b4d904dd177c982e) | Add an error for --global-foo cases (#68846) | | [![feat - d579ecaf73](https://img.shields.io/badge/d579ecaf73-feat-blue)](https://github.com/angular/angular/commit/d579ecaf733db325f628cc11a28688fa0dad85ee) | Disable '--global-' error outside of g3 (#68846) | | [![feat - f98547675c](https://img.shields.io/badge/f98547675c-feat-blue)](https://github.com/angular/angular/commit/f98547675cd2026bb755671b28dea4e6d48eb7bb) | Namespace CSS variables to the app (#68846) | | [![feat - 8c8b2f7783](https://img.shields.io/badge/8c8b2f7783-feat-blue)](https://github.com/angular/angular/commit/8c8b2f77831236b23ca99ccb62e6197ff43b400d) | Support css var namespacing in properties (#68846) | | [![fix - 292199aa4d](https://img.shields.io/badge/292199aa4d-fix-green)](https://github.com/angular/angular/commit/292199aa4dd4cbf09f14c20bd7049d6ab55d83f4) | permissive whitespace parsing in default never blocks | | [![fix - 25c744c4d0](https://img.shields.io/badge/25c744c4d0-fix-green)](https://github.com/angular/angular/commit/25c744c4d0abd3bfe863ed2d528fea756ec5801b) | support foreign components defined outside top-level scope | | [![fix - 5bd00add07](https://img.shields.io/badge/5bd00add07-fix-green)](https://github.com/angular/angular/commit/5bd00add071e404ddab318eea82db81b5715a194) | support foreign components inside control flow blocks (#69674) | | [![perf - 2e442f7876](https://img.shields.io/badge/2e442f7876-perf-orange)](https://github.com/angular/angular/commit/2e442f787627a1f44d8b6463a1cb979ef6f7e049) | do not emit tag name when control flow root is foreign component (#69674) | ###### compiler-cli | Commit | Description | | -- | -- | | [![fix - aeb55c8bc1](https://img.shields.io/badge/aeb55c8bc1-fix-green)](https://github.com/angular/angular/commit/aeb55c8bc101dc313dc64f83f4428ddfad28d54e) | allow passing uninvoked signals as foreign component props | | [![fix - 7c60a98b3c](https://img.shields.io/badge/7c60a98b3c-fix-green)](https://github.com/angular/angular/commit/7c60a98b3ccc2090f3bfb3c76d6207f37a5df0ff) | support import aliases in foreignImports (#68674) | ###### core | Commit | Description | | -- | -- | | [![feat - 124ba10ead](https://img.shields.io/badge/124ba10ead-feat-blue)](https://github.com/angular/angular/commit/124ba10ead58c9f93b0b74c4102022c4674db1f5) | add custom set option to linkedSignal | | [![feat - eab4847a8b](https://img.shields.io/badge/eab4847a8b-feat-blue)](https://github.com/angular/angular/commit/eab4847a8bd1b47ba630ca9b20c85770f990c717) | Adds deep linking from Performance panel to DevTools | | [![fix - 091456a214](https://img.shields.io/badge/091456a214-fix-green)](https://github.com/angular/angular/commit/091456a2146d81b225fa9322a9ebde24695aaad0) | account for namespaces in host binding sanitization (#69558) | | [![fix - b3748e9fe4](https://img.shields.io/badge/b3748e9fe4-fix-green)](https://github.com/angular/angular/commit/b3748e9fe4a4f9f56f9843b448db59674ad01452) | correct container anchor collection order to match DOM layout | | [![fix - 11b206b919](https://img.shields.io/badge/11b206b919-fix-green)](https://github.com/angular/angular/commit/11b206b919074149f2db6e3640a55284aecfe48a) | introduce disposal mechanism for Angular views in foreign `@content` | | [![fix - 56607967db](https://img.shields.io/badge/56607967db-fix-green)](https://github.com/angular/angular/commit/56607967dbba25e63f86fd128ec0c1c4ce3e5232) | introduce logical-only containers for foreign content | | [![fix - 23cf1a828b](https://img.shields.io/badge/23cf1 _[Truncated at 4000 characters — full notes: https://github.com/angular/angular/releases/tag/v22.1.0]_ ### v20.3.27 — 20.3.27 - Date: 2026-07-29 - Version: v20.3.27 - Original notes: https://github.com/angular/angular/releases/tag/v20.3.27 - Permalink: https://whatsnew.fyi/product/angular/releases/v20.3.27 - **fixed** — Disallow i18n event attributes in the compiler - **fixed** — Restrict possible event handler check to property names longer than 2 characters in the compiler - **fixed** — Distinguish repeated transfer cache params in http - **changed** — Update domino to latest version in platform-server ###### compiler | Commit | Description | | -- | -- | | [![fix - 5dbcd0ee16](https://img.shields.io/badge/5dbcd0ee16-fix-green)](https://github.com/angular/angular/commit/5dbcd0ee16011369bec00e10e22cbcae6ebabd7a) | disallow i18n event attributes | | [![fix - db0d4a1a39](https://img.shields.io/badge/db0d4a1a39-fix-green)](https://github.com/angular/angular/commit/db0d4a1a39db2dc0773f3bc9d7a0e1cfc59fa251) | restrict possible event handler check to property names longer than 2 characters | ###### http | Commit | Description | | -- | -- | | [![fix - a64e2883e9](https://img.shields.io/badge/a64e2883e9-fix-green)](https://github.com/angular/angular/commit/a64e2883e9dc4abdac70209129be303de79e5b2b) | distinguish repeated transfer cache params | ###### platform-server | Commit | Description | | -- | -- | | [![fix - 6f80cca0b8](https://img.shields.io/badge/6f80cca0b8-fix-green)](https://github.com/angular/angular/commit/6f80cca0b8af23b37f24fb8ee0229b6901d01df2) | update domino to latest version | ### v22.1.0-rc.0 — 22.1.0-rc.0 - Date: 2026-07-22 - Version: v22.1.0-rc.0 - Original notes: https://github.com/angular/angular/releases/tag/v22.1.0-rc.0 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.1.0-rc.0 - Labels: Pre-release - **fixed** — preserve crossorigin on image preloads - **fixed** — ensure SVG animation attributeName is checked case-insensitively - **fixed** — ensure pending status propagates to the root form in signal forms - **fixed** — prevent transfer cache key collisions - **fixed** — correctly migrate ngClass with mixed space-separated keys - **fixed** — preserve NgClass import on partial migration ###### common | Commit | Description | | -- | -- | | [![fix - d14696e430](https://img.shields.io/badge/d14696e430-fix-green)](https://github.com/angular/angular/commit/d14696e4308c5cd95cf2184cae3582b52f7c7cf3) | preserve crossorigin on image preloads | ###### core | Commit | Description | | -- | -- | | [![fix - 3499a1321b](https://img.shields.io/badge/3499a1321b-fix-green)](https://github.com/angular/angular/commit/3499a1321bfe4801c38744ddb500715486680366) | ensure SVG animation attributeName is checked case-insensitively | ###### forms | Commit | Description | | -- | -- | | [![fix - 3497c9b943](https://img.shields.io/badge/3497c9b943-fix-green)](https://github.com/angular/angular/commit/3497c9b943748d0f21587fcdc1482215f857fa28) | ensure `pending` status propagates to the root form in signal forms | ###### http | Commit | Description | | -- | -- | | [![fix - 3192dccaa3](https://img.shields.io/badge/3192dccaa3-fix-green)](https://github.com/angular/angular/commit/3192dccaa3e1488f8bf351864ea48e44a21246aa) | prevent transfer cache key collisions | ###### migrations | Commit | Description | | -- | -- | | [![fix - 49672c437b](https://img.shields.io/badge/49672c437b-fix-green)](https://github.com/angular/angular/commit/49672c437b440564e9c20b77a7ff151fbf316706) | correctly migrate ngClass with mixed space-separated keys | | [![fix - 223e40279f](https://img.shields.io/badge/223e40279f-fix-green)](https://github.com/angular/angular/commit/223e40279f3f6df979a323f79cb370528366c24a) | preserve NgClass import on partial migration | ### v22.0.8 — 22.0.8 - Date: 2026-07-22 - Version: v22.0.8 - Original notes: https://github.com/angular/angular/releases/tag/v22.0.8 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.0.8 - **fixed** — Preserve crossorigin on image preloads - **fixed** — Ensure SVG animation attributeName is checked case-insensitively - **fixed** — Ensure pending status propagates to the root form in signal forms - **fixed** — Prevent transfer cache key collisions - **fixed** — Correctly migrate ngClass with mixed space-separated keys - **fixed** — Preserve NgClass import on partial migration ###### common | Commit | Description | | -- | -- | | [![fix - c0368f2278](https://img.shields.io/badge/c0368f2278-fix-green)](https://github.com/angular/angular/commit/c0368f227846024bb26d3628c59541e870bb36e4) | preserve crossorigin on image preloads | ###### core | Commit | Description | | -- | -- | | [![fix - 8616ba9db6](https://img.shields.io/badge/8616ba9db6-fix-green)](https://github.com/angular/angular/commit/8616ba9db6240f3fbf8b905342d07326e096302b) | ensure SVG animation attributeName is checked case-insensitively | ###### forms | Commit | Description | | -- | -- | | [![fix - d302c7ab83](https://img.shields.io/badge/d302c7ab83-fix-green)](https://github.com/angular/angular/commit/d302c7ab833c0bd3bba951135e76e0c48273b3d7) | ensure `pending` status propagates to the root form in signal forms | ###### http | Commit | Description | | -- | -- | | [![fix - 9d40f8aefe](https://img.shields.io/badge/9d40f8aefe-fix-green)](https://github.com/angular/angular/commit/9d40f8aefef9dcd893db5d01bc58d3e65e1cb4c2) | prevent transfer cache key collisions | ###### migrations | Commit | Description | | -- | -- | | [![fix - 388daea2fc](https://img.shields.io/badge/388daea2fc-fix-green)](https://github.com/angular/angular/commit/388daea2fc188aad3ab69fb81bd3f893ac3cd846) | correctly migrate ngClass with mixed space-separated keys | | [![fix - bb39cda648](https://img.shields.io/badge/bb39cda648-fix-green)](https://github.com/angular/angular/commit/bb39cda6483de2edab2f8221459b0ed5b73ef221) | preserve NgClass import on partial migration | ### v22.1.0-next.6 — 22.1.0-next.6 - Date: 2026-07-16 - Version: v22.1.0-next.6 - Original notes: https://github.com/angular/angular/releases/tag/v22.1.0-next.6 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.1.0-next.6 - Labels: Pre-release - **fixed** — avoid prototype lookups in date format caches - **fixed** — parsing of an empty template literal interpolation - **fixed** — support foreign components inside control flow blocks - **fixed** — re-tag SourceFiles after TsCreateProgramDriver.updateFiles() - **fixed** — allow static attributes for explicit input transforms - **fixed** — ignore processing instruction syntax in templates - **fixed** — preserve explicit input transform write type - **fixed** — allow multiple async validators - **fixed** — preserve intermediate number values in signal forms - **fixed** — prevent stale CVA writeback during debounce - **fixed** — prevent interceptor signal reads from leaking into calling reactive contexts - **fixed** — build runtime translations map with a null prototype - **fixed** — use Object.hasOwn for placeholder lookup in translate - **fixed** — prevent ReDoS in SOURCEMAP_URL_REGEXP - **changed** — do not emit tag name when control flow root is foreign component ###### common | Commit | Description | | -- | -- | | [![fix - 359fb503b8](https://img.shields.io/badge/359fb503b8-fix-green)](https://github.com/angular/angular/commit/359fb503b8f262db7a053febc18c416f966e8185) | avoid prototype lookups in date format caches | ###### compiler | Commit | Description | | -- | -- | | [![fix - da52137724](https://img.shields.io/badge/da52137724-fix-green)](https://github.com/angular/angular/commit/da52137724b8cce79b036026fa1aa07bc730389c) | parsing of an empty template literal interpolation | | [![fix - 5bd00add07](https://img.shields.io/badge/5bd00add07-fix-green)](https://github.com/angular/angular/commit/5bd00add071e404ddab318eea82db81b5715a194) | support foreign components inside control flow blocks (#69674) | | [![perf - 2e442f7876](https://img.shields.io/badge/2e442f7876-perf-orange)](https://github.com/angular/angular/commit/2e442f787627a1f44d8b6463a1cb979ef6f7e049) | do not emit tag name when control flow root is foreign component (#69674) | ###### compiler-cli | Commit | Description | | -- | -- | | [![fix - ae0ec7315c](https://img.shields.io/badge/ae0ec7315c-fix-green)](https://github.com/angular/angular/commit/ae0ec7315c6fbc45ce40581a08a8243a008a91ec) | re-tag SourceFiles after TsCreateProgramDriver.updateFiles() | ###### core | Commit | Description | | -- | -- | | [![fix - 9b9b0e93c9](https://img.shields.io/badge/9b9b0e93c9-fix-green)](https://github.com/angular/angular/commit/9b9b0e93c90c0ecfc7f075a64908cce00eb03f38) | allow static attributes for explicit input transforms | | [![fix - 68ac204074](https://img.shields.io/badge/68ac204074-fix-green)](https://github.com/angular/angular/commit/68ac20407466f0d3e6f5c5016f1273672b5d2b34) | ignore processing instruction syntax in templates | | [![fix - 0ae6d81ed2](https://img.shields.io/badge/0ae6d81ed2-fix-green)](https://github.com/angular/angular/commit/0ae6d81ed2a83b1ebbb75dabc53af77b8db86c41) | preserve explicit input transform write type | ###### forms | Commit | Description | | -- | -- | | [![fix - 5cb8c733a3](https://img.shields.io/badge/5cb8c733a3-fix-green)](https://github.com/angular/angular/commit/5cb8c733a39a0128eada61061e8d9ff352a967d0) | allow multiple async validators | | [![fix - 2e32872720](https://img.shields.io/badge/2e32872720-fix-green)](https://github.com/angular/angular/commit/2e32872720ee95f24029d20e24e91edbc2054b1e) | preserve intermediate number values in signal forms | | [![fix - 2e0cb52dbf](https://img.shields.io/badge/2e0cb52dbf-fix-green)](https://github.com/angular/angular/commit/2e0cb52dbf0f519ffc5c99b95e5f4b965fa332a7) | prevent stale CVA writeback during debounce | ###### http | Commit | Description | | -- | -- | | [![fix - 6d043f8657](https://img.shields.io/badge/6d043f8657-fix-green)](https://github.com/angular/angular/commit/6d043f86573e317f20039ccec031d6e63c01b656) | prevent interceptor signal reads from leaking into calling reactive contexts | ###### localize | Commit | Description | | -- | -- | | [![fix - 5de0ea5f23](https://img.shields.io/badge/5de0ea5f23-fix-green)](https://github.com/angular/angular/commit/5de0ea5f23f12542ebdd9d28f225e1a224021d92) | build runtime translations map with a null prototype | | [![fix - 2a4f582731](https://img.shields.io/badge/2a4f582731-fix-green)](https://github.com/angular/angular/commit/2a4f58273112d0ed508fac624e56f56d97e511fa) | use Object.hasOwn for placeholder lookup in translate | ###### platform-browser | Commit | Description | | -- | -- | | [![fix - fb6b354fbd](https://img.shields.io/badge/fb6b354fbd-fix-green)](https://github.com/angular/angular/commit/fb6b354fbd3ecf6c2cdf211ca054fb44226e587b) | prevent ReDoS in SOURCEMAP_URL_REGEXP | ### v22.0.7 — 22.0.7 - Date: 2026-07-16 - Version: v22.0.7 - Original notes: https://github.com/angular/angular/releases/tag/v22.0.7 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.0.7 - **fixed** — avoid prototype lookups in date format caches - **fixed** — parsing of an empty template literal interpolation - **fixed** — re-tag SourceFiles after TsCreateProgramDriver.updateFiles() - **fixed** — allow static attributes for explicit input transforms - **fixed** — ignore processing instruction syntax in templates - **fixed** — preserve explicit input transform write type - **fixed** — allow multiple async validators - **fixed** — preserve intermediate number values in signal forms - **fixed** — prevent stale CVA writeback during debounce - **fixed** — prevent interceptor signal reads from leaking into calling reactive contexts - **fixed** — build runtime translations map with a null prototype - **fixed** — use Object.hasOwn for placeholder lookup in translate - **fixed** — prevent ReDoS in SOURCEMAP_URL_REGEXP ###### common | Commit | Description | | -- | -- | | [![fix - 91e33aa1de](https://img.shields.io/badge/91e33aa1de-fix-green)](https://github.com/angular/angular/commit/91e33aa1de47d250d8cde21047597e8df771f07d) | avoid prototype lookups in date format caches | ###### compiler | Commit | Description | | -- | -- | | [![fix - 5b516e3a58](https://img.shields.io/badge/5b516e3a58-fix-green)](https://github.com/angular/angular/commit/5b516e3a58e1233f2e01cbb53267b9563a72d5f1) | parsing of an empty template literal interpolation | ###### compiler-cli | Commit | Description | | -- | -- | | [![fix - c88ddde1c9](https://img.shields.io/badge/c88ddde1c9-fix-green)](https://github.com/angular/angular/commit/c88ddde1c9f56e3b5c5cf264e87217b86a036a58) | re-tag SourceFiles after TsCreateProgramDriver.updateFiles() | ###### core | Commit | Description | | -- | -- | | [![fix - 94d9591b51](https://img.shields.io/badge/94d9591b51-fix-green)](https://github.com/angular/angular/commit/94d9591b512c94577080c77911dbd1c3516a8a81) | allow static attributes for explicit input transforms | | [![fix - c89f71a74c](https://img.shields.io/badge/c89f71a74c-fix-green)](https://github.com/angular/angular/commit/c89f71a74ce312f9f6522796a106eac48bd33ebb) | ignore processing instruction syntax in templates | | [![fix - 70500e4067](https://img.shields.io/badge/70500e4067-fix-green)](https://github.com/angular/angular/commit/70500e4067e74e5b5f79a15774b5d2f01524f397) | preserve explicit input transform write type | ###### forms | Commit | Description | | -- | -- | | [![fix - 1b9964675f](https://img.shields.io/badge/1b9964675f-fix-green)](https://github.com/angular/angular/commit/1b9964675f0cfee30a0e8f6df664d1961a3dc3ae) | allow multiple async validators | | [![fix - 64d6d47a0c](https://img.shields.io/badge/64d6d47a0c-fix-green)](https://github.com/angular/angular/commit/64d6d47a0c67709ce887a90666fc214c40a283c4) | preserve intermediate number values in signal forms | | [![fix - 6cf7446afa](https://img.shields.io/badge/6cf7446afa-fix-green)](https://github.com/angular/angular/commit/6cf7446afaedd461b9e28291e326f6f2372fa157) | prevent stale CVA writeback during debounce | ###### http | Commit | Description | | -- | -- | | [![fix - 20b7dc3023](https://img.shields.io/badge/20b7dc3023-fix-green)](https://github.com/angular/angular/commit/20b7dc3023df9ccde232cf9fef1d2b1d3ae68b23) | prevent interceptor signal reads from leaking into calling reactive contexts | ###### localize | Commit | Description | | -- | -- | | [![fix - 22d5a091d1](https://img.shields.io/badge/22d5a091d1-fix-green)](https://github.com/angular/angular/commit/22d5a091d10ac70ece469a4bf69b03c51805614b) | build runtime translations map with a null prototype | | [![fix - 8ce1fcf7fa](https://img.shields.io/badge/8ce1fcf7fa-fix-green)](https://github.com/angular/angular/commit/8ce1fcf7faef3ef4b3612e0faeac2701a82c5434) | use Object.hasOwn for placeholder lookup in translate | ###### platform-browser | Commit | Description | | -- | -- | | [![fix - b34bf0dce8](https://img.shields.io/badge/b34bf0dce8-fix-green)](https://github.com/angular/angular/commit/b34bf0dce855bca3c6dfcf7e19d38b3b39288a16) | prevent ReDoS in SOURCEMAP_URL_REGEXP | ### v22.1.0-next.5 — 22.1.0-next.5 - Date: 2026-07-08 - Version: v22.1.0-next.5 - Original notes: https://github.com/angular/angular/releases/tag/v22.1.0-next.5 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.1.0-next.5 - Labels: Pre-release - **added** — Add an error for --global-foo cases - **added** — Namespace CSS variables to the app - **added** — Support css var namespacing in properties - **added** — Add deep linking from Performance panel to DevTools - **added** — Add options to allow caching of credentialed and non-cacheable HTTP requests - **fixed** — Use regular optional chaining expression for safe function calls in TCBs - **fixed** — Apply debugName transform to required signal queries - **fixed** — Detect uninvoked signals in bound expressions using ternary - **fixed** — Allow multiple async validators - **fixed** — Make extractValue reactive for compat AbstractControl values - **fixed** — Preserve transitive NgModule references when pruning - **fixed** — Remove stale model import in model-output migration - **fixed** — Handle outlet named __proto__ in segment group maps - **fixed** — Use safe hasOwnProperty when parsing query params ###### compiler | Commit | Description | | -- | -- | | [![feat - af5e4e1131](https://img.shields.io/badge/af5e4e1131-feat-blue)](https://github.com/angular/angular/commit/af5e4e113130427ba8152166b4d904dd177c982e) | Add an error for --global-foo cases (#68846) | | [![feat - d579ecaf73](https://img.shields.io/badge/d579ecaf73-feat-blue)](https://github.com/angular/angular/commit/d579ecaf733db325f628cc11a28688fa0dad85ee) | Disable '--global-' error outside of g3 (#68846) | | [![feat - f98547675c](https://img.shields.io/badge/f98547675c-feat-blue)](https://github.com/angular/angular/commit/f98547675cd2026bb755671b28dea4e6d48eb7bb) | Namespace CSS variables to the app (#68846) | | [![feat - 8c8b2f7783](https://img.shields.io/badge/8c8b2f7783-feat-blue)](https://github.com/angular/angular/commit/8c8b2f77831236b23ca99ccb62e6197ff43b400d) | Support css var namespacing in properties (#68846) | | [![fix - 997b772f28](https://img.shields.io/badge/997b772f28-fix-green)](https://github.com/angular/angular/commit/997b772f28f92de64b416263bb6dc02dc9e7598d) | use regular optional chaining expression for safe function calls in TCBs | ###### compiler-cli | Commit | Description | | -- | -- | | [![fix - eb2a8ff63f](https://img.shields.io/badge/eb2a8ff63f-fix-green)](https://github.com/angular/angular/commit/eb2a8ff63f858110c6c77289f3c0150e49216624) | apply debugName transform to required signal queries | | [![fix - eac363e92e](https://img.shields.io/badge/eac363e92e-fix-green)](https://github.com/angular/angular/commit/eac363e92e00d26137a93d91ab3e2127f3519b1d) | detect uninvoked signals in bound expressions using ternary | ###### core | Commit | Description | | -- | -- | | [![feat - eab4847a8b](https://img.shields.io/badge/eab4847a8b-feat-blue)](https://github.com/angular/angular/commit/eab4847a8bd1b47ba630ca9b20c85770f990c717) | Adds deep linking from Performance panel to DevTools | ###### forms | Commit | Description | | -- | -- | | [![fix - 953cdfd66a](https://img.shields.io/badge/953cdfd66a-fix-green)](https://github.com/angular/angular/commit/953cdfd66a08e0234f7db80ba7ecaab5e3067c62) | allow multiple async validators | ###### forms/signals | Commit | Description | | -- | -- | | [![fix - b542302a23](https://img.shields.io/badge/b542302a23-fix-green)](https://github.com/angular/angular/commit/b542302a23c74a131ebcef064cc73d8693c696a1) | make extractValue reactive for compat AbstractControl values | ###### http | Commit | Description | | -- | -- | | [![feat - e3630c23c5](https://img.shields.io/badge/e3630c23c5-feat-blue)](https://github.com/angular/angular/commit/e3630c23c59445fc8bace5117283f20d6379dded) | add options to allow caching of credentialed and non-cacheable HTTP requests | ###### migrations | Commit | Description | | -- | -- | | [![fix - 0a5a2b768c](https://img.shields.io/badge/0a5a2b768c-fix-green)](https://github.com/angular/angular/commit/0a5a2b768c5f7f17c65488c5279549d22785488c) | preserve transitive NgModule references when pruning | | [![fix - fbb705e6fd](https://img.shields.io/badge/fbb705e6fd-fix-green)](https://github.com/angular/angular/commit/fbb705e6fd1f217a9576dfb76b193d08da1a2195) | remove stale model import in model-output migration | ###### router | Commit | Description | | -- | -- | | [![fix - cbbb1d8ba1](https://img.shields.io/badge/cbbb1d8ba1-fix-green)](https://github.com/angular/angular/commit/cbbb1d8ba12ca36d27a2523edfbd1466458c5036) | handle outlet named __proto__ in segment group maps | | [![fix - e5c37f21de](https://img.shields.io/badge/e5c37f21de-fix-green)](https://github.com/angular/angular/commit/e5c37f21de3d9801859641b2ffb180d90b3bc00d) | use safe hasOwnProperty when parsing query params | ### v22.0.6 — 22.0.6 - Date: 2026-07-08 - Version: v22.0.6 - Original notes: https://github.com/angular/angular/releases/tag/v22.0.6 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.0.6 - **fixed** — Use regular optional chaining expression for safe function calls in template checking blocks - **fixed** — Apply debugName transform to required signal queries - **fixed** — Detect uninvoked signals in bound expressions using ternary - **fixed** — Make extractValue reactive for compat AbstractControl values - **fixed** — Preserve transitive NgModule references when pruning - **fixed** — Remove stale model import in model-output migration - **fixed** — Handle outlet named __proto__ in segment group maps - **fixed** — Use safe hasOwnProperty when parsing query params ###### compiler | Commit | Description | | -- | -- | | [![fix - fd4ddcafed](https://img.shields.io/badge/fd4ddcafed-fix-green)](https://github.com/angular/angular/commit/fd4ddcafed340dbc116df9718f03ee9e16c41c18) | use regular optional chaining expression for safe function calls in TCBs | ###### compiler-cli | Commit | Description | | -- | -- | | [![fix - 534fe81a89](https://img.shields.io/badge/534fe81a89-fix-green)](https://github.com/angular/angular/commit/534fe81a8904408f252cbbbd90ca3e46bf5df3c9) | apply debugName transform to required signal queries | | [![fix - 3b08201bfb](https://img.shields.io/badge/3b08201bfb-fix-green)](https://github.com/angular/angular/commit/3b08201bfb63227b9a30e7c40b966412496f115d) | detect uninvoked signals in bound expressions using ternary | ###### forms/signals | Commit | Description | | -- | -- | | [![fix - 171669f7b2](https://img.shields.io/badge/171669f7b2-fix-green)](https://github.com/angular/angular/commit/171669f7b25343b10143cff04f69e2f46c6bf43f) | make extractValue reactive for compat AbstractControl values | ###### migrations | Commit | Description | | -- | -- | | [![fix - 0a6af1496b](https://img.shields.io/badge/0a6af1496b-fix-green)](https://github.com/angular/angular/commit/0a6af1496b0bc2e3685018124eba6128875a2102) | preserve transitive NgModule references when pruning | | [![fix - d4a926a762](https://img.shields.io/badge/d4a926a762-fix-green)](https://github.com/angular/angular/commit/d4a926a7621e9c421e537377fffc78e553bb69a8) | remove stale model import in model-output migration | ###### router | Commit | Description | | -- | -- | | [![fix - c238bd2ad7](https://img.shields.io/badge/c238bd2ad7-fix-green)](https://github.com/angular/angular/commit/c238bd2ad7adf9cd5d74adda5a665b6481661a62) | handle outlet named __proto__ in segment group maps | | [![fix - 8e6d7f7190](https://img.shields.io/badge/8e6d7f7190-fix-green)](https://github.com/angular/angular/commit/8e6d7f71906e35181577b9e66474695ba3077599) | use safe hasOwnProperty when parsing query params |