# Angular v22.2.0-next.3 — 22.2.0-next.3 - Product: Angular (https://whatsnew.fyi/product/angular) - Vendor: Google - Date: 2026-08-19 - Version: v22.2.0-next.3 - Original notes: https://github.com/angular/angular/releases/tag/v22.2.0-next.3 - Permalink: https://whatsnew.fyi/product/angular/releases/v22.2.0-next.3 - Labels: Pre-release 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. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — Detect object trigger values with Object.hasOwn - **fixed** — Preserve literal key union in KeyValuePipe.transform() - **added** — Allow template to access private props - **fixed** — Preserve &ngsp; between sibling control flow blocks - **fixed** — Accept readonly arrays for setClassMetadata decorators - **fixed** — Allow readonly arrays in RawScopeInfoFromDecorator - **fixed** — Expose debuggableFn for non-computed signal graph nodes - **fixed** — Prevent orphaned requestIdleCallback handle from re-entrant scheduling - **fixed** — Replace all hasOwnProperty usages with Object.hasOwn - **fixed** — Stop running further effects once one destroys the view mid-flush - **fixed** — Throw a descriptive error instead of crashing when a hydration node is missing - **fixed** — Throw NG0500 instead of a raw TypeError on element hydration mismatch - **fixed** — Report forbidden 2way bindings on when FormField is applied - **fixed** — Warn in dev mode when ngModel cannot reach parent NgForm across component boundary - **fixed** — Cancel oversized fetch response bodies - **fixed** — Recover project for external templates in solution-style workspaces - **fixed** — Disallow event handler attributes in Meta - **fixed** — Throw a descriptive error when insertBefore reference node is missing - **added** — Add containsTree as public API - **fixed** — Pass correct component to canDeactivate for named outlets in componentless parent routes ###### animations | Commit | Description | | -- | -- | | [![fix - c73a001fbf](https://img.shields.io/badge/c73a001fbf-fix-green)](https://github.com/angular/angular/commit/c73a001fbf766b350fab4e64244cfaee23fdc8bc) | detect object trigger values with Object.hasOwn | ###### common | Commit | Description | | -- | -- | | [![fix - 46d2cb7ff0](https://img.shields.io/badge/46d2cb7ff0-fix-green)](https://github.com/angular/angular/commit/46d2cb7ff049dc4549080f64dceb1541b3a87cee) | preserve literal key union in KeyValuePipe.transform() | ###### compiler | Commit | Description | | -- | -- | | [![feat - 48a0fd6e8a](https://img.shields.io/badge/48a0fd6e8a-feat-blue)](https://github.com/angular/angular/commit/48a0fd6e8a8d14bdc1d901ee5615f4b0ab698fe8) | allow template to access private props | | [![fix - 53fc371142](https://img.shields.io/badge/53fc371142-fix-green)](https://github.com/angular/angular/commit/53fc371142bcf3417bc00bb0f1dd9643aa2ee499) | preserve &ngsp; between sibling control flow blocks | ###### core | Commit | Description | | -- | -- | | [![fix - dc65e3656f](https://img.shields.io/badge/dc65e3656f-fix-green)](https://github.com/angular/angular/commit/dc65e3656ff56fc6c5c03cf59991a6e8760b5279) | accept readonly arrays for setClassMetadata decorators | | [![fix - eee9ef4d09](https://img.shields.io/badge/eee9ef4d09-fix-green)](https://github.com/angular/angular/commit/eee9ef4d09c091e9066ed6074a19c0eee0e84da2) | allow readonly arrays in RawScopeInfoFromDecorator | | [![fix - 0ddbc47e7f](https://img.shields.io/badge/0ddbc47e7f-fix-green)](https://github.com/angular/angular/commit/0ddbc47e7f6a4eced3a1a986b260747dc37ee9c9) | expose debuggableFn for non-computed signal graph nodes | | [![fix - c2b14b7ab4](https://img.shields.io/badge/c2b14b7ab4-fix-green)](https://github.com/angular/angular/commit/c2b14b7ab44003d6fd1154300c5cc483644d80e6) | prevent orphaned requestIdleCallback handle from re-entrant scheduling | | [![fix - 732e505018](https://img.shields.io/badge/732e505018-fix-green)](https://github.com/angular/angular/commit/732e5050180190df24768ace7aa3e785ca0dcc0a) | replace all hasOwnProperty usages with Object.hasOwn | | [![fix - c658d73210](https://img.shields.io/badge/c658d73210-fix-green)](https://github.com/angular/angular/commit/c658d73210d1a2e808cfe659dddd48e8389086c7) | stop running further effects once one destroys the view mid-flush | | [![fix - c6e4a36be1](https://img.shields.io/badge/c6e4a36be1-fix-green)](https://github.com/angular/angular/commit/c6e4a36be1246e0fbe06d591a69ac79cd74348d2) | throw a descriptive error instead of crashing when a hydration node is missing | | [![fix - 4560f4fdcd](https://img.shields.io/badge/4560f4fdcd-fix-green)](https://github.com/angular/angular/commit/4560f4fdcda4d55c9234f71fda2e73938cb55ed6) | throw NG0500 instead of a raw TypeError on element hydration mismatch | ###### forms | Commit | Description | | -- | -- | | [![fix - c819880b91](https://img.shields.io/badge/c819880b91-fix-green)](https://github.com/angular/angular/commit/c819880b91bf5ff1c5aa71afd314ae7cae241065) | report forbidden 2way bindings on when `FormField` is applied | | [![fix - 38d093232c](https://img.shields.io/badge/38d093232c-fix-green)](https://github.com/angular/angular/commit/38d093232c6d2fad99f2e361e9f6e31923507658) | warn in dev mode when ngModel cannot reach parent NgForm across component boundary | ###### http | Commit | Description | | -- | -- | | [![fix - 1a006a8f97](https://img.shields.io/badge/1a006a8f97-fix-green)](https://github.com/angular/angular/commit/1a006a8f9794240a950c388387bd8b9a671801da) | cancel oversized fetch response bodies | ###### language-server | Commit | Description | | -- | -- | | [![fix - 3f8d9d6ea6](https://img.shields.io/badge/3f8d9d6ea6-fix-green)](https://github.com/angular/angular/commit/3f8d9d6ea6a0a0e7edbc12baf08b1f6db8c0f6b8) | recover project for external templates in solution-style workspaces | ###### platform-browser | Commit | Description | | -- | -- | | [![fix - 6 _[Truncated at 4000 characters — full notes: https://github.com/angular/angular/releases/tag/v22.2.0-next.3]_