Bumps [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) from 21.2.16 to 22.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases">@angular/platform-browser-dynamic's releases</a>.</em></p>
<blockquote>
<h2>VSCode Extension: 22.0.0</h2>
<h3>Breaking Changes</h3>
<p>The extension now bundles TypeScript version 6.0, which itself includes breaking
changes, including <a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-6-0.html#simple-default-changes">new defaults</a> such as <code>strict</code> being <code>true</code>. You will need to explicitly set
<code>"strict": false</code> in your <code>tsconfig.json</code>. Alternatively, the extension supports configuring the <code>tsdk</code> in the <a href="https://code.visualstudio.com/docs/typescript/typescript-transpiling#_using-the-workspace-version-of-typescript">same way</a> as the built in TS/JS extension.</p>
<h3>Fixes and features</h3>
<ul>
<li>fix(language-service): Add support for <code>@Input</code> with transforms (<a href="dc9c72da9b">dc9c72da9b</a>)</li>
<li>feat(language-service): add Document Symbols support for Angular templates (<a href="cfd0f9950c">cfd0f9950c</a>)</li>
<li>feat(language-service): add angular template inlay hints support (<a href="5a6d88626b">5a6d88626b</a>)</li>
<li>feat(language-service): Add support for idle timeout in defer blocks (<a href="c6f98c723c">c6f98c723c</a>)</li>
</ul>
<h2>22.0.0</h2>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="47fcbc4704"><img src="https://img.shields.io/badge/47fcbc4704-feat-blue" alt="feat - 47fcbc4704" /></a></td>
<td>allow safe navigation to correctly narrow down nullables</td>
</tr>
<tr>
<td><a href="2896c93cc1"><img src="https://img.shields.io/badge/2896c93cc1-feat-blue" alt="feat - 2896c93cc1" /></a></td>
<td>Angular expressions with optional chaining returns <code>undefined</code></td>
</tr>
<tr>
<td><a href="e850643b1b"><img src="https://img.shields.io/badge/e850643b1b-feat-blue" alt="feat - e850643b1b" /></a></td>
<td>Support comments in html element.</td>
</tr>
<tr>
<td><a href="96be4f429b"><img src="https://img.shields.io/badge/96be4f429b-fix-green" alt="fix - 96be4f429b" /></a></td>
<td>abstract emitter producing incorrect code for dynamic imports</td>
</tr>
<tr>
<td><a href="488d962bc7"><img src="https://img.shields.io/badge/488d962bc7-fix-green" alt="fix - 488d962bc7" /></a></td>
<td>Don't bind inputs/outputs for <code>data-</code> attributes</td>
</tr>
<tr>
<td><a href="2c5aabb9da"><img src="https://img.shields.io/badge/2c5aabb9da-fix-green" alt="fix - 2c5aabb9da" /></a></td>
<td>don't escape dollar sign in literal expression</td>
</tr>
<tr>
<td><a href="c7aef8ec5d"><img src="https://img.shields.io/badge/c7aef8ec5d-fix-green" alt="fix - c7aef8ec5d" /></a></td>
<td>enforce parentheses containing arguments for :host-context</td>
</tr>
<tr>
<td><a href="b225a5d902"><img src="https://img.shields.io/badge/b225a5d902-fix-green" alt="fix - b225a5d902" /></a></td>
<td>invalid type checking code if field name needs to be quoted</td>
</tr>
<tr>
<td><a href="ab9154ab75"><img src="https://img.shields.io/badge/ab9154ab75-fix-green" alt="fix - ab9154ab75" /></a></td>
<td>normalize tag names with custom namespaces in DomElementSchemaRegistry (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/68868">#68868</a>)</td>
</tr>
<tr>
<td><a href="8a1533c9ad"><img src="https://img.shields.io/badge/8a1533c9ad-fix-green" alt="fix - 8a1533c9ad" /></a></td>
<td>preserve leading commas in animation definitions</td>
</tr>
<tr>
<td><a href="194f723f66"><img src="https://img.shields.io/badge/194f723f66-fix-green" alt="fix - 194f723f66" /></a></td>
<td>remove dedicated support for legacy shadow DOM selectors</td>
</tr>
<tr>
<td><a href="4c25a42e98"><img src="https://img.shields.io/badge/4c25a42e98-fix-green" alt="fix - 4c25a42e98" /></a></td>
<td>remove deprecated shadow CSS encapsulation polyfills</td>
</tr>
<tr>
<td><a href="6ff620a033"><img src="https://img.shields.io/badge/6ff620a033-fix-green" alt="fix - 6ff620a033" /></a></td>
<td>sanitize dynamic href and xlink:href bindings on SVG a elements (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/68868">#68868</a>)</td>
</tr>
<tr>
<td><a href="7dc1017e51"><img src="https://img.shields.io/badge/7dc1017e51-fix-green" alt="fix - 7dc1017e51" /></a></td>
<td>simplify handling of colon host with a selector list</td>
</tr>
<tr>
<td><a href="d99ab0e040"><img src="https://img.shields.io/badge/d99ab0e040-fix-green" alt="fix - d99ab0e040" /></a></td>
<td>stop generating unused field</td>
</tr>
<tr>
<td><a href="03db2aefaa"><img src="https://img.shields.io/badge/03db2aefaa-fix-green" alt="fix - 03db2aefaa" /></a></td>
<td>throw on duplicate input/outputs</td>
</tr>
<tr>
<td><a href="786ef8261f"><img src="https://img.shields.io/badge/786ef8261f-fix-green" alt="fix - 786ef8261f" /></a></td>
<td>throw on invalid in expressions</td>
</tr>
<tr>
<td><a href="ccb7d427e4"><img src="https://img.shields.io/badge/ccb7d427e4-fix-green" alt="fix - ccb7d427e4" /></a></td>
<td>type check invalid for loops</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="b8d3f36ed9"><img src="https://img.shields.io/badge/b8d3f36ed9-feat-blue" alt="feat - b8d3f36ed9" /></a></td>
<td>add support for Node.js 26.0.0</td>
</tr>
<tr>
<td><a href="7f9450219f"><img src="https://img.shields.io/badge/7f9450219f-feat-blue" alt="feat - 7f9450219f" /></a></td>
<td>Adds warning for prefetch without main defer trigger</td>
</tr>
<tr>
<td><a href="2eae497a04"><img src="https://img.shields.io/badge/2eae497a04-feat-blue" alt="feat - 2eae497a04" /></a></td>
<td>support external TCBs with copied content in specific mode</td>
</tr>
<tr>
<td><a href="e5f96c2d88"><img src="https://img.shields.io/badge/e5f96c2d88-fix-green" alt="fix - e5f96c2d88" /></a></td>
<td>animation events not type checked properly when bound through HostListener decorator</td>
</tr>
<tr>
<td><a href="9218140348"><img src="https://img.shields.io/badge/9218140348-fix-green" alt="fix - 9218140348" /></a></td>
<td>resolve TCB mapping failure for safe property reads with as any</td>
</tr>
<tr>
<td><a href="7a0d6b8df2"><img src="https://img.shields.io/badge/7a0d6b8df2-fix-green" alt="fix - 7a0d6b8df2" /></a></td>
<td>transform dropping exclamationToken from properties</td>
</tr>
<tr>
<td><a href="ca67828ee2"><img src="https://img.shields.io/badge/ca67828ee2-refactor-yellow" alt="refactor - ca67828ee2" /></a></td>
<td>introduce NG8023 compile-time diagnostic for duplicate selectors</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="17d3ea44e2"><img src="https://img.shields.io/badge/17d3ea44e2-feat-blue" alt="feat - 17d3ea44e2" /></a></td>
<td>add <code>IdleRequestOptions</code> support to <code>IdleService</code></td>
</tr>
<tr>
<td><a href="3b0ae5fef0"><img src="https://img.shields.io/badge/3b0ae5fef0-feat-blue" alt="feat - 3b0ae5fef0" /></a></td>
<td>add <code>provideWebMcpTools</code></td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md">@angular/platform-browser-dynamic's changelog</a>.</em></p>
<blockquote>
<h1>22.0.0 (2026-06-03)</h1>
<p><a href="https://goo.gle/angular-v22-blog">Blog post "Announcing Angular v22"</a>.</p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li>This change will trigger the <code>nullishCoalescingNotNullable</code> and <code>optionalChainNotNullable</code> diagnostics on exisiting projects.
You might want to disable those 2 diagnotiscs in your <code>tsconfig</code> temporarily.</li>
<li>data prefixed attribute no-longer bind inputs nor outputs.</li>
<li>The compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.</li>
<li><code>in</code> variables will throw in template expressions.</li>
</ul>
<h3>compiler-cli</h3>
<ul>
<li>Elements with multiple matching selectors will now throw at compile time.</li>
</ul>
<h3>core</h3>
<ul>
<li>The second arguement of appRef.bootstrap does not accept <code>any</code> anymore. Make sure the element you pass is not nullable.</li>
<li>
<ul>
<li>TypeScript versions older than 6.0 are no longer supported.</li>
</ul>
</li>
<li>Leave animations are no longer limited to the element being removed.</li>
<li>Component with undefined <code>changeDetection</code> property are now <code>OnPush</code> by default. Specify <code>changeDetection: ChangeDetectionStrategy.Eager</code> to keep the previous behavior.</li>
<li>change AnimationCallbackEvent.animationComplete signature</li>
<li><code>ChangeDetectorRef.checkNoChanges</code> was removed. In tests use <code>fixture.detectChanges()</code> instead.</li>
<li><code>createNgModuleRef</code> was removed, use <code>createNgModule</code> instead</li>
<li><code>ComponentFactoryResolver</code> and <code>ComponentFactory</code> are no longer available. Pass the component class directly to APIs that previously required a factory, such as <code>ViewContainerRef.createComponent</code> or use the standalone <code>createComponentFunction</code>.</li>
<li><code>ComponentFactoryResolver</code> and <code>ComponentFactory</code> are no longer available. Pass the component class directly to APIs that previously required a factory, such as <code>ViewContainerRef.createComponent</code> or use the standalone <code>createComponent</code> function.</li>
</ul>
<h3>forms</h3>
<ul>
<li><code>min</code> and <code>max</code> validation rules no longer support
string values. Bound values must be numbers or null.</li>
</ul>
<h3>http</h3>
<ul>
<li>Use the <code>HttpXhrBackend</code> with <code>provideHttpClient(withXhr)</code> if you want to keep supporting upload progress reports.</li>
</ul>
<h3>platform-browser</h3>
<ul>
<li>This removes styles when they appear to no longer be used by an associated <code>host</code>. However other DOM on the page may still be affected by those styles if not leveraging <code>ViewEncapsulation.Emulated</code> or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.</li>
<li>Hammer.js integration has been removed. Use your own implementation.</li>
</ul>
<h3>router</h3>
<ul>
<li>
<p>The return type for <code>TitleStrategy.getResolvedTitleForRoute</code>
was previously 'any' while the actual return type could only be either <code>string</code>
or <code>undefined</code>. The return type now reflects the possible values correctly.
Code that reads the value may need to be adjusted.</p>
<p>(cherry picked from commit ad37f52c1212164c51ffcc533067af05c2c33c89)</p>
</li>
<li>
<p>The <code>currentSnapshot</code> parameter in <code>CanMatchFn</code> and the <code>canMatch</code> method of the <code>CanMatch</code> interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of <code>CanMatch</code> must now include the third argument to satisfy the interface.</p>
</li>
<li>
<p>paramsInheritanceStrategy now defaults to 'always'</p>
<p>The default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.</p>
</li>
<li>
<p><code>provideRoutes()</code> has been removed. Use <code>provideRouter()</code> or <code>ROUTES</code> as multi token if necessary.</p>
</li>
</ul>
<h3>upgrade</h3>
<ul>
<li>Deprecated <code>getAngularLib</code>/<code>setAngularLib</code> have been removed use <code>getAngularJSGlobal</code>/<code>setAngularJSGlobal</code> instead.</li>
</ul>
<h2>Deprecations</h2>
<h3>http</h3>
<ul>
<li><code>withFetch</code> is now deprecated, it can be safely removed.</li>
<li>The <code>reportProgress</code> option is deprecated please use <code>reportUploadProgress</code> & <code>reportDownloadProgress</code> instead.</li>
</ul>
<h3>compiler</h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a97d5ec22d"><code>a97d5ec</code></a> build: update minimum supported Node.js versions</li>
<li><a href="b8d3f36ed9"><code>b8d3f36</code></a> feat(compiler-cli): add support for Node.js 26.0.0</li>
<li><a href="4ad3a1fe37"><code>4ad3a1f</code></a> refactor(core): Don't throw when there are not async metadata</li>
<li><a href="7f3f3d7da1"><code>7f3f3d7</code></a> ci: remove remainings of saucelabs tests</li>
<li><a href="d550bf713a"><code>d550bf7</code></a> build: update minimum supported Node.js versions</li>
<li>See full diff in <a href="https://github.com/angular/angular/commits/v22.0.0/packages/platform-browser-dynamic">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 21.2.16 to 22.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases">@angular/forms's releases</a>.</em></p>
<blockquote>
<h2>VSCode Extension: 22.0.0</h2>
<h3>Breaking Changes</h3>
<p>The extension now bundles TypeScript version 6.0, which itself includes breaking
changes, including <a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-6-0.html#simple-default-changes">new defaults</a> such as <code>strict</code> being <code>true</code>. You will need to explicitly set
<code>"strict": false</code> in your <code>tsconfig.json</code>. Alternatively, the extension supports configuring the <code>tsdk</code> in the <a href="https://code.visualstudio.com/docs/typescript/typescript-transpiling#_using-the-workspace-version-of-typescript">same way</a> as the built in TS/JS extension.</p>
<h3>Fixes and features</h3>
<ul>
<li>fix(language-service): Add support for <code>@Input</code> with transforms (<a href="dc9c72da9b">dc9c72da9b</a>)</li>
<li>feat(language-service): add Document Symbols support for Angular templates (<a href="cfd0f9950c">cfd0f9950c</a>)</li>
<li>feat(language-service): add angular template inlay hints support (<a href="5a6d88626b">5a6d88626b</a>)</li>
<li>feat(language-service): Add support for idle timeout in defer blocks (<a href="c6f98c723c">c6f98c723c</a>)</li>
</ul>
<h2>22.0.0</h2>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="47fcbc4704"><img src="https://img.shields.io/badge/47fcbc4704-feat-blue" alt="feat - 47fcbc4704" /></a></td>
<td>allow safe navigation to correctly narrow down nullables</td>
</tr>
<tr>
<td><a href="2896c93cc1"><img src="https://img.shields.io/badge/2896c93cc1-feat-blue" alt="feat - 2896c93cc1" /></a></td>
<td>Angular expressions with optional chaining returns <code>undefined</code></td>
</tr>
<tr>
<td><a href="e850643b1b"><img src="https://img.shields.io/badge/e850643b1b-feat-blue" alt="feat - e850643b1b" /></a></td>
<td>Support comments in html element.</td>
</tr>
<tr>
<td><a href="96be4f429b"><img src="https://img.shields.io/badge/96be4f429b-fix-green" alt="fix - 96be4f429b" /></a></td>
<td>abstract emitter producing incorrect code for dynamic imports</td>
</tr>
<tr>
<td><a href="488d962bc7"><img src="https://img.shields.io/badge/488d962bc7-fix-green" alt="fix - 488d962bc7" /></a></td>
<td>Don't bind inputs/outputs for <code>data-</code> attributes</td>
</tr>
<tr>
<td><a href="2c5aabb9da"><img src="https://img.shields.io/badge/2c5aabb9da-fix-green" alt="fix - 2c5aabb9da" /></a></td>
<td>don't escape dollar sign in literal expression</td>
</tr>
<tr>
<td><a href="c7aef8ec5d"><img src="https://img.shields.io/badge/c7aef8ec5d-fix-green" alt="fix - c7aef8ec5d" /></a></td>
<td>enforce parentheses containing arguments for :host-context</td>
</tr>
<tr>
<td><a href="b225a5d902"><img src="https://img.shields.io/badge/b225a5d902-fix-green" alt="fix - b225a5d902" /></a></td>
<td>invalid type checking code if field name needs to be quoted</td>
</tr>
<tr>
<td><a href="ab9154ab75"><img src="https://img.shields.io/badge/ab9154ab75-fix-green" alt="fix - ab9154ab75" /></a></td>
<td>normalize tag names with custom namespaces in DomElementSchemaRegistry (<a href="https://github.com/angular/angular/tree/HEAD/packages/forms/issues/68868">#68868</a>)</td>
</tr>
<tr>
<td><a href="8a1533c9ad"><img src="https://img.shields.io/badge/8a1533c9ad-fix-green" alt="fix - 8a1533c9ad" /></a></td>
<td>preserve leading commas in animation definitions</td>
</tr>
<tr>
<td><a href="194f723f66"><img src="https://img.shields.io/badge/194f723f66-fix-green" alt="fix - 194f723f66" /></a></td>
<td>remove dedicated support for legacy shadow DOM selectors</td>
</tr>
<tr>
<td><a href="4c25a42e98"><img src="https://img.shields.io/badge/4c25a42e98-fix-green" alt="fix - 4c25a42e98" /></a></td>
<td>remove deprecated shadow CSS encapsulation polyfills</td>
</tr>
<tr>
<td><a href="6ff620a033"><img src="https://img.shields.io/badge/6ff620a033-fix-green" alt="fix - 6ff620a033" /></a></td>
<td>sanitize dynamic href and xlink:href bindings on SVG a elements (<a href="https://github.com/angular/angular/tree/HEAD/packages/forms/issues/68868">#68868</a>)</td>
</tr>
<tr>
<td><a href="7dc1017e51"><img src="https://img.shields.io/badge/7dc1017e51-fix-green" alt="fix - 7dc1017e51" /></a></td>
<td>simplify handling of colon host with a selector list</td>
</tr>
<tr>
<td><a href="d99ab0e040"><img src="https://img.shields.io/badge/d99ab0e040-fix-green" alt="fix - d99ab0e040" /></a></td>
<td>stop generating unused field</td>
</tr>
<tr>
<td><a href="03db2aefaa"><img src="https://img.shields.io/badge/03db2aefaa-fix-green" alt="fix - 03db2aefaa" /></a></td>
<td>throw on duplicate input/outputs</td>
</tr>
<tr>
<td><a href="786ef8261f"><img src="https://img.shields.io/badge/786ef8261f-fix-green" alt="fix - 786ef8261f" /></a></td>
<td>throw on invalid in expressions</td>
</tr>
<tr>
<td><a href="ccb7d427e4"><img src="https://img.shields.io/badge/ccb7d427e4-fix-green" alt="fix - ccb7d427e4" /></a></td>
<td>type check invalid for loops</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="b8d3f36ed9"><img src="https://img.shields.io/badge/b8d3f36ed9-feat-blue" alt="feat - b8d3f36ed9" /></a></td>
<td>add support for Node.js 26.0.0</td>
</tr>
<tr>
<td><a href="7f9450219f"><img src="https://img.shields.io/badge/7f9450219f-feat-blue" alt="feat - 7f9450219f" /></a></td>
<td>Adds warning for prefetch without main defer trigger</td>
</tr>
<tr>
<td><a href="2eae497a04"><img src="https://img.shields.io/badge/2eae497a04-feat-blue" alt="feat - 2eae497a04" /></a></td>
<td>support external TCBs with copied content in specific mode</td>
</tr>
<tr>
<td><a href="e5f96c2d88"><img src="https://img.shields.io/badge/e5f96c2d88-fix-green" alt="fix - e5f96c2d88" /></a></td>
<td>animation events not type checked properly when bound through HostListener decorator</td>
</tr>
<tr>
<td><a href="9218140348"><img src="https://img.shields.io/badge/9218140348-fix-green" alt="fix - 9218140348" /></a></td>
<td>resolve TCB mapping failure for safe property reads with as any</td>
</tr>
<tr>
<td><a href="7a0d6b8df2"><img src="https://img.shields.io/badge/7a0d6b8df2-fix-green" alt="fix - 7a0d6b8df2" /></a></td>
<td>transform dropping exclamationToken from properties</td>
</tr>
<tr>
<td><a href="ca67828ee2"><img src="https://img.shields.io/badge/ca67828ee2-refactor-yellow" alt="refactor - ca67828ee2" /></a></td>
<td>introduce NG8023 compile-time diagnostic for duplicate selectors</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="17d3ea44e2"><img src="https://img.shields.io/badge/17d3ea44e2-feat-blue" alt="feat - 17d3ea44e2" /></a></td>
<td>add <code>IdleRequestOptions</code> support to <code>IdleService</code></td>
</tr>
<tr>
<td><a href="3b0ae5fef0"><img src="https://img.shields.io/badge/3b0ae5fef0-feat-blue" alt="feat - 3b0ae5fef0" /></a></td>
<td>add <code>provideWebMcpTools</code></td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md">@angular/forms's changelog</a>.</em></p>
<blockquote>
<h1>22.0.0 (2026-06-03)</h1>
<p><a href="https://goo.gle/angular-v22-blog">Blog post "Announcing Angular v22"</a>.</p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li>This change will trigger the <code>nullishCoalescingNotNullable</code> and <code>optionalChainNotNullable</code> diagnostics on exisiting projects.
You might want to disable those 2 diagnotiscs in your <code>tsconfig</code> temporarily.</li>
<li>data prefixed attribute no-longer bind inputs nor outputs.</li>
<li>The compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.</li>
<li><code>in</code> variables will throw in template expressions.</li>
</ul>
<h3>compiler-cli</h3>
<ul>
<li>Elements with multiple matching selectors will now throw at compile time.</li>
</ul>
<h3>core</h3>
<ul>
<li>The second arguement of appRef.bootstrap does not accept <code>any</code> anymore. Make sure the element you pass is not nullable.</li>
<li>
<ul>
<li>TypeScript versions older than 6.0 are no longer supported.</li>
</ul>
</li>
<li>Leave animations are no longer limited to the element being removed.</li>
<li>Component with undefined <code>changeDetection</code> property are now <code>OnPush</code> by default. Specify <code>changeDetection: ChangeDetectionStrategy.Eager</code> to keep the previous behavior.</li>
<li>change AnimationCallbackEvent.animationComplete signature</li>
<li><code>ChangeDetectorRef.checkNoChanges</code> was removed. In tests use <code>fixture.detectChanges()</code> instead.</li>
<li><code>createNgModuleRef</code> was removed, use <code>createNgModule</code> instead</li>
<li><code>ComponentFactoryResolver</code> and <code>ComponentFactory</code> are no longer available. Pass the component class directly to APIs that previously required a factory, such as <code>ViewContainerRef.createComponent</code> or use the standalone <code>createComponentFunction</code>.</li>
<li><code>ComponentFactoryResolver</code> and <code>ComponentFactory</code> are no longer available. Pass the component class directly to APIs that previously required a factory, such as <code>ViewContainerRef.createComponent</code> or use the standalone <code>createComponent</code> function.</li>
</ul>
<h3>forms</h3>
<ul>
<li><code>min</code> and <code>max</code> validation rules no longer support
string values. Bound values must be numbers or null.</li>
</ul>
<h3>http</h3>
<ul>
<li>Use the <code>HttpXhrBackend</code> with <code>provideHttpClient(withXhr)</code> if you want to keep supporting upload progress reports.</li>
</ul>
<h3>platform-browser</h3>
<ul>
<li>This removes styles when they appear to no longer be used by an associated <code>host</code>. However other DOM on the page may still be affected by those styles if not leveraging <code>ViewEncapsulation.Emulated</code> or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.</li>
<li>Hammer.js integration has been removed. Use your own implementation.</li>
</ul>
<h3>router</h3>
<ul>
<li>
<p>The return type for <code>TitleStrategy.getResolvedTitleForRoute</code>
was previously 'any' while the actual return type could only be either <code>string</code>
or <code>undefined</code>. The return type now reflects the possible values correctly.
Code that reads the value may need to be adjusted.</p>
<p>(cherry picked from commit ad37f52c1212164c51ffcc533067af05c2c33c89)</p>
</li>
<li>
<p>The <code>currentSnapshot</code> parameter in <code>CanMatchFn</code> and the <code>canMatch</code> method of the <code>CanMatch</code> interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of <code>CanMatch</code> must now include the third argument to satisfy the interface.</p>
</li>
<li>
<p>paramsInheritanceStrategy now defaults to 'always'</p>
<p>The default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.</p>
</li>
<li>
<p><code>provideRoutes()</code> has been removed. Use <code>provideRouter()</code> or <code>ROUTES</code> as multi token if necessary.</p>
</li>
</ul>
<h3>upgrade</h3>
<ul>
<li>Deprecated <code>getAngularLib</code>/<code>setAngularLib</code> have been removed use <code>getAngularJSGlobal</code>/<code>setAngularJSGlobal</code> instead.</li>
</ul>
<h2>Deprecations</h2>
<h3>http</h3>
<ul>
<li><code>withFetch</code> is now deprecated, it can be safely removed.</li>
<li>The <code>reportProgress</code> option is deprecated please use <code>reportUploadProgress</code> & <code>reportDownloadProgress</code> instead.</li>
</ul>
<h3>compiler</h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="e81c7e8466"><code>e81c7e8</code></a> refactor(forms): type built-in getError results</li>
<li><a href="eb600aa3b2"><code>eb600aa</code></a> refactor(forms): mark date and limit signal forms APIs public</li>
<li><a href="a97d5ec22d"><code>a97d5ec</code></a> build: update minimum supported Node.js versions</li>
<li><a href="3b4ef1e2ff"><code>3b4ef1e</code></a> perf(forms): avoid redundant invalidations in parser errors signal</li>
<li><a href="16cf84d953"><code>16cf84d</code></a> docs: document FormBuilder.group() controlsConfig value shapes</li>
<li><a href="07a9358157"><code>07a9358</code></a> perf(forms): avoid spurious recomputation in FormField.parseErrors</li>
<li><a href="da82f24330"><code>da82f24</code></a> refactor(forms): add <code>provideExperimentalWebMcpForms</code></li>
<li><a href="ad717dff1d"><code>ad717df</code></a> refactor(core): use the <code>@Service</code> decorator where possible.</li>
<li><a href="043055f6de"><code>043055f</code></a> refactor(forms): support when consistently for maxDate and minDate validators</li>
<li><a href="0806b2f02b"><code>0806b2f</code></a> refactor(forms): use overloads and JSDoc for deprecations</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/v22.0.0/packages/forms">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps
[@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic)
from 20.3.16 to 21.1.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases"><code>@angular/platform-browser-dynamic</code>'s
releases</a>.</em></p>
<blockquote>
<h2>21.1.2</h2>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="9f99b14882"><img
src="https://img.shields.io/badge/9f99b14882-fix-green" alt="fix -
9f99b14882" /></a></td>
<td>only touch visible, interactive fields on submit</td>
</tr>
</tbody>
</table>
<h3>language-service</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="c57b0355b5"><img
src="https://img.shields.io/badge/c57b0355b5-fix-green" alt="fix -
c57b0355b5" /></a></td>
<td>Detect local project version on creation</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="21ecdc036a"><img
src="https://img.shields.io/badge/21ecdc036a-fix-green" alt="fix -
21ecdc036a" /></a></td>
<td>Do not intercept reload events with Navigation integration</td>
</tr>
</tbody>
</table>
<h2>21.1.1</h2>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="0e1f1ed573"><img
src="https://img.shields.io/badge/0e1f1ed573-fix-green" alt="fix -
0e1f1ed573" /></a></td>
<td>drop .tsx extension for generated relative imports</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="05adfcf8f2"><img
src="https://img.shields.io/badge/05adfcf8f2-fix-green" alt="fix -
05adfcf8f2" /></a></td>
<td>handle Set in class bindings</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="d89a80a970"><img
src="https://img.shields.io/badge/d89a80a970-feat-blue" alt="feat -
d89a80a970" /></a></td>
<td>Ability to manually register a form field binding in signal
forms</td>
</tr>
<tr>
<td><a
href="cb75f9ce85"><img
src="https://img.shields.io/badge/cb75f9ce85-fix-green" alt="fix -
cb75f9ce85" /></a></td>
<td>fix control value syncing on touch</td>
</tr>
</tbody>
</table>
<h2>VSCode Extension: 21.1.1</h2>
<ul>
<li>fix(vscode-extension): add syntax highlighting for arrow functions
(<a
href="a649fc8f57">a649fc8f57</a>)</li>
<li>fix(vscode-extension): add syntax highlighting for spread/rest
expressions (<a
href="8f16846dd9">8f16846dd9</a>)</li>
</ul>
<h2>VSCode Extension: 21.1.0</h2>
<h2>21.1.0 (2026-01-12)</h2>
<ul>
<li>fix(vscode-extension): convert enum member kind in completions
correctly (<a
href="50674f8c28">50674f8c28</a>)</li>
</ul>
<h2>21.1.0</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="d8790972be"><img
src="https://img.shields.io/badge/d8790972be-feat-blue" alt="feat -
d8790972be" /></a></td>
<td>Add custom transformations for Cloudflare and Cloudinary image
loaders</td>
</tr>
<tr>
<td><a
href="a6b8cb68af"><img
src="https://img.shields.io/badge/a6b8cb68af-feat-blue" alt="feat -
a6b8cb68af" /></a></td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="640693da8e"><img
src="https://img.shields.io/badge/640693da8e-feat-blue" alt="feat -
640693da8e" /></a></td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a
href="0ad3adc7c6"><img
src="https://img.shields.io/badge/0ad3adc7c6-fix-green" alt="fix -
0ad3adc7c6" /></a></td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@angular/platform-browser-dynamic</code>'s
changelog</a>.</em></p>
<blockquote>
<h1>21.1.2 (2026-01-28)</h1>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="9f99b14882">9f99b14882</a></td>
<td>fix</td>
<td>only touch visible, interactive fields on submit</td>
</tr>
</tbody>
</table>
<h3>language-service</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="c57b0355b5">c57b0355b5</a></td>
<td>fix</td>
<td>Detect local project version on creation</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="21ecdc036a">21ecdc036a</a></td>
<td>fix</td>
<td>Do not intercept reload events with Navigation integration</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>21.2.0-next.0 (2026-01-22)</h1>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="72534e2a34">72534e2a34</a></td>
<td>feat</td>
<td>Add support for the <code>instanceof</code> binary operator</td>
</tr>
<tr>
<td><a
href="04ba09a8d9">04ba09a8d9</a></td>
<td>feat</td>
<td>support <code>AstVisitor.visitEmptyExpr()</code></td>
</tr>
<tr>
<td><a
href="ce80136e7b">ce80136e7b</a></td>
<td>fix</td>
<td>optimize away unnecessary restore/reset view calls</td>
</tr>
<tr>
<td><a
href="3242a61bae">3242a61bae</a></td>
<td>fix</td>
<td>variable counter visiting some expressions twice</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="473dd3e1cb">473dd3e1cb</a></td>
<td>fix</td>
<td>attach source spans to object literal keys in TCB</td>
</tr>
<tr>
<td><a
href="a904d9f77b">a904d9f77b</a></td>
<td>fix</td>
<td>support nested component declaration</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="92d2498910">92d2498910</a></td>
<td>feat</td>
<td>add host node to DeferBlockData (<a
href="https://redirect.github.com/angular/angular/pull/66546">#66546</a>)</td>
</tr>
<tr>
<td><a
href="1ba9b7ac50">1ba9b7ac50</a></td>
<td>feat</td>
<td>resource composition via snapshots</td>
</tr>
<tr>
<td><a
href="d9923b72a2">d9923b72a2</a></td>
<td>feat</td>
<td>support arrow functions in expressions</td>
</tr>
<tr>
<td><a
href="ed78fa05c7">ed78fa05c7</a></td>
<td>fix</td>
<td>Remove note to skip arrow functions in best practices</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="95c386469c">95c386469c</a></td>
<td>feat</td>
<td>Add passing focus options to form field</td>
</tr>
</tbody>
</table>
<h3>language-server</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="ebc90c26f5">ebc90c26f5</a></td>
<td>feat</td>
<td>Add completions and hover info for inline styles</td>
</tr>
<tr>
<td><a
href="26fd0839c3">26fd0839c3</a></td>
<td>feat</td>
<td>Add folding range support for inline styles</td>
</tr>
<tr>
<td><a
href="573aadef7e">573aadef7e</a></td>
<td>feat</td>
<td>Add quick info for inline styles</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d3f67f6ca8"><code>d3f67f6</code></a>
refactor(core): mark <code>VERSION</code> as <code>@__PURE__</code> for
better tree-shaking</li>
<li><a
href="26fed34e0e"><code>26fed34</code></a>
build: format md files</li>
<li><a
href="c3576506b3"><code>c357650</code></a>
refactor(core): Update tests for zoneless by default (<a
href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/63668">#63668</a>)</li>
<li><a
href="2fcafb65c5"><code>2fcafb6</code></a>
build: rename defaults2.bzl to defaults.bzl (<a
href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/63383">#63383</a>)</li>
<li>See full diff in <a
href="https://github.com/angular/angular/commits/v21.1.2/packages/platform-browser-dynamic">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps
[@angular-devkit/build-angular](https://github.com/angular/angular-cli)
from 20.3.15 to 21.1.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular-cli/releases"><code>@angular-devkit/build-angular</code>'s
releases</a>.</em></p>
<blockquote>
<h2>21.1.2</h2>
<h3><code>@angular-devkit/schematics-cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="e7458c81d6"><img
src="https://img.shields.io/badge/e7458c81d-fix-green" alt="fix -
e7458c81d" /></a></td>
<td>Add boolean type inference for 'true' and 'false' string values in
argument parsing</td>
</tr>
</tbody>
</table>
<h3><code>@angular-devkit/architect</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="d66f1fe647"><img
src="https://img.shields.io/badge/d66f1fe64-fix-green" alt="fix -
d66f1fe64" /></a></td>
<td>Add boolean type inference for 'true' and 'false' string values in
argument parsing</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="80911af673"><img
src="https://img.shields.io/badge/80911af67-fix-green" alt="fix -
80911af67" /></a></td>
<td>loosen Vitest dependency checks when runnerConfig is used</td>
</tr>
<tr>
<td><a
href="2d30639d3c"><img
src="https://img.shields.io/badge/2d30639d3-fix-green" alt="fix -
2d30639d3" /></a></td>
<td>support merging coverage thresholds with Vitest runnerConfig</td>
</tr>
</tbody>
</table>
<h2>21.1.1</h2>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="9da6d8fa76"><img
src="https://img.shields.io/badge/9da6d8fa7-fix-green" alt="fix -
9da6d8fa7" /></a></td>
<td>correct vscode MCP configuration for new projects</td>
</tr>
<tr>
<td><a
href="361758c75c"><img
src="https://img.shields.io/badge/361758c75-fix-green" alt="fix -
361758c75" /></a></td>
<td>remove special characters from jasmine-vitest report filename</td>
</tr>
</tbody>
</table>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="151b69587d"><img
src="https://img.shields.io/badge/151b69587-fix-green" alt="fix -
151b69587" /></a></td>
<td>Remove nonexistent link from MCP response</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="1b7e3307af"><img
src="https://img.shields.io/badge/1b7e3307a-fix-green" alt="fix -
1b7e3307a" /></a></td>
<td>allow application assets in workspace root</td>
</tr>
<tr>
<td><a
href="d1e596dc53"><img
src="https://img.shields.io/badge/d1e596dc5-fix-green" alt="fix -
d1e596dc5" /></a></td>
<td>prevent incorrect catch binding removal in downleveled
for-await</td>
</tr>
<tr>
<td><a
href="98ef0981a2"><img
src="https://img.shields.io/badge/98ef0981a-fix-green" alt="fix -
98ef0981a" /></a></td>
<td>update undici to v7.18.2</td>
</tr>
</tbody>
</table>
<h2>21.1.0</h2>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="36cf3afb48"><img
src="https://img.shields.io/badge/36cf3afb4-feat-blue" alt="feat -
36cf3afb4" /></a></td>
<td>add browserMode option to jasmine-vitest schematic</td>
</tr>
<tr>
<td><a
href="e71a72ffdc"><img
src="https://img.shields.io/badge/e71a72ffd-feat-blue" alt="feat -
e71a72ffd" /></a></td>
<td>generate detailed migration report for
<code>refactor-jasmine-vitest</code></td>
</tr>
<tr>
<td><a
href="18cf6c51b7"><img
src="https://img.shields.io/badge/18cf6c51b-fix-green" alt="fix -
18cf6c51b" /></a></td>
<td>add MCP configuration file to new workspaces</td>
</tr>
</tbody>
</table>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="772e6efe7a"><img
src="https://img.shields.io/badge/772e6efe7-feat-blue" alt="feat -
772e6efe7" /></a></td>
<td>add 'test' and 'e2e' MCP tools</td>
</tr>
<tr>
<td><a
href="8efb863184"><img
src="https://img.shields.io/badge/8efb86318-feat-blue" alt="feat -
8efb86318" /></a></td>
<td>Add "all" as an experimental tool group</td>
</tr>
<tr>
<td><a
href="c3c9ac5067"><img
src="https://img.shields.io/badge/c3c9ac506-feat-blue" alt="feat -
c3c9ac506" /></a></td>
<td>Add MCP tools for building and running devservers</td>
</tr>
<tr>
<td><a
href="d635a6c633"><img
src="https://img.shields.io/badge/d635a6c63-feat-blue" alt="feat -
d635a6c63" /></a></td>
<td>add signal forms lessons</td>
</tr>
<tr>
<td><a
href="d8b76e93d3"><img
src="https://img.shields.io/badge/d8b76e93d-fix-green" alt="fix -
d8b76e93d" /></a></td>
<td>correctly handle yarn classic tag manifest fetching</td>
</tr>
<tr>
<td><a
href="7ab5c0b0a1"><img
src="https://img.shields.io/badge/7ab5c0b0a-fix-green" alt="fix -
7ab5c0b0a" /></a></td>
<td>correctly spawn package managers on Windows in new abstraction</td>
</tr>
<tr>
<td><a
href="3480966233"><img
src="https://img.shields.io/badge/348096623-fix-green" alt="fix -
348096623" /></a></td>
<td>enhance list_projects MCP tool file system traversal and symlink
handling</td>
</tr>
<tr>
<td><a
href="316fca8626"><img
src="https://img.shields.io/badge/316fca862-fix-green" alt="fix -
316fca862" /></a></td>
<td>handle array output from npm view in manifest parser</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular-cli/blob/main/CHANGELOG.md"><code>@angular-devkit/build-angular</code>'s
changelog</a>.</em></p>
<blockquote>
<h1>21.1.2 (2026-01-28)</h1>
<h3><code>@angular-devkit/schematics-cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="e7458c81d6">e7458c81d</a></td>
<td>fix</td>
<td>Add boolean type inference for 'true' and 'false' string values in
argument parsing</td>
</tr>
</tbody>
</table>
<h3><code>@angular-devkit/architect</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="d66f1fe647">d66f1fe64</a></td>
<td>fix</td>
<td>Add boolean type inference for 'true' and 'false' string values in
argument parsing</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="80911af673">80911af67</a></td>
<td>fix</td>
<td>loosen Vitest dependency checks when runnerConfig is used</td>
</tr>
<tr>
<td><a
href="2d30639d3c">2d30639d3</a></td>
<td>fix</td>
<td>support merging coverage thresholds with Vitest runnerConfig</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>21.1.1 (2026-01-21)</h1>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="151b69587d">151b69587</a></td>
<td>fix</td>
<td>Remove nonexistent link from MCP response</td>
</tr>
</tbody>
</table>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="9da6d8fa76">9da6d8fa7</a></td>
<td>fix</td>
<td>correct vscode MCP configuration for new projects</td>
</tr>
<tr>
<td><a
href="361758c75c">361758c75</a></td>
<td>fix</td>
<td>remove special characters from jasmine-vitest report filename</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="1b7e3307af">1b7e3307a</a></td>
<td>fix</td>
<td>allow application assets in workspace root</td>
</tr>
<tr>
<td><a
href="d1e596dc53">d1e596dc5</a></td>
<td>fix</td>
<td>prevent incorrect catch binding removal in downleveled
for-await</td>
</tr>
<tr>
<td><a
href="98ef0981a2">98ef0981a</a></td>
<td>fix</td>
<td>update undici to v7.18.2</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="702d7170ea"><code>702d717</code></a>
release: cut the v21.1.2 release</li>
<li><a
href="d66f1fe647"><code>d66f1fe</code></a>
fix(<code>@angular-devkit/architect</code>): Add boolean type inference
for 'true' and 'fa...</li>
<li><a
href="e7458c81d6"><code>e7458c8</code></a>
fix(<code>@angular-devkit/schematics-cli</code>): Add boolean type
inference for 'true' an...</li>
<li><a
href="e974e404e5"><code>e974e40</code></a>
build: lock file maintenance</li>
<li><a
href="2d30639d3c"><code>2d30639</code></a>
fix(<code>@angular/build</code>): support merging coverage thresholds
with Vitest runnerCo...</li>
<li><a
href="80911af673"><code>80911af</code></a>
fix(<code>@angular/build</code>): loosen Vitest dependency checks when
runnerConfig is used</li>
<li><a
href="7cf1d3b8eb"><code>7cf1d3b</code></a>
build: update cross-repo angular dependencies</li>
<li><a
href="165e7d666e"><code>165e7d6</code></a>
build: update all github actions</li>
<li><a
href="8e7f86be91"><code>8e7f86b</code></a>
build: update bazel dependencies</li>
<li><a
href="3206b8b11c"><code>3206b8b</code></a>
build: update cross-repo angular dependencies</li>
<li>Additional commits viewable in <a
href="https://github.com/angular/angular-cli/compare/v20.3.15...v21.1.2">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) from 20.3.16 to 21.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@angular/animations</code>'s releases</a>.</em></p>
<blockquote>
<h2>21.1.1</h2>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="0e1f1ed573"><img src="https://img.shields.io/badge/0e1f1ed573-fix-green" alt="fix - 0e1f1ed573" /></a></td>
<td>drop .tsx extension for generated relative imports</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="05adfcf8f2"><img src="https://img.shields.io/badge/05adfcf8f2-fix-green" alt="fix - 05adfcf8f2" /></a></td>
<td>handle Set in class bindings</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d89a80a970"><img src="https://img.shields.io/badge/d89a80a970-feat-blue" alt="feat - d89a80a970" /></a></td>
<td>Ability to manually register a form field binding in signal forms</td>
</tr>
<tr>
<td><a href="cb75f9ce85"><img src="https://img.shields.io/badge/cb75f9ce85-fix-green" alt="fix - cb75f9ce85" /></a></td>
<td>fix control value syncing on touch</td>
</tr>
</tbody>
</table>
<h2>VSCode Extension: 21.1.1</h2>
<ul>
<li>fix(vscode-extension): add syntax highlighting for arrow functions (<a href="a649fc8f57">a649fc8f57</a>)</li>
<li>fix(vscode-extension): add syntax highlighting for spread/rest expressions (<a href="8f16846dd9">8f16846dd9</a>)</li>
</ul>
<h2>VSCode Extension: 21.1.0</h2>
<h2>21.1.0 (2026-01-12)</h2>
<ul>
<li>fix(vscode-extension): convert enum member kind in completions correctly (<a href="50674f8c28">50674f8c28</a>)</li>
</ul>
<h2>21.1.0</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be"><img src="https://img.shields.io/badge/d8790972be-feat-blue" alt="feat - d8790972be" /></a></td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af"><img src="https://img.shields.io/badge/a6b8cb68af-feat-blue" alt="feat - a6b8cb68af" /></a></td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e"><img src="https://img.shields.io/badge/640693da8e-feat-blue" alt="feat - 640693da8e" /></a></td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6"><img src="https://img.shields.io/badge/0ad3adc7c6-fix-green" alt="fix - 0ad3adc7c6" /></a></td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee"><img src="https://img.shields.io/badge/99ad18a4ee-feat-blue" alt="feat - 99ad18a4ee" /></a></td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86"><img src="https://img.shields.io/badge/a0dfa5fa86-feat-blue" alt="feat - a0dfa5fa86" /></a></td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9"><img src="https://img.shields.io/badge/6e18fa8bc9-feat-blue" alt="feat - 6e18fa8bc9" /></a></td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5"><img src="https://img.shields.io/badge/e407280ab5-feat-blue" alt="feat - e407280ab5" /></a></td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb"><img src="https://img.shields.io/badge/06be8034bb-fix-green" alt="fix - 06be8034bb" /></a></td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42"><img src="https://img.shields.io/badge/b4f584cf42-fix-green" alt="fix - b4f584cf42" /></a></td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703"><img src="https://img.shields.io/badge/1ea5c97703-feat-blue" alt="feat - 1ea5c97703" /></a></td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<p>| Commit | Description |</p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@angular/animations</code>'s changelog</a>.</em></p>
<blockquote>
<h1>21.1.1 (2026-01-21)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="0e1f1ed573">0e1f1ed573</a></td>
<td>fix</td>
<td>drop .tsx extension for generated relative imports</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="05adfcf8f2">05adfcf8f2</a></td>
<td>fix</td>
<td>handle Set in class bindings</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d89a80a970">d89a80a970</a></td>
<td>feat</td>
<td>Ability to manually register a form field binding in signal forms</td>
</tr>
<tr>
<td><a href="cb75f9ce85">cb75f9ce85</a></td>
<td>fix</td>
<td>fix control value syncing on touch</td>
</tr>
</tbody>
</table>
<h1>21.1.0 (2026-01-14)</h1>
<h2>Deprecations</h2>
<h3>upgrade</h3>
<ul>
<li><code>VERSION</code> from <code>@angular/upgrade</code> is deprecated. Please use the entry from <code>@angular/upgrade/static</code> instead.</li>
</ul>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be">d8790972be</a></td>
<td>feat</td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af">a6b8cb68af</a></td>
<td>feat</td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e">640693da8e</a></td>
<td>feat</td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6">0ad3adc7c6</a></td>
<td>fix</td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee">99ad18a4ee</a></td>
<td>feat</td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86">a0dfa5fa86</a></td>
<td>feat</td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9">6e18fa8bc9</a></td>
<td>feat</td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5">e407280ab5</a></td>
<td>feat</td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb">06be8034bb</a></td>
<td>fix</td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42">b4f584cf42</a></td>
<td>fix</td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703">1ea5c97703</a></td>
<td>feat</td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="ec9dc94cee">ec9dc94cee</a></td>
<td>feat</td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a href="ab67988d2e">ab67988d2e</a></td>
<td>feat</td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="abb179466d"><code>abb1794</code></a> refactor(core): mark VERSION exports as pure for better tree-shaking</li>
<li><a href="26fed34e0e"><code>26fed34</code></a> build: format md files</li>
<li><a href="b9e2ccdda8"><code>b9e2ccd</code></a> refactor(common): remove unused import (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699">#64699</a>)</li>
<li><a href="70332b0453"><code>70332b0</code></a> fix(core): pass element removal property through in all locations (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64565">#64565</a>)</li>
<li><a href="2b257b3659"><code>2b257b3</code></a> fix(animations): account for <code>Element.animate</code> exceptions (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64506">#64506</a>)</li>
<li><a href="dde5badb71"><code>dde5bad</code></a> fix(core): prevent animations renderer from impacting <code>animate.leave</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63921">#63921</a>)</li>
<li><a href="c3576506b3"><code>c357650</code></a> refactor(core): Update tests for zoneless by default (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63668">#63668</a>)</li>
<li><a href="021ead5399"><code>021ead5</code></a> refactor(animations): remove dependency on <code>@angular/common</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63248">#63248</a>)</li>
<li><a href="2fcafb65c5"><code>2fcafb6</code></a> build: rename defaults2.bzl to defaults.bzl (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63383">#63383</a>)</li>
<li>See full diff in <a href="https://github.com/angular/angular/commits/v21.1.1/packages/animations">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 20.3.16 to 21.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@angular/common</code>'s releases</a>.</em></p>
<blockquote>
<h2>21.1.1</h2>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="0e1f1ed573"><img src="https://img.shields.io/badge/0e1f1ed573-fix-green" alt="fix - 0e1f1ed573" /></a></td>
<td>drop .tsx extension for generated relative imports</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="05adfcf8f2"><img src="https://img.shields.io/badge/05adfcf8f2-fix-green" alt="fix - 05adfcf8f2" /></a></td>
<td>handle Set in class bindings</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d89a80a970"><img src="https://img.shields.io/badge/d89a80a970-feat-blue" alt="feat - d89a80a970" /></a></td>
<td>Ability to manually register a form field binding in signal forms</td>
</tr>
<tr>
<td><a href="cb75f9ce85"><img src="https://img.shields.io/badge/cb75f9ce85-fix-green" alt="fix - cb75f9ce85" /></a></td>
<td>fix control value syncing on touch</td>
</tr>
</tbody>
</table>
<h2>VSCode Extension: 21.1.1</h2>
<ul>
<li>fix(vscode-extension): add syntax highlighting for arrow functions (<a href="a649fc8f57">a649fc8f57</a>)</li>
<li>fix(vscode-extension): add syntax highlighting for spread/rest expressions (<a href="8f16846dd9">8f16846dd9</a>)</li>
</ul>
<h2>VSCode Extension: 21.1.0</h2>
<h2>21.1.0 (2026-01-12)</h2>
<ul>
<li>fix(vscode-extension): convert enum member kind in completions correctly (<a href="50674f8c28">50674f8c28</a>)</li>
</ul>
<h2>21.1.0</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be"><img src="https://img.shields.io/badge/d8790972be-feat-blue" alt="feat - d8790972be" /></a></td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af"><img src="https://img.shields.io/badge/a6b8cb68af-feat-blue" alt="feat - a6b8cb68af" /></a></td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e"><img src="https://img.shields.io/badge/640693da8e-feat-blue" alt="feat - 640693da8e" /></a></td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6"><img src="https://img.shields.io/badge/0ad3adc7c6-fix-green" alt="fix - 0ad3adc7c6" /></a></td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee"><img src="https://img.shields.io/badge/99ad18a4ee-feat-blue" alt="feat - 99ad18a4ee" /></a></td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86"><img src="https://img.shields.io/badge/a0dfa5fa86-feat-blue" alt="feat - a0dfa5fa86" /></a></td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9"><img src="https://img.shields.io/badge/6e18fa8bc9-feat-blue" alt="feat - 6e18fa8bc9" /></a></td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5"><img src="https://img.shields.io/badge/e407280ab5-feat-blue" alt="feat - e407280ab5" /></a></td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb"><img src="https://img.shields.io/badge/06be8034bb-fix-green" alt="fix - 06be8034bb" /></a></td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42"><img src="https://img.shields.io/badge/b4f584cf42-fix-green" alt="fix - b4f584cf42" /></a></td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703"><img src="https://img.shields.io/badge/1ea5c97703-feat-blue" alt="feat - 1ea5c97703" /></a></td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<p>| Commit | Description |</p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@angular/common</code>'s changelog</a>.</em></p>
<blockquote>
<h1>21.1.1 (2026-01-21)</h1>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="0e1f1ed573">0e1f1ed573</a></td>
<td>fix</td>
<td>drop .tsx extension for generated relative imports</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="05adfcf8f2">05adfcf8f2</a></td>
<td>fix</td>
<td>handle Set in class bindings</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d89a80a970">d89a80a970</a></td>
<td>feat</td>
<td>Ability to manually register a form field binding in signal forms</td>
</tr>
<tr>
<td><a href="cb75f9ce85">cb75f9ce85</a></td>
<td>fix</td>
<td>fix control value syncing on touch</td>
</tr>
</tbody>
</table>
<h1>21.1.0 (2026-01-14)</h1>
<h2>Deprecations</h2>
<h3>upgrade</h3>
<ul>
<li><code>VERSION</code> from <code>@angular/upgrade</code> is deprecated. Please use the entry from <code>@angular/upgrade/static</code> instead.</li>
</ul>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be">d8790972be</a></td>
<td>feat</td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af">a6b8cb68af</a></td>
<td>feat</td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e">640693da8e</a></td>
<td>feat</td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6">0ad3adc7c6</a></td>
<td>fix</td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee">99ad18a4ee</a></td>
<td>feat</td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86">a0dfa5fa86</a></td>
<td>feat</td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9">6e18fa8bc9</a></td>
<td>feat</td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5">e407280ab5</a></td>
<td>feat</td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb">06be8034bb</a></td>
<td>fix</td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42">b4f584cf42</a></td>
<td>fix</td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703">1ea5c97703</a></td>
<td>feat</td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="ec9dc94cee">ec9dc94cee</a></td>
<td>feat</td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a href="ab67988d2e">ab67988d2e</a></td>
<td>feat</td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3954dc278b"><code>3954dc2</code></a> refactor(http): remove redundant providedIn: 'root' in XSRF_HEADER_NAME</li>
<li><a href="03e2b36826"><code>03e2b36</code></a> refactor(core): update error message links to versioned docs (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/66374">#66374</a>)</li>
<li><a href="74af7d85e5"><code>74af7d8</code></a> refactor(core): Use the provided Document value rather than global in FakeNav...</li>
<li><a href="a2b9429992"><code>a2b9429</code></a> Revert "feat(router): add trailingSlash config option"</li>
<li><a href="12fccc5e99"><code>12fccc5</code></a> feat(router): add trailingSlash config option</li>
<li><a href="3dfdb71d65"><code>3dfdb71</code></a> docs: add docs for transform property in built-in loaders</li>
<li><a href="dd58c4b667"><code>dd58c4b</code></a> refactor(common): Add token to indicate whether precommit handler is supported</li>
<li><a href="a6b8cb68af"><code>a6b8cb6</code></a> feat(common): support custom transformations in ImageKit and Imgix loaders</li>
<li><a href="d8790972be"><code>d879097</code></a> feat(common): Add custom transformations for Cloudflare and Cloudinary image ...</li>
<li><a href="6270bba056"><code>6270bba</code></a> ci: reformat files</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/v21.1.1/packages/common">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 20.3.16 to 21.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@angular/compiler</code>'s releases</a>.</em></p>
<blockquote>
<h2>VSCode Extension: 21.1.0</h2>
<h2>21.1.0 (2026-01-12)</h2>
<ul>
<li>fix(vscode-extension): convert enum member kind in completions correctly (<a href="50674f8c28">50674f8c28</a>)</li>
</ul>
<h2>21.1.0</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be"><img src="https://img.shields.io/badge/d8790972be-feat-blue" alt="feat - d8790972be" /></a></td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af"><img src="https://img.shields.io/badge/a6b8cb68af-feat-blue" alt="feat - a6b8cb68af" /></a></td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e"><img src="https://img.shields.io/badge/640693da8e-feat-blue" alt="feat - 640693da8e" /></a></td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6"><img src="https://img.shields.io/badge/0ad3adc7c6-fix-green" alt="fix - 0ad3adc7c6" /></a></td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee"><img src="https://img.shields.io/badge/99ad18a4ee-feat-blue" alt="feat - 99ad18a4ee" /></a></td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86"><img src="https://img.shields.io/badge/a0dfa5fa86-feat-blue" alt="feat - a0dfa5fa86" /></a></td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9"><img src="https://img.shields.io/badge/6e18fa8bc9-feat-blue" alt="feat - 6e18fa8bc9" /></a></td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5"><img src="https://img.shields.io/badge/e407280ab5-feat-blue" alt="feat - e407280ab5" /></a></td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb"><img src="https://img.shields.io/badge/06be8034bb-fix-green" alt="fix - 06be8034bb" /></a></td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42"><img src="https://img.shields.io/badge/b4f584cf42-fix-green" alt="fix - b4f584cf42" /></a></td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703"><img src="https://img.shields.io/badge/1ea5c97703-feat-blue" alt="feat - 1ea5c97703" /></a></td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="ec9dc94cee"><img src="https://img.shields.io/badge/ec9dc94cee-feat-blue" alt="feat - ec9dc94cee" /></a></td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a href="ab67988d2e"><img src="https://img.shields.io/badge/ab67988d2e-feat-blue" alt="feat - ab67988d2e" /></a></td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5edceffd04"><img src="https://img.shields.io/badge/5edceffd04-feat-blue" alt="feat - 5edceffd04" /></a></td>
<td>add controls for route cleanup</td>
</tr>
<tr>
<td><a href="a03c82564d"><img src="https://img.shields.io/badge/a03c82564d-feat-blue" alt="feat - a03c82564d" /></a></td>
<td>Add scroll behavior controls on router navigation</td>
</tr>
<tr>
<td><a href="e44839b016"><img src="https://img.shields.io/badge/e44839b016-feat-blue" alt="feat - e44839b016" /></a></td>
<td>Add standalone function to create a comptued for isActive</td>
</tr>
<tr>
<td><a href="c25d749d85"><img src="https://img.shields.io/badge/c25d749d85-feat-blue" alt="feat - c25d749d85" /></a></td>
<td>Execute RunGuardsAndResolvers function in injection context</td>
</tr>
<tr>
<td><a href="1c00ab42f8"><img src="https://img.shields.io/badge/1c00ab42f8-feat-blue" alt="feat - 1c00ab42f8" /></a></td>
<td>extend paramters of RedirectFunction to include paramMap and queryParamMap</td>
</tr>
<tr>
<td><a href="7003e8d241"><img src="https://img.shields.io/badge/7003e8d241-feat-blue" alt="feat - 7003e8d241" /></a></td>
<td>Publish Router's integration with platform Navigation API as experimental</td>
</tr>
<tr>
<td><a href="c84d372778"><img src="https://img.shields.io/badge/c84d372778-feat-blue" alt="feat - c84d372778" /></a></td>
<td>Support wildcard params with segments trailing (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/64737">#64737</a>)</td>
</tr>
</tbody>
</table>
<h3>upgrade</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="75fe8f8af9"><img src="https://img.shields.io/badge/75fe8f8af9-refactor-yellow" alt="refactor - 75fe8f8af9" /></a></td>
<td>deprecate <code>VERSION</code> export</td>
</tr>
</tbody>
</table>
<h2>Deprecations</h2>
<h3>upgrade</h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@angular/compiler</code>'s changelog</a>.</em></p>
<blockquote>
<h1>21.1.0 (2026-01-14)</h1>
<h2>Deprecations</h2>
<h3>upgrade</h3>
<ul>
<li><code>VERSION</code> from <code>@angular/upgrade</code> is deprecated. Please use the entry from <code>@angular/upgrade/static</code> instead.</li>
</ul>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be">d8790972be</a></td>
<td>feat</td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af">a6b8cb68af</a></td>
<td>feat</td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e">640693da8e</a></td>
<td>feat</td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6">0ad3adc7c6</a></td>
<td>fix</td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee">99ad18a4ee</a></td>
<td>feat</td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86">a0dfa5fa86</a></td>
<td>feat</td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9">6e18fa8bc9</a></td>
<td>feat</td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5">e407280ab5</a></td>
<td>feat</td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb">06be8034bb</a></td>
<td>fix</td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42">b4f584cf42</a></td>
<td>fix</td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703">1ea5c97703</a></td>
<td>feat</td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="ec9dc94cee">ec9dc94cee</a></td>
<td>feat</td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a href="ab67988d2e">ab67988d2e</a></td>
<td>feat</td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5edceffd04">5edceffd04</a></td>
<td>feat</td>
<td>add controls for route cleanup</td>
</tr>
<tr>
<td><a href="a03c82564d">a03c82564d</a></td>
<td>feat</td>
<td>Add scroll behavior controls on router navigation</td>
</tr>
<tr>
<td><a href="e44839b016">e44839b016</a></td>
<td>feat</td>
<td>Add standalone function to create a comptued for isActive</td>
</tr>
<tr>
<td><a href="c25d749d85">c25d749d85</a></td>
<td>feat</td>
<td>Execute RunGuardsAndResolvers function in injection context</td>
</tr>
<tr>
<td><a href="1c00ab42f8">1c00ab42f8</a></td>
<td>feat</td>
<td>extend paramters of RedirectFunction to include paramMap and queryParamMap</td>
</tr>
<tr>
<td><a href="7003e8d241">7003e8d241</a></td>
<td>feat</td>
<td>Publish Router's integration with platform Navigation API as experimental</td>
</tr>
<tr>
<td><a href="c84d372778">c84d372778</a></td>
<td>feat</td>
<td>Support wildcard params with segments trailing (<a href="https://redirect.github.com/angular/angular/pull/64737">#64737</a>)</td>
</tr>
</tbody>
</table>
<h3>upgrade</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="75fe8f8af9">75fe8f8af9</a></td>
<td>refactor</td>
<td>deprecate <code>VERSION</code> export</td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="532633301b"><code>5326333</code></a> fix(forms): Ensure the control instruction comes after the other bindings</li>
<li><a href="29f074a93f"><code>29f074a</code></a> fix(forms): Rename signal form [field] to [formField]</li>
<li><a href="0875deab8d"><code>0875dea</code></a> refactor(compiler): switch <code>Binary.isAssignmentOperation</code> to type guard function</li>
<li><a href="83bac5adc9"><code>83bac5a</code></a> refactor(compiler): tighten <code>Unary.operator</code> type</li>
<li><a href="e01dcae4c5"><code>e01dcae</code></a> refactor: <code>_ParseAST.isAssignmentOperator</code> to type guard</li>
<li><a href="4cdf4d5760"><code>4cdf4d5</code></a> refactor(compiler): tighten <code>Binary.operation</code> type</li>
<li><a href="0ad3adc7c6"><code>0ad3adc</code></a> fix(compiler): Support empty cases</li>
<li><a href="4dc5ae54a9"><code>4dc5ae5</code></a> refactor(core): remove unused instruction parameter</li>
<li><a href="3a56c1367f"><code>3a56c13</code></a> fix(compiler): produce accurate span for typeof and void expressions</li>
<li><a href="a0dfa5fa86"><code>a0dfa5f</code></a> feat(core): support rest arguments in function calls</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/v21.1.0/packages/compiler">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 20.3.16 to 21.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@angular/forms</code>'s releases</a>.</em></p>
<blockquote>
<h2>VSCode Extension: 21.1.0</h2>
<h2>21.1.0 (2026-01-12)</h2>
<ul>
<li>fix(vscode-extension): convert enum member kind in completions correctly (<a href="50674f8c28">50674f8c28</a>)</li>
</ul>
<h2>21.1.0</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be"><img src="https://img.shields.io/badge/d8790972be-feat-blue" alt="feat - d8790972be" /></a></td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af"><img src="https://img.shields.io/badge/a6b8cb68af-feat-blue" alt="feat - a6b8cb68af" /></a></td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e"><img src="https://img.shields.io/badge/640693da8e-feat-blue" alt="feat - 640693da8e" /></a></td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6"><img src="https://img.shields.io/badge/0ad3adc7c6-fix-green" alt="fix - 0ad3adc7c6" /></a></td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee"><img src="https://img.shields.io/badge/99ad18a4ee-feat-blue" alt="feat - 99ad18a4ee" /></a></td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86"><img src="https://img.shields.io/badge/a0dfa5fa86-feat-blue" alt="feat - a0dfa5fa86" /></a></td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9"><img src="https://img.shields.io/badge/6e18fa8bc9-feat-blue" alt="feat - 6e18fa8bc9" /></a></td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5"><img src="https://img.shields.io/badge/e407280ab5-feat-blue" alt="feat - e407280ab5" /></a></td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb"><img src="https://img.shields.io/badge/06be8034bb-fix-green" alt="fix - 06be8034bb" /></a></td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42"><img src="https://img.shields.io/badge/b4f584cf42-fix-green" alt="fix - b4f584cf42" /></a></td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703"><img src="https://img.shields.io/badge/1ea5c97703-feat-blue" alt="feat - 1ea5c97703" /></a></td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="ec9dc94cee"><img src="https://img.shields.io/badge/ec9dc94cee-feat-blue" alt="feat - ec9dc94cee" /></a></td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a href="ab67988d2e"><img src="https://img.shields.io/badge/ab67988d2e-feat-blue" alt="feat - ab67988d2e" /></a></td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5edceffd04"><img src="https://img.shields.io/badge/5edceffd04-feat-blue" alt="feat - 5edceffd04" /></a></td>
<td>add controls for route cleanup</td>
</tr>
<tr>
<td><a href="a03c82564d"><img src="https://img.shields.io/badge/a03c82564d-feat-blue" alt="feat - a03c82564d" /></a></td>
<td>Add scroll behavior controls on router navigation</td>
</tr>
<tr>
<td><a href="e44839b016"><img src="https://img.shields.io/badge/e44839b016-feat-blue" alt="feat - e44839b016" /></a></td>
<td>Add standalone function to create a comptued for isActive</td>
</tr>
<tr>
<td><a href="c25d749d85"><img src="https://img.shields.io/badge/c25d749d85-feat-blue" alt="feat - c25d749d85" /></a></td>
<td>Execute RunGuardsAndResolvers function in injection context</td>
</tr>
<tr>
<td><a href="1c00ab42f8"><img src="https://img.shields.io/badge/1c00ab42f8-feat-blue" alt="feat - 1c00ab42f8" /></a></td>
<td>extend paramters of RedirectFunction to include paramMap and queryParamMap</td>
</tr>
<tr>
<td><a href="7003e8d241"><img src="https://img.shields.io/badge/7003e8d241-feat-blue" alt="feat - 7003e8d241" /></a></td>
<td>Publish Router's integration with platform Navigation API as experimental</td>
</tr>
<tr>
<td><a href="c84d372778"><img src="https://img.shields.io/badge/c84d372778-feat-blue" alt="feat - c84d372778" /></a></td>
<td>Support wildcard params with segments trailing (<a href="https://github.com/angular/angular/tree/HEAD/packages/forms/issues/64737">#64737</a>)</td>
</tr>
</tbody>
</table>
<h3>upgrade</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="75fe8f8af9"><img src="https://img.shields.io/badge/75fe8f8af9-refactor-yellow" alt="refactor - 75fe8f8af9" /></a></td>
<td>deprecate <code>VERSION</code> export</td>
</tr>
</tbody>
</table>
<h2>Deprecations</h2>
<h3>upgrade</h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@angular/forms</code>'s changelog</a>.</em></p>
<blockquote>
<h1>21.1.0 (2026-01-14)</h1>
<h2>Deprecations</h2>
<h3>upgrade</h3>
<ul>
<li><code>VERSION</code> from <code>@angular/upgrade</code> is deprecated. Please use the entry from <code>@angular/upgrade/static</code> instead.</li>
</ul>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be">d8790972be</a></td>
<td>feat</td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af">a6b8cb68af</a></td>
<td>feat</td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e">640693da8e</a></td>
<td>feat</td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6">0ad3adc7c6</a></td>
<td>fix</td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee">99ad18a4ee</a></td>
<td>feat</td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86">a0dfa5fa86</a></td>
<td>feat</td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9">6e18fa8bc9</a></td>
<td>feat</td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5">e407280ab5</a></td>
<td>feat</td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb">06be8034bb</a></td>
<td>fix</td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42">b4f584cf42</a></td>
<td>fix</td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703">1ea5c97703</a></td>
<td>feat</td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="ec9dc94cee">ec9dc94cee</a></td>
<td>feat</td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a href="ab67988d2e">ab67988d2e</a></td>
<td>feat</td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5edceffd04">5edceffd04</a></td>
<td>feat</td>
<td>add controls for route cleanup</td>
</tr>
<tr>
<td><a href="a03c82564d">a03c82564d</a></td>
<td>feat</td>
<td>Add scroll behavior controls on router navigation</td>
</tr>
<tr>
<td><a href="e44839b016">e44839b016</a></td>
<td>feat</td>
<td>Add standalone function to create a comptued for isActive</td>
</tr>
<tr>
<td><a href="c25d749d85">c25d749d85</a></td>
<td>feat</td>
<td>Execute RunGuardsAndResolvers function in injection context</td>
</tr>
<tr>
<td><a href="1c00ab42f8">1c00ab42f8</a></td>
<td>feat</td>
<td>extend paramters of RedirectFunction to include paramMap and queryParamMap</td>
</tr>
<tr>
<td><a href="7003e8d241">7003e8d241</a></td>
<td>feat</td>
<td>Publish Router's integration with platform Navigation API as experimental</td>
</tr>
<tr>
<td><a href="c84d372778">c84d372778</a></td>
<td>feat</td>
<td>Support wildcard params with segments trailing (<a href="https://redirect.github.com/angular/angular/pull/64737">#64737</a>)</td>
</tr>
</tbody>
</table>
<h3>upgrade</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="75fe8f8af9">75fe8f8af9</a></td>
<td>refactor</td>
<td>deprecate <code>VERSION</code> export</td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="1ea5c97703"><code>1ea5c97</code></a> feat(forms): allow focusing bound control from field state</li>
<li><a href="532633301b"><code>5326333</code></a> fix(forms): Ensure the control instruction comes after the other bindings</li>
<li><a href="8474277b49"><code>8474277</code></a> test(forms): improve test coverage for multiple pattern validators</li>
<li><a href="5ad2e1bae0"><code>5ad2e1b</code></a> docs: replace old <a href="https://angular.io/license">https://angular.io/license</a> with <a href="https://angular.dev/license">https://angular.dev/license</a></li>
<li><a href="03e2b36826"><code>03e2b36</code></a> refactor(core): update error message links to versioned docs (<a href="https://github.com/angular/angular/tree/HEAD/packages/forms/issues/66374">#66374</a>)</li>
<li><a href="29f074a93f"><code>29f074a</code></a> fix(forms): Rename signal form [field] to [formField]</li>
<li><a href="0c23d02944"><code>0c23d02</code></a> docs(forms): Clarify returning errors from submit functions</li>
<li><a href="46dbd18566"><code>46dbd18</code></a> refactor(forms): remove <code>customError()</code></li>
<li><a href="b2f417585a"><code>b2f4175</code></a> docs: update angular.io links to angular.dev in comments, TSDoc, and warnings</li>
<li><a href="e7d99f02cb"><code>e7d99f0</code></a> fix(forms): clean up abort listener after timeout</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/v21.1.0/packages/forms">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) from 20.3.16 to 21.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@angular/router</code>'s releases</a>.</em></p>
<blockquote>
<h2>VSCode Extension: 21.1.0</h2>
<h2>21.1.0 (2026-01-12)</h2>
<ul>
<li>fix(vscode-extension): convert enum member kind in completions correctly (<a href="50674f8c28">50674f8c28</a>)</li>
</ul>
<h2>21.1.0</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be"><img src="https://img.shields.io/badge/d8790972be-feat-blue" alt="feat - d8790972be" /></a></td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af"><img src="https://img.shields.io/badge/a6b8cb68af-feat-blue" alt="feat - a6b8cb68af" /></a></td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e"><img src="https://img.shields.io/badge/640693da8e-feat-blue" alt="feat - 640693da8e" /></a></td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6"><img src="https://img.shields.io/badge/0ad3adc7c6-fix-green" alt="fix - 0ad3adc7c6" /></a></td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee"><img src="https://img.shields.io/badge/99ad18a4ee-feat-blue" alt="feat - 99ad18a4ee" /></a></td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86"><img src="https://img.shields.io/badge/a0dfa5fa86-feat-blue" alt="feat - a0dfa5fa86" /></a></td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9"><img src="https://img.shields.io/badge/6e18fa8bc9-feat-blue" alt="feat - 6e18fa8bc9" /></a></td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5"><img src="https://img.shields.io/badge/e407280ab5-feat-blue" alt="feat - e407280ab5" /></a></td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb"><img src="https://img.shields.io/badge/06be8034bb-fix-green" alt="fix - 06be8034bb" /></a></td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42"><img src="https://img.shields.io/badge/b4f584cf42-fix-green" alt="fix - b4f584cf42" /></a></td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703"><img src="https://img.shields.io/badge/1ea5c97703-feat-blue" alt="feat - 1ea5c97703" /></a></td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="ec9dc94cee"><img src="https://img.shields.io/badge/ec9dc94cee-feat-blue" alt="feat - ec9dc94cee" /></a></td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a href="ab67988d2e"><img src="https://img.shields.io/badge/ab67988d2e-feat-blue" alt="feat - ab67988d2e" /></a></td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5edceffd04"><img src="https://img.shields.io/badge/5edceffd04-feat-blue" alt="feat - 5edceffd04" /></a></td>
<td>add controls for route cleanup</td>
</tr>
<tr>
<td><a href="a03c82564d"><img src="https://img.shields.io/badge/a03c82564d-feat-blue" alt="feat - a03c82564d" /></a></td>
<td>Add scroll behavior controls on router navigation</td>
</tr>
<tr>
<td><a href="e44839b016"><img src="https://img.shields.io/badge/e44839b016-feat-blue" alt="feat - e44839b016" /></a></td>
<td>Add standalone function to create a comptued for isActive</td>
</tr>
<tr>
<td><a href="c25d749d85"><img src="https://img.shields.io/badge/c25d749d85-feat-blue" alt="feat - c25d749d85" /></a></td>
<td>Execute RunGuardsAndResolvers function in injection context</td>
</tr>
<tr>
<td><a href="1c00ab42f8"><img src="https://img.shields.io/badge/1c00ab42f8-feat-blue" alt="feat - 1c00ab42f8" /></a></td>
<td>extend paramters of RedirectFunction to include paramMap and queryParamMap</td>
</tr>
<tr>
<td><a href="7003e8d241"><img src="https://img.shields.io/badge/7003e8d241-feat-blue" alt="feat - 7003e8d241" /></a></td>
<td>Publish Router's integration with platform Navigation API as experimental</td>
</tr>
<tr>
<td><a href="c84d372778"><img src="https://img.shields.io/badge/c84d372778-feat-blue" alt="feat - c84d372778" /></a></td>
<td>Support wildcard params with segments trailing (<a href="https://github.com/angular/angular/tree/HEAD/packages/router/issues/64737">#64737</a>)</td>
</tr>
</tbody>
</table>
<h3>upgrade</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="75fe8f8af9"><img src="https://img.shields.io/badge/75fe8f8af9-refactor-yellow" alt="refactor - 75fe8f8af9" /></a></td>
<td>deprecate <code>VERSION</code> export</td>
</tr>
</tbody>
</table>
<h2>Deprecations</h2>
<h3>upgrade</h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@angular/router</code>'s changelog</a>.</em></p>
<blockquote>
<h1>21.1.0 (2026-01-14)</h1>
<h2>Deprecations</h2>
<h3>upgrade</h3>
<ul>
<li><code>VERSION</code> from <code>@angular/upgrade</code> is deprecated. Please use the entry from <code>@angular/upgrade/static</code> instead.</li>
</ul>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="d8790972be">d8790972be</a></td>
<td>feat</td>
<td>Add custom transformations for Cloudflare and Cloudinary image loaders</td>
</tr>
<tr>
<td><a href="a6b8cb68af">a6b8cb68af</a></td>
<td>feat</td>
<td>support custom transformations in ImageKit and Imgix loaders</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="640693da8e">640693da8e</a></td>
<td>feat</td>
<td>Add support for multiple swich cases matching</td>
</tr>
<tr>
<td><a href="0ad3adc7c6">0ad3adc7c6</a></td>
<td>fix</td>
<td>Support empty cases</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="99ad18a4ee">99ad18a4ee</a></td>
<td>feat</td>
<td>Add stability debugging utility</td>
</tr>
<tr>
<td><a href="a0dfa5fa86">a0dfa5fa86</a></td>
<td>feat</td>
<td>support rest arguments in function calls</td>
</tr>
<tr>
<td><a href="6e18fa8bc9">6e18fa8bc9</a></td>
<td>feat</td>
<td>support spread elements in array literals</td>
</tr>
<tr>
<td><a href="e407280ab5">e407280ab5</a></td>
<td>feat</td>
<td>support spread expressions in object literals</td>
</tr>
<tr>
<td><a href="06be8034bb">06be8034bb</a></td>
<td>fix</td>
<td>Microtask scheduling should be used after any application synchronization</td>
</tr>
<tr>
<td><a href="b4f584cf42">b4f584cf42</a></td>
<td>fix</td>
<td>return <code>StaticProvider</code> for <code>providePlatformInitializer</code></td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1ea5c97703">1ea5c97703</a></td>
<td>feat</td>
<td>allow focusing bound control from field state</td>
</tr>
</tbody>
</table>
<h3>platform-browser</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="ec9dc94cee">ec9dc94cee</a></td>
<td>feat</td>
<td>add <code>context</code> to <code>createApplication</code></td>
</tr>
<tr>
<td><a href="ab67988d2e">ab67988d2e</a></td>
<td>feat</td>
<td>resolve JIT resources in <code>createApplication</code></td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="5edceffd04">5edceffd04</a></td>
<td>feat</td>
<td>add controls for route cleanup</td>
</tr>
<tr>
<td><a href="a03c82564d">a03c82564d</a></td>
<td>feat</td>
<td>Add scroll behavior controls on router navigation</td>
</tr>
<tr>
<td><a href="e44839b016">e44839b016</a></td>
<td>feat</td>
<td>Add standalone function to create a comptued for isActive</td>
</tr>
<tr>
<td><a href="c25d749d85">c25d749d85</a></td>
<td>feat</td>
<td>Execute RunGuardsAndResolvers function in injection context</td>
</tr>
<tr>
<td><a href="1c00ab42f8">1c00ab42f8</a></td>
<td>feat</td>
<td>extend paramters of RedirectFunction to include paramMap and queryParamMap</td>
</tr>
<tr>
<td><a href="7003e8d241">7003e8d241</a></td>
<td>feat</td>
<td>Publish Router's integration with platform Navigation API as experimental</td>
</tr>
<tr>
<td><a href="c84d372778">c84d372778</a></td>
<td>feat</td>
<td>Support wildcard params with segments trailing (<a href="https://redirect.github.com/angular/angular/pull/64737">#64737</a>)</td>
</tr>
</tbody>
</table>
<h3>upgrade</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="75fe8f8af9">75fe8f8af9</a></td>
<td>refactor</td>
<td>deprecate <code>VERSION</code> export</td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b1c68e66a7"><code>b1c68e6</code></a> docs: update examples to use <code>isActive</code> instead of deprecated `Router.isActiv...</li>
<li><a href="a2b9429992"><code>a2b9429</code></a> Revert "feat(router): add trailingSlash config option"</li>
<li><a href="12fccc5e99"><code>12fccc5</code></a> feat(router): add trailingSlash config option</li>
<li><a href="7003e8d241"><code>7003e8d</code></a> feat(router): Publish Router's integration with platform Navigation API as ex...</li>
<li><a href="9e043decaf"><code>9e043de</code></a> fix(router): handle errors from view transition <code>updateCallbackDone</code> promise</li>
<li><a href="bcef77d950"><code>bcef77d</code></a> fix(router): Fix RouterLink href not updating with <code>queryParamsHandling</code></li>
<li><a href="1c00ab42f8"><code>1c00ab4</code></a> feat(router): extend paramters of RedirectFunction to include paramMap and qu...</li>
<li><a href="97fd1de0ac"><code>97fd1de</code></a> Revert "refactor(router): Add support for precommitHandler in Navigation inte...</li>
<li><a href="397dbc4c37"><code>397dbc4</code></a> Revert "refactor(router): Retain original navigateEvent across redirects"</li>
<li><a href="e44839b016"><code>e44839b</code></a> feat(router): Add standalone function to create a comptued for isActive</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/v21.1.0/packages/router">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 19.0.7 to 20.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular-cli/releases"><code>@angular/cli</code>'s releases</a>.</em></p>
<blockquote>
<h2>20.1.0</h2>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1c19e0dcd4"><img src="https://img.shields.io/badge/1c19e0dcd-feat-blue" alt="feat - 1c19e0dcd" /></a></td>
<td>use signal in app component</td>
</tr>
</tbody>
</table>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="dc45c186ec"><img src="https://img.shields.io/badge/dc45c186e-feat-blue" alt="feat - dc45c186e" /></a></td>
<td>add initial MCP server implementation</td>
</tr>
</tbody>
</table>
<h3><code>@angular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="49a09737d5"><img src="https://img.shields.io/badge/49a09737d-feat-blue" alt="feat - 49a09737d" /></a></td>
<td>provide partial custom postcss configuration support</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1159cf0810"><img src="https://img.shields.io/badge/1159cf081-feat-blue" alt="feat - 1159cf081" /></a></td>
<td>add code coverage reporters option for unit-test</td>
</tr>
<tr>
<td><a href="8f305ef0ba"><img src="https://img.shields.io/badge/8f305ef0b-feat-blue" alt="feat - 8f305ef0b" /></a></td>
<td>add dataurl, base64 loaders</td>
</tr>
<tr>
<td><a href="adfeee0a4c"><img src="https://img.shields.io/badge/adfeee0a4-fix-green" alt="fix - adfeee0a4" /></a></td>
<td>adjust coverage includes/excludes for unit-test vitest runner</td>
</tr>
<tr>
<td><a href="c19cd2985c"><img src="https://img.shields.io/badge/c19cd2985-fix-green" alt="fix - c19cd2985" /></a></td>
<td>coverage reporter option</td>
</tr>
<tr>
<td><a href="8879716cac"><img src="https://img.shields.io/badge/8879716ca-fix-green" alt="fix - 8879716ca" /></a></td>
<td>expose unit test and karma builder API</td>
</tr>
<tr>
<td><a href="a415a4999f"><img src="https://img.shields.io/badge/a415a4999-fix-green" alt="fix - a415a4999" /></a></td>
<td>improve default coverage reporter handling for vitest</td>
</tr>
<tr>
<td><a href="e0de8680d1"><img src="https://img.shields.io/badge/e0de8680d-fix-green" alt="fix - e0de8680d" /></a></td>
<td>inject zone.js/testing before karma builder execution</td>
</tr>
<tr>
<td><a href="2672f6ec17"><img src="https://img.shields.io/badge/2672f6ec1-fix-green" alt="fix - 2672f6ec1" /></a></td>
<td>json and json-summary as vitest coverage reporters</td>
</tr>
<tr>
<td><a href="b67fdfd6bc"><img src="https://img.shields.io/badge/b67fdfd6b-fix-green" alt="fix - b67fdfd6b" /></a></td>
<td>resolve "Controller is already closed" error in Karma</td>
</tr>
<tr>
<td><a href="2784883ecf"><img src="https://img.shields.io/badge/2784883ec-fix-green" alt="fix - 2784883ec" /></a></td>
<td>support extra test setup files with unit-test vitest runner</td>
</tr>
<tr>
<td><a href="f177f5508a"><img src="https://img.shields.io/badge/f177f5508-fix-green" alt="fix - f177f5508" /></a></td>
<td>support injecting global styles into vitest unit-tests</td>
</tr>
<tr>
<td><a href="130c650146"><img src="https://img.shields.io/badge/130c65014-fix-green" alt="fix - 130c65014" /></a></td>
<td>use an empty array as default value for vitest exclude</td>
</tr>
<tr>
<td><a href="917af12aeb"><img src="https://img.shields.io/badge/917af12ae-fix-green" alt="fix - 917af12ae" /></a></td>
<td>use date/time based output path for vitest unit-test</td>
</tr>
</tbody>
</table>
<h3><code>@angular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="21b5852f12"><img src="https://img.shields.io/badge/21b5852f1-fix-green" alt="fix - 21b5852f1" /></a></td>
<td>ensure <code>loadChildren</code> runs in correct injection context during route extraction</td>
</tr>
</tbody>
</table>
<h2>20.1.0-rc.0</h2>
<h3><code>@angular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="f1d41b069d"><img src="https://img.shields.io/badge/f1d41b069-fix-green" alt="fix - f1d41b069" /></a></td>
<td>remove unused <code>@vitejs/plugin-basic-ssl</code> dependency</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="73f57f3c9e"><img src="https://img.shields.io/badge/73f57f3c9-fix-green" alt="fix - 73f57f3c9" /></a></td>
<td>proxy karma request from <code>/</code> to <code>/base</code></td>
</tr>
</tbody>
</table>
<h2>20.1.0-next.3</h2>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="4221a33cc7"><img src="https://img.shields.io/badge/4221a33cc-fix-green" alt="fix - 4221a33cc" /></a></td>
<td>add missing prettier config</td>
</tr>
</tbody>
</table>
<h3><code>@angular/cli</code></h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular-cli/blob/main/CHANGELOG.md"><code>@angular/cli</code>'s changelog</a>.</em></p>
<blockquote>
<h1>20.1.0 (2025-07-09)</h1>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="dc45c186ec">dc45c186e</a></td>
<td>feat</td>
<td>add initial MCP server implementation</td>
</tr>
</tbody>
</table>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1c19e0dcd4">1c19e0dcd</a></td>
<td>feat</td>
<td>use signal in app component</td>
</tr>
</tbody>
</table>
<h3><code>@angular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="49a09737d5">49a09737d</a></td>
<td>feat</td>
<td>provide partial custom postcss configuration support</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="1159cf0810">1159cf081</a></td>
<td>feat</td>
<td>add code coverage reporters option for unit-test</td>
</tr>
<tr>
<td><a href="8f305ef0ba">8f305ef0b</a></td>
<td>feat</td>
<td>add dataurl, base64 loaders</td>
</tr>
<tr>
<td><a href="adfeee0a4c">adfeee0a4</a></td>
<td>fix</td>
<td>adjust coverage includes/excludes for unit-test vitest runner</td>
</tr>
<tr>
<td><a href="c19cd2985c">c19cd2985</a></td>
<td>fix</td>
<td>coverage reporter option</td>
</tr>
<tr>
<td><a href="8879716cac">8879716ca</a></td>
<td>fix</td>
<td>expose unit test and karma builder API</td>
</tr>
<tr>
<td><a href="a415a4999f">a415a4999</a></td>
<td>fix</td>
<td>improve default coverage reporter handling for vitest</td>
</tr>
<tr>
<td><a href="e0de8680d1">e0de8680d</a></td>
<td>fix</td>
<td>inject zone.js/testing before karma builder execution</td>
</tr>
<tr>
<td><a href="2672f6ec17">2672f6ec1</a></td>
<td>fix</td>
<td>json and json-summary as vitest coverage reporters</td>
</tr>
<tr>
<td><a href="b67fdfd6bc">b67fdfd6b</a></td>
<td>fix</td>
<td>resolve "Controller is already closed" error in Karma</td>
</tr>
<tr>
<td><a href="2784883ecf">2784883ec</a></td>
<td>fix</td>
<td>support extra test setup files with unit-test vitest runner</td>
</tr>
<tr>
<td><a href="f177f5508a">f177f5508</a></td>
<td>fix</td>
<td>support injecting global styles into vitest unit-tests</td>
</tr>
<tr>
<td><a href="130c650146">130c65014</a></td>
<td>fix</td>
<td>use an empty array as default value for vitest exclude</td>
</tr>
<tr>
<td><a href="917af12aeb">917af12ae</a></td>
<td>fix</td>
<td>use date/time based output path for vitest unit-test</td>
</tr>
</tbody>
</table>
<h3><code>@angular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="21b5852f12">21b5852f1</a></td>
<td>fix</td>
<td>ensure <code>loadChildren</code> runs in correct injection context during route extraction</td>
</tr>
</tbody>
</table>
<h1>20.0.6 (2025-07-09)</h1>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ed09cef09c"><code>ed09cef</code></a> release: cut the v20.1.0 release</li>
<li><a href="bf6823db55"><code>bf6823d</code></a> build: update Angular versions for 20.1 stable</li>
<li><a href="aea3ed808e"><code>aea3ed8</code></a> fix(<code>@angular/build</code>): exclude <code>@vitest/browser/context</code> from esbuild bundling</li>
<li><a href="2784883ecf"><code>2784883</code></a> fix(<code>@angular/build</code>): support extra test setup files with unit-test vitest runner</li>
<li><a href="ace8a3544b"><code>ace8a35</code></a> test: increase timeout for ssr dev server tests</li>
<li><a href="b54a45bd3d"><code>b54a45b</code></a> refactor: reduce the number of builds done in output-path_spec</li>
<li><a href="be89073b92"><code>be89073</code></a> test: Reduce default timeouts</li>
<li><a href="4a791319d2"><code>4a79131</code></a> test: remove contents of <code>main.ts</code> from polyfill tests</li>
<li><a href="67e481ba0a"><code>67e481b</code></a> test: reduce karma test flakes by using <code>clearContext</code> that is set in the bui...</li>
<li><a href="f369d88653"><code>f369d88</code></a> build: change size to "medium" and "small"</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular-cli/compare/19.0.7...20.1.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 19.2.15 to 20.0.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular-cli/releases"><code>@angular-devkit/build-angular</code>'s releases</a>.</em></p>
<blockquote>
<h2>20.0.2</h2>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="bf64a0f2dc"><img src="https://img.shields.io/badge/bf64a0f2d-fix-green" alt="fix - bf64a0f2d" /></a></td>
<td>add <code>less</code> as a devDependency when selected as the style preprocessor</td>
</tr>
<tr>
<td><a href="cb258a3e15"><img src="https://img.shields.io/badge/cb258a3e1-fix-green" alt="fix - cb258a3e1" /></a></td>
<td>correctly detect modules using new file extension format</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="424f1cbbfb"><img src="https://img.shields.io/badge/424f1cbbf-fix-green" alt="fix - 424f1cbbf" /></a></td>
<td>do not consider internal Angular files as external imports</td>
</tr>
</tbody>
</table>
<h2>20.0.1</h2>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="525ddcbd29"><img src="https://img.shields.io/badge/525ddcbd2-fix-green" alt="fix - 525ddcbd2" /></a></td>
<td>only overwrite JSON file if actually changed</td>
</tr>
<tr>
<td><a href="83c820e5ab"><img src="https://img.shields.io/badge/83c820e5a-fix-green" alt="fix - 83c820e5a" /></a></td>
<td>remove karma config devkit package usages during application migration</td>
</tr>
<tr>
<td><a href="87266b38a0"><img src="https://img.shields.io/badge/87266b38a-fix-green" alt="fix - 87266b38a" /></a></td>
<td>skip zone.js dependency for zoneless applications</td>
</tr>
</tbody>
</table>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="0883248cbd"><img src="https://img.shields.io/badge/0883248cb-fix-green" alt="fix - 0883248cb" /></a></td>
<td>improve Node.js version check and error messages</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="e5efdc577b"><img src="https://img.shields.io/badge/e5efdc577-fix-green" alt="fix - e5efdc577" /></a></td>
<td>also disable outputMode in vitest unit-tests</td>
</tr>
<tr>
<td><a href="5814393dbb"><img src="https://img.shields.io/badge/5814393db-fix-green" alt="fix - 5814393db" /></a></td>
<td>resolve junit karma reporter output to workspace root</td>
</tr>
</tbody>
</table>
<h2>20.0.0</h2>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="e513cd4aa2"><img src="https://img.shields.io/badge/e513cd4aa-fix-green" alt="fix - e513cd4aa" /></a></td>
<td>add Node.js 24 as supported version</td>
</tr>
<tr>
<td><a href="5e90c1b4ec"><img src="https://img.shields.io/badge/5e90c1b4e-fix-green" alt="fix - 5e90c1b4e" /></a></td>
<td>remove Node.js v18 support</td>
</tr>
<tr>
<td><a href="787e510dcc"><img src="https://img.shields.io/badge/787e510dc-fix-green" alt="fix - 787e510dc" /></a></td>
<td>update min Node.js support to 20.19, 22.12, and 24.0</td>
</tr>
<tr>
<td><a href="64732534ec"><img src="https://img.shields.io/badge/64732534e-fix-green" alt="fix - 64732534e" /></a></td>
<td>update minimum supported Node.js 22 version to 22.11.0</td>
</tr>
</tbody>
</table>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="e03f2b8999"><img src="https://img.shields.io/badge/e03f2b899-feat-blue" alt="feat - e03f2b899" /></a></td>
<td>Add global error listeners to new app generation</td>
</tr>
<tr>
<td><a href="1e137ca848"><img src="https://img.shields.io/badge/1e137ca84-feat-blue" alt="feat - 1e137ca84" /></a></td>
<td>add migration to update <code>moduleResolution</code> to <code>bundler</code></td>
</tr>
<tr>
<td><a href="26fd4ea73a"><img src="https://img.shields.io/badge/26fd4ea73-feat-blue" alt="feat - 26fd4ea73" /></a></td>
<td>add migrations for server rendering updates</td>
</tr>
<tr>
<td><a href="5876577af1"><img src="https://img.shields.io/badge/5876577af-feat-blue" alt="feat - 5876577af" /></a></td>
<td>Add prompt for new apps to be zoneless</td>
</tr>
<tr>
<td><a href="fdc6291dda"><img src="https://img.shields.io/badge/fdc6291dd-feat-blue" alt="feat - fdc6291dd" /></a></td>
<td>add update migration to keep previous style guide generation behavior</td>
</tr>
<tr>
<td><a href="093c5a3152"><img src="https://img.shields.io/badge/093c5a315-feat-blue" alt="feat - 093c5a315" /></a></td>
<td>directly use <code>@angular/build</code> in new projects</td>
</tr>
<tr>
<td><a href="d6f594fe0f"><img src="https://img.shields.io/badge/d6f594fe0-feat-blue" alt="feat - d6f594fe0" /></a></td>
<td>generate applications using TypeScript project references</td>
</tr>
<tr>
<td><a href="0ab1ddf632"><img src="https://img.shields.io/badge/0ab1ddf63-feat-blue" alt="feat - 0ab1ddf63" /></a></td>
<td>generate libraries using TypeScript project references</td>
</tr>
<tr>
<td><a href="18e13e2cee"><img src="https://img.shields.io/badge/18e13e2ce-feat-blue" alt="feat - 18e13e2ce" /></a></td>
<td>remove <code>--server-routing</code> option</td>
</tr>
<tr>
<td><a href="03180fe035"><img src="https://img.shields.io/badge/03180fe03-feat-blue" alt="feat - 03180fe03" /></a></td>
<td>use TypeScript module preserve option for new projects</td>
</tr>
<tr>
<td><a href="86d241629f"><img src="https://img.shields.io/badge/86d241629-fix-green" alt="fix - 86d241629" /></a></td>
<td>add <code>@angular/ssr</code> dependency only when <code>provideServerRendering</code> import has been updated</td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular-cli/blob/main/CHANGELOG.md"><code>@angular-devkit/build-angular</code>'s changelog</a>.</em></p>
<blockquote>
<h1>20.0.2 (2025-06-11)</h1>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="bf64a0f2dc">bf64a0f2d</a></td>
<td>fix</td>
<td>add <code>less</code> as a devDependency when selected as the style preprocessor</td>
</tr>
<tr>
<td><a href="cb258a3e15">cb258a3e1</a></td>
<td>fix</td>
<td>correctly detect modules using new file extension format</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="424f1cbbfb">424f1cbbf</a></td>
<td>fix</td>
<td>do not consider internal Angular files as external imports</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="e89245debd"><code>e89245d</code></a> release: cut the v20.0.2 release</li>
<li><a href="bf64a0f2dc"><code>bf64a0f</code></a> fix(<code>@schematics/angular</code>): add <code>less</code> as a devDependency when selected as the ...</li>
<li><a href="424f1cbbfb"><code>424f1cb</code></a> fix(<code>@angular/build</code>): do not consider internal Angular files as external imports</li>
<li><a href="631ac7e6bc"><code>631ac7e</code></a> ci: use new pull-request-labeling action</li>
<li><a href="fa253851a0"><code>fa25385</code></a> build: fix perf workflows</li>
<li><a href="1db861cbda"><code>1db861c</code></a> build: improve globbing of jasmine test files</li>
<li><a href="cb258a3e15"><code>cb258a3</code></a> fix(<code>@schematics/angular</code>): correctly detect modules using new file extension f...</li>
<li><a href="19dc7ddd54"><code>19dc7dd</code></a> build: simplify unit test target names</li>
<li><a href="d513e58d3d"><code>d513e58</code></a> build: simplify unit test target names</li>
<li><a href="4e7e0b073f"><code>4e7e0b0</code></a> release: cut the v20.0.1 release</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular-cli/compare/19.2.15...20.0.2">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.4.0 to 5.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/jasmine/jasmine/releases">jasmine-core's releases</a>.</em></p>
<blockquote>
<h2>v5.5.0</h2>
<p>Please see the <a href="https://github.com/jasmine/jasmine/blob/main/release_notes/5.5.0.md">release notes</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="483d4ab3c3"><code>483d4ab</code></a> Bump version to 5.5.0</li>
<li><a href="663dfe5932"><code>663dfe5</code></a> Updated release instructions</li>
<li><a href="ce9c752899"><code>ce9c752</code></a> Added debug logging to flaky test</li>
<li><a href="d5e7bc9fd6"><code>d5e7bc9</code></a> Optionally enforce uniqueness of spec and suite names</li>
<li><a href="744e765d6f"><code>744e765</code></a> Update copyright date</li>
<li><a href="29551ba4f3"><code>29551ba</code></a> Prettier</li>
<li><a href="bd9a3b2305"><code>bd9a3b2</code></a> Include property value mismatches in diffs even when there are missing or ext...</li>
<li>See full diff in <a href="https://github.com/jasmine/jasmine/compare/v5.4.0...v5.5.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
â ï¸ **Dependabot is rebasing this PR** â ï¸
Rebasing might not happen immediately, so don't worry if this takes some time.
Note: if you make any changes to this PR yourself, they will take precedence over the rebase.
---
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 18.2.12 to 19.0.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular-cli/releases"><code>@âangular/cli</code>'s releases</a>.</em></p>
<blockquote>
<h2>v19.0.2</h2>
<h1>19.0.2 (2024-11-25)</h1>
<h3><code>@âschematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="2f53e2af55"><img src="https://img.shields.io/badge/2f53e2af5-fix-green" alt="fix - 2f53e2af5" /></a></td>
<td>skip SSR routing prompt in webcontainer</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="f9da163f88"><img src="https://img.shields.io/badge/f9da163f8-fix-green" alt="fix - f9da163f8" /></a></td>
<td>minimize reliance on esbuild <code>inject</code> to prevent code reordering</td>
</tr>
<tr>
<td><a href="c497749e67"><img src="https://img.shields.io/badge/c497749e6-fix-green" alt="fix - c497749e6" /></a></td>
<td>prevent errors with parameterized routes when <code>getPrerenderParams</code> is undefined</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c8cd90e0f6"><img src="https://img.shields.io/badge/c8cd90e0f-fix-green" alt="fix - c8cd90e0f" /></a></td>
<td>handle nested redirects not explicitly defined in router config</td>
</tr>
</tbody>
</table>
<h2>v19.0.1</h2>
<h1>19.0.1 (2024-11-21)</h1>
<h3><code>@âangular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="b63123f207"><img src="https://img.shields.io/badge/b63123f20-fix-green" alt="fix - b63123f20" /></a></td>
<td>use stylePreprocessorOptions</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="74461da643"><img src="https://img.shields.io/badge/74461da64-fix-green" alt="fix - 74461da64" /></a></td>
<td>ensure accurate content length for server assets</td>
</tr>
<tr>
<td><a href="1b4dcedd59"><img src="https://img.shields.io/badge/1b4dcedd5-fix-green" alt="fix - 1b4dcedd5" /></a></td>
<td>use <code>sha256</code> instead of <code>sha-256</code> as hash algorithm name</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8bd2b260e2"><img src="https://img.shields.io/badge/8bd2b260e-fix-green" alt="fix - 8bd2b260e" /></a></td>
<td>handle baseHref that start with <code>./</code></td>
</tr>
</tbody>
</table>
<h2>v19.0.0</h2>
<h1>19.0.0 (2024-11-19)</h1>
<h3><code>@âangular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="201b60e1dd"><img src="https://img.shields.io/badge/201b60e1d-feat-blue" alt="feat - 201b60e1d" /></a></td>
<td>handle string key/value pairs, e.g. --define</td>
</tr>
<tr>
<td><a href="b847d4460c"><img src="https://img.shields.io/badge/b847d4460-fix-green" alt="fix - b847d4460" /></a></td>
<td>recommend optional application update migration during v19 update</td>
</tr>
<tr>
<td><a href="f249e7e856"><img src="https://img.shields.io/badge/f249e7e85-perf-orange" alt="perf - f249e7e85" /></a></td>
<td>enable Node.js compile code cache when available</td>
</tr>
<tr>
<td><a href="ecc107d83b"><img src="https://img.shields.io/badge/ecc107d83-perf-orange" alt="perf - ecc107d83" /></a></td>
<td>enable Node.js compile code cache when available</td>
</tr>
</tbody>
</table>
<h3><code>@âschematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="a381a3db18"><img src="https://img.shields.io/badge/a381a3db1-feat-blue" alt="feat - a381a3db1" /></a></td>
<td>add option to export component as default</td>
</tr>
<tr>
<td><a href="755f3a07f5"><img src="https://img.shields.io/badge/755f3a07f-feat-blue" alt="feat - 755f3a07f" /></a></td>
<td>add option to setup new workspace or application as zoneless mode</td>
</tr>
<tr>
<td><a href="cfca5442ec"><img src="https://img.shields.io/badge/cfca5442e-feat-blue" alt="feat - cfca5442e" /></a></td>
<td>integrate <code>withEventReplay()</code> in <code>provideClientHydration</code> for new SSR apps</td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular-cli/blob/main/CHANGELOG.md"><code>@âangular/cli</code>'s changelog</a>.</em></p>
<blockquote>
<h1>19.0.2 (2024-11-25)</h1>
<h3><code>@âschematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="2f53e2af55">2f53e2af5</a></td>
<td>fix</td>
<td>skip SSR routing prompt in webcontainer</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="f9da163f88">f9da163f8</a></td>
<td>fix</td>
<td>minimize reliance on esbuild <code>inject</code> to prevent code reordering</td>
</tr>
<tr>
<td><a href="c497749e67">c497749e6</a></td>
<td>fix</td>
<td>prevent errors with parameterized routes when <code>getPrerenderParams</code> is undefined</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c8cd90e0f6">c8cd90e0f</a></td>
<td>fix</td>
<td>handle nested redirects not explicitly defined in router config</td>
</tr>
</tbody>
</table>
<h1>19.0.1 (2024-11-21)</h1>
<h3><code>@âangular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="b63123f207">b63123f20</a></td>
<td>fix</td>
<td>use stylePreprocessorOptions</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="74461da643">74461da64</a></td>
<td>fix</td>
<td>ensure accurate content length for server assets</td>
</tr>
<tr>
<td><a href="1b4dcedd59">1b4dcedd5</a></td>
<td>fix</td>
<td>use <code>sha256</code> instead of <code>sha-256</code> as hash algorithm name</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8bd2b260e2">8bd2b260e</a></td>
<td>fix</td>
<td>handle baseHref that start with <code>./</code></td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d261246834"><code>d261246</code></a> release: cut the v19.0.2 release</li>
<li><a href="c497749e67"><code>c497749</code></a> fix(<code>@âangular/build</code>): prevent errors with parameterized routes when `getPreren...</li>
<li><a href="d8cbf3b576"><code>d8cbf3b</code></a> refactor(<code>@âangular/build</code>): maintain previous compiler plugin factory signature</li>
<li><a href="2f53e2af55"><code>2f53e2a</code></a> fix(<code>@âschematics/angular</code>): skip SSR routing prompt in webcontainer</li>
<li><a href="f9da163f88"><code>f9da163</code></a> fix(<code>@âangular/build</code>): minimize reliance on esbuild <code>inject</code> to prevent code re...</li>
<li><a href="5ac03f40e7"><code>5ac03f4</code></a> refactor(<code>@âangular/ssr</code>): use appRef.whenStable instead of util function from a...</li>
<li><a href="0eb5870190"><code>0eb5870</code></a> refactor(<code>@âangular/ssr</code>): replace <code>:params</code> with <code>*</code></li>
<li><a href="c8cd90e0f6"><code>c8cd90e</code></a> fix(<code>@âangular/ssr</code>): handle nested redirects not explicitly defined in router c...</li>
<li><a href="8cd6aa94b7"><code>8cd6aa9</code></a> release: cut the v19.0.1 release</li>
<li><a href="1b4dcedd59"><code>1b4dced</code></a> fix(<code>@âangular/build</code>): use <code>sha256</code> instead of <code>sha-256</code> as hash algorithm name</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular-cli/compare/18.2.12...19.0.2">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 18.2.12 to 19.0.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular-cli/releases"><code>@âangular-devkit/build-angular</code>'s releases</a>.</em></p>
<blockquote>
<h2>v19.0.2</h2>
<h1>19.0.2 (2024-11-25)</h1>
<h3><code>@âschematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="2f53e2af55"><img src="https://img.shields.io/badge/2f53e2af5-fix-green" alt="fix - 2f53e2af5" /></a></td>
<td>skip SSR routing prompt in webcontainer</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="f9da163f88"><img src="https://img.shields.io/badge/f9da163f8-fix-green" alt="fix - f9da163f8" /></a></td>
<td>minimize reliance on esbuild <code>inject</code> to prevent code reordering</td>
</tr>
<tr>
<td><a href="c497749e67"><img src="https://img.shields.io/badge/c497749e6-fix-green" alt="fix - c497749e6" /></a></td>
<td>prevent errors with parameterized routes when <code>getPrerenderParams</code> is undefined</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c8cd90e0f6"><img src="https://img.shields.io/badge/c8cd90e0f-fix-green" alt="fix - c8cd90e0f" /></a></td>
<td>handle nested redirects not explicitly defined in router config</td>
</tr>
</tbody>
</table>
<h2>v19.0.1</h2>
<h1>19.0.1 (2024-11-21)</h1>
<h3><code>@âangular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="b63123f207"><img src="https://img.shields.io/badge/b63123f20-fix-green" alt="fix - b63123f20" /></a></td>
<td>use stylePreprocessorOptions</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="74461da643"><img src="https://img.shields.io/badge/74461da64-fix-green" alt="fix - 74461da64" /></a></td>
<td>ensure accurate content length for server assets</td>
</tr>
<tr>
<td><a href="1b4dcedd59"><img src="https://img.shields.io/badge/1b4dcedd5-fix-green" alt="fix - 1b4dcedd5" /></a></td>
<td>use <code>sha256</code> instead of <code>sha-256</code> as hash algorithm name</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8bd2b260e2"><img src="https://img.shields.io/badge/8bd2b260e-fix-green" alt="fix - 8bd2b260e" /></a></td>
<td>handle baseHref that start with <code>./</code></td>
</tr>
</tbody>
</table>
<h2>v19.0.0</h2>
<h1>19.0.0 (2024-11-19)</h1>
<h3><code>@âangular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="201b60e1dd"><img src="https://img.shields.io/badge/201b60e1d-feat-blue" alt="feat - 201b60e1d" /></a></td>
<td>handle string key/value pairs, e.g. --define</td>
</tr>
<tr>
<td><a href="b847d4460c"><img src="https://img.shields.io/badge/b847d4460-fix-green" alt="fix - b847d4460" /></a></td>
<td>recommend optional application update migration during v19 update</td>
</tr>
<tr>
<td><a href="f249e7e856"><img src="https://img.shields.io/badge/f249e7e85-perf-orange" alt="perf - f249e7e85" /></a></td>
<td>enable Node.js compile code cache when available</td>
</tr>
<tr>
<td><a href="ecc107d83b"><img src="https://img.shields.io/badge/ecc107d83-perf-orange" alt="perf - ecc107d83" /></a></td>
<td>enable Node.js compile code cache when available</td>
</tr>
</tbody>
</table>
<h3><code>@âschematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="a381a3db18"><img src="https://img.shields.io/badge/a381a3db1-feat-blue" alt="feat - a381a3db1" /></a></td>
<td>add option to export component as default</td>
</tr>
<tr>
<td><a href="755f3a07f5"><img src="https://img.shields.io/badge/755f3a07f-feat-blue" alt="feat - 755f3a07f" /></a></td>
<td>add option to setup new workspace or application as zoneless mode</td>
</tr>
<tr>
<td><a href="cfca5442ec"><img src="https://img.shields.io/badge/cfca5442e-feat-blue" alt="feat - cfca5442e" /></a></td>
<td>integrate <code>withEventReplay()</code> in <code>provideClientHydration</code> for new SSR apps</td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular-cli/blob/main/CHANGELOG.md"><code>@âangular-devkit/build-angular</code>'s changelog</a>.</em></p>
<blockquote>
<h1>19.0.2 (2024-11-25)</h1>
<h3><code>@âschematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="2f53e2af55">2f53e2af5</a></td>
<td>fix</td>
<td>skip SSR routing prompt in webcontainer</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="f9da163f88">f9da163f8</a></td>
<td>fix</td>
<td>minimize reliance on esbuild <code>inject</code> to prevent code reordering</td>
</tr>
<tr>
<td><a href="c497749e67">c497749e6</a></td>
<td>fix</td>
<td>prevent errors with parameterized routes when <code>getPrerenderParams</code> is undefined</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="c8cd90e0f6">c8cd90e0f</a></td>
<td>fix</td>
<td>handle nested redirects not explicitly defined in router config</td>
</tr>
</tbody>
</table>
<h1>19.0.1 (2024-11-21)</h1>
<h3><code>@âangular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="b63123f207">b63123f20</a></td>
<td>fix</td>
<td>use stylePreprocessorOptions</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="74461da643">74461da64</a></td>
<td>fix</td>
<td>ensure accurate content length for server assets</td>
</tr>
<tr>
<td><a href="1b4dcedd59">1b4dcedd5</a></td>
<td>fix</td>
<td>use <code>sha256</code> instead of <code>sha-256</code> as hash algorithm name</td>
</tr>
</tbody>
</table>
<h3><code>@âangular/ssr</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="8bd2b260e2">8bd2b260e</a></td>
<td>fix</td>
<td>handle baseHref that start with <code>./</code></td>
</tr>
</tbody>
</table>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d261246834"><code>d261246</code></a> release: cut the v19.0.2 release</li>
<li><a href="c497749e67"><code>c497749</code></a> fix(<code>@âangular/build</code>): prevent errors with parameterized routes when `getPreren...</li>
<li><a href="d8cbf3b576"><code>d8cbf3b</code></a> refactor(<code>@âangular/build</code>): maintain previous compiler plugin factory signature</li>
<li><a href="2f53e2af55"><code>2f53e2a</code></a> fix(<code>@âschematics/angular</code>): skip SSR routing prompt in webcontainer</li>
<li><a href="f9da163f88"><code>f9da163</code></a> fix(<code>@âangular/build</code>): minimize reliance on esbuild <code>inject</code> to prevent code re...</li>
<li><a href="5ac03f40e7"><code>5ac03f4</code></a> refactor(<code>@âangular/ssr</code>): use appRef.whenStable instead of util function from a...</li>
<li><a href="0eb5870190"><code>0eb5870</code></a> refactor(<code>@âangular/ssr</code>): replace <code>:params</code> with <code>*</code></li>
<li><a href="c8cd90e0f6"><code>c8cd90e</code></a> fix(<code>@âangular/ssr</code>): handle nested redirects not explicitly defined in router c...</li>
<li><a href="8cd6aa94b7"><code>8cd6aa9</code></a> release: cut the v19.0.1 release</li>
<li><a href="1b4dcedd59"><code>1b4dced</code></a> fix(<code>@âangular/build</code>): use <code>sha256</code> instead of <code>sha-256</code> as hash algorithm name</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular-cli/compare/18.2.12...19.0.2">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
â ï¸ **Dependabot is rebasing this PR** â ï¸
Rebasing might not happen immediately, so don't worry if this takes some time.
Note: if you make any changes to this PR yourself, they will take precedence over the rebase.
---
Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 18.2.12 to 19.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@âangular/common</code>'s releases</a>.</em></p>
<blockquote>
<h2>v19.0.0</h2>
<h1>19.0.0 (2024-11-19)</h1>
<p>Explore Angular v19 with a blog post from the Angular team: <a href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84">https://blog.angular.dev/meet-angular-v19-7b29dfd05b84</a></p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li><code>this.foo</code> property reads no longer refer to template context variables. If you intended to read the template variable, do not use <code>this.</code>.</li>
</ul>
<h3>core</h3>
<ul>
<li>
<p>Angular directives, components and pipes are now standalone by default.</p>
<ul>
<li>Specify <code>standalone: false</code> for declarations that are currently declared in <code>@NgModule</code>s.</li>
<li><code>ng update</code> for v19 will take care of this automatically.</li>
</ul>
</li>
<li>
<p>TypeScript versions less than 5.5 are no longer supported.</p>
</li>
<li>
<p>Timing changes for <code>effect</code> API (in developer preview):</p>
<ul>
<li>
<p>effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples).</p>
</li>
<li>
<p>effects which are triggered during change detection (e.g. by input
signals) run <em>earlier</em>, before the component's template.</p>
</li>
</ul>
</li>
<li>
<p><code>ExperimentalPendingTasks</code> has been renamed to <code>PendingTasks</code>.</p>
</li>
<li>
<p>The <code>autoDetect</code> feature of <code>ComponentFixture</code> will now
attach the fixture to the <code>ApplicationRef</code>. As a result, errors during
automatic change detection of the fixture be reported to the <code>ErrorHandler</code>.
This change may cause custom error handlers to observe new failures that were previously unreported.</p>
</li>
<li>
<p><code>createComponent</code> will now render default fallback with empty <code>projectableNodes</code>.</p>
<ul>
<li>When passing an empty array to <code>projectableNodes</code> in the <code>createComponent</code> API, the default fallback content
of the <code>ng-content</code> will be rendered if present. To prevent rendering the default content, pass <code>document.createTextNode('')</code> as a <code>projectableNode</code>.</li>
</ul>
<pre lang="ts"><code>// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
<p>// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });</p>
<p></code></pre></p>
</li>
<li>
<p>Errors that are thrown during <code>ApplicationRef.tick</code>
will now be rethrown when using <code>TestBed</code>. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:</p>
<ul>
<li>Instead of waiting for automatic change detection to happen, trigger</li>
</ul>
</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@âangular/common</code>'s changelog</a>.</em></p>
<blockquote>
<h1>19.0.0 (2024-11-19)</h1>
<p>Blog post: <a href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84">https://blog.angular.dev/meet-angular-v19-7b29dfd05b84</a></p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li><code>this.foo</code> property reads no longer refer to template context variables. If you intended to read the template variable, do not use <code>this.</code>.</li>
</ul>
<h3>core</h3>
<ul>
<li>
<p>Angular directives, components and pipes are now standalone by default.</p>
<ul>
<li>Specify <code>standalone: false</code> for declarations that are currently declared in <code>@NgModule</code>s.</li>
<li><code>ng update</code> for v19 will take care of this automatically.</li>
</ul>
</li>
<li>
<p>TypeScript versions less than 5.5 are no longer supported.</p>
</li>
<li>
<p>Timing changes for <code>effect</code> API (in developer preview):</p>
<ul>
<li>
<p>effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples).</p>
</li>
<li>
<p>effects which are triggered during change detection (e.g. by input
signals) run <em>earlier</em>, before the component's template.</p>
</li>
</ul>
</li>
<li>
<p><code>ExperimentalPendingTasks</code> has been renamed to <code>PendingTasks</code>.</p>
</li>
<li>
<p>The <code>autoDetect</code> feature of <code>ComponentFixture</code> will now
attach the fixture to the <code>ApplicationRef</code>. As a result, errors during
automatic change detection of the fixture be reported to the <code>ErrorHandler</code>.
This change may cause custom error handlers to observe new failures that were previously unreported.</p>
</li>
<li>
<p><code>createComponent</code> will now render default fallback with empty <code>projectableNodes</code>.</p>
<ul>
<li>When passing an empty array to <code>projectableNodes</code> in the <code>createComponent</code> API, the default fallback content
of the <code>ng-content</code> will be rendered if present. To prevent rendering the default content, pass <code>document.createTextNode('')</code> as a <code>projectableNode</code>.</li>
</ul>
<pre lang="ts"><code>// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
<p>// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });</p>
<p></code></pre></p>
</li>
<li>
<p>Errors that are thrown during <code>ApplicationRef.tick</code>
will now be rethrown when using <code>TestBed</code>. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:</p>
<ul>
<li>Instead of waiting for automatic change detection to happen, trigger
it synchronously and expect the error. For example, a jasmine test
could write <code>expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()</code></li>
</ul>
</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7dfb127c03"><code>7dfb127</code></a> refactor: add <code>@__PURE__</code> next to <code>@pureOrBreakMyCode</code> for improved bundler c...</li>
<li><a href="da9c0c5044"><code>da9c0c5</code></a> refactor: cleanup initializers that use ctor params (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/58349">#58349</a>)</li>
<li><a href="24c6373820"><code>24c6373</code></a> feat(common): add optional rounded transform support in cloudinary image load...</li>
<li><a href="4b9accdf16"><code>4b9accd</code></a> feat(http): promote <code>withRequestsMadeViaParent</code> to stable. (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/58221">#58221</a>)</li>
<li><a href="13c13067bc"><code>13c1306</code></a> feat(common): disable keyvalue sorting using null compareFn (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/57487">#57487</a>)</li>
<li><a href="09df589e31"><code>09df589</code></a> refactor(core): Migrate all packages with the <code>explicit-standalone-flag</code> sche...</li>
<li><a href="08b4a8af6e"><code>08b4a8a</code></a> docs: move JSDoc below constructor (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/57187">#57187</a>)</li>
<li><a href="a36744e4bb"><code>a36744e</code></a> docs: move JSDoc before functions (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/58087">#58087</a>)</li>
<li><a href="0eb1c5c021"><code>0eb1c5c</code></a> docs(common): Minor typo in code example (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/58085">#58085</a>)</li>
<li><a href="84b6896956"><code>84b6896</code></a> refactor(platform-server): Add an ssr benchmark setup. (<a href="https://github.com/angular/angular/tree/HEAD/packages/common/issues/57647">#57647</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/19.0.0/packages/common">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
â ï¸ **Dependabot is rebasing this PR** â ï¸
Rebasing might not happen immediately, so don't worry if this takes some time.
Note: if you make any changes to this PR yourself, they will take precedence over the rebase.
---
Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 18.2.12 to 19.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@âangular/compiler</code>'s releases</a>.</em></p>
<blockquote>
<h2>v19.0.0</h2>
<h1>19.0.0 (2024-11-19)</h1>
<p>Explore Angular v19 with a blog post from the Angular team: <a href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84">https://blog.angular.dev/meet-angular-v19-7b29dfd05b84</a></p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li><code>this.foo</code> property reads no longer refer to template context variables. If you intended to read the template variable, do not use <code>this.</code>.</li>
</ul>
<h3>core</h3>
<ul>
<li>
<p>Angular directives, components and pipes are now standalone by default.</p>
<ul>
<li>Specify <code>standalone: false</code> for declarations that are currently declared in <code>@NgModule</code>s.</li>
<li><code>ng update</code> for v19 will take care of this automatically.</li>
</ul>
</li>
<li>
<p>TypeScript versions less than 5.5 are no longer supported.</p>
</li>
<li>
<p>Timing changes for <code>effect</code> API (in developer preview):</p>
<ul>
<li>
<p>effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples).</p>
</li>
<li>
<p>effects which are triggered during change detection (e.g. by input
signals) run <em>earlier</em>, before the component's template.</p>
</li>
</ul>
</li>
<li>
<p><code>ExperimentalPendingTasks</code> has been renamed to <code>PendingTasks</code>.</p>
</li>
<li>
<p>The <code>autoDetect</code> feature of <code>ComponentFixture</code> will now
attach the fixture to the <code>ApplicationRef</code>. As a result, errors during
automatic change detection of the fixture be reported to the <code>ErrorHandler</code>.
This change may cause custom error handlers to observe new failures that were previously unreported.</p>
</li>
<li>
<p><code>createComponent</code> will now render default fallback with empty <code>projectableNodes</code>.</p>
<ul>
<li>When passing an empty array to <code>projectableNodes</code> in the <code>createComponent</code> API, the default fallback content
of the <code>ng-content</code> will be rendered if present. To prevent rendering the default content, pass <code>document.createTextNode('')</code> as a <code>projectableNode</code>.</li>
</ul>
<pre lang="ts"><code>// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
<p>// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });</p>
<p></code></pre></p>
</li>
<li>
<p>Errors that are thrown during <code>ApplicationRef.tick</code>
will now be rethrown when using <code>TestBed</code>. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:</p>
<ul>
<li>Instead of waiting for automatic change detection to happen, trigger</li>
</ul>
</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@âangular/compiler</code>'s changelog</a>.</em></p>
<blockquote>
<h1>19.0.0 (2024-11-19)</h1>
<p>Blog post: <a href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84">https://blog.angular.dev/meet-angular-v19-7b29dfd05b84</a></p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li><code>this.foo</code> property reads no longer refer to template context variables. If you intended to read the template variable, do not use <code>this.</code>.</li>
</ul>
<h3>core</h3>
<ul>
<li>
<p>Angular directives, components and pipes are now standalone by default.</p>
<ul>
<li>Specify <code>standalone: false</code> for declarations that are currently declared in <code>@NgModule</code>s.</li>
<li><code>ng update</code> for v19 will take care of this automatically.</li>
</ul>
</li>
<li>
<p>TypeScript versions less than 5.5 are no longer supported.</p>
</li>
<li>
<p>Timing changes for <code>effect</code> API (in developer preview):</p>
<ul>
<li>
<p>effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples).</p>
</li>
<li>
<p>effects which are triggered during change detection (e.g. by input
signals) run <em>earlier</em>, before the component's template.</p>
</li>
</ul>
</li>
<li>
<p><code>ExperimentalPendingTasks</code> has been renamed to <code>PendingTasks</code>.</p>
</li>
<li>
<p>The <code>autoDetect</code> feature of <code>ComponentFixture</code> will now
attach the fixture to the <code>ApplicationRef</code>. As a result, errors during
automatic change detection of the fixture be reported to the <code>ErrorHandler</code>.
This change may cause custom error handlers to observe new failures that were previously unreported.</p>
</li>
<li>
<p><code>createComponent</code> will now render default fallback with empty <code>projectableNodes</code>.</p>
<ul>
<li>When passing an empty array to <code>projectableNodes</code> in the <code>createComponent</code> API, the default fallback content
of the <code>ng-content</code> will be rendered if present. To prevent rendering the default content, pass <code>document.createTextNode('')</code> as a <code>projectableNode</code>.</li>
</ul>
<pre lang="ts"><code>// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
<p>// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });</p>
<p></code></pre></p>
</li>
<li>
<p>Errors that are thrown during <code>ApplicationRef.tick</code>
will now be rethrown when using <code>TestBed</code>. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:</p>
<ul>
<li>Instead of waiting for automatic change detection to happen, trigger
it synchronously and expect the error. For example, a jasmine test
could write <code>expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()</code></li>
</ul>
</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="806a61b5a6"><code>806a61b</code></a> fix(compiler): fix multiline selectors (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58681">#58681</a>)</li>
<li><a href="e5d3abb298"><code>e5d3abb</code></a> fix(compiler): resolve <code>:host:host-context(.foo)</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58681">#58681</a>)</li>
<li><a href="80f56954ce"><code>80f5695</code></a> fix(compiler): transform chained pseudo-selectors (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58681">#58681</a>)</li>
<li><a href="2be161d015"><code>2be161d</code></a> fix(compiler): fix <code>:host</code> parsing in pseudo-selectors (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58681">#58681</a>)</li>
<li><a href="560282aa9b"><code>560282a</code></a> fix(compiler): control flow nodes with root at the end projected incorrectly ...</li>
<li><a href="86d8f6bda8"><code>86d8f6b</code></a> refactor(compiler): trigger hmr load on initialization (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58465">#58465</a>)</li>
<li><a href="abd0da7265"><code>abd0da7</code></a> refactor(compiler): remove unused field from output AST (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58444">#58444</a>)</li>
<li><a href="b25121ee4a"><code>b25121e</code></a> fix(compiler): avoid having to duplicate core environment (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58444">#58444</a>)</li>
<li><a href="98804fd4be"><code>98804fd</code></a> fix(compiler): add more specific matcher for hydrate never block (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58360">#58360</a>)</li>
<li><a href="c79b62ced2"><code>c79b62c</code></a> refactor(core): remove the standalone feature (<a href="https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/58288">#58288</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/19.0.0/packages/compiler">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) from 18.2.12 to 19.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@âangular/platform-browser-dynamic</code>'s releases</a>.</em></p>
<blockquote>
<h2>v19.0.0</h2>
<h1>19.0.0 (2024-11-19)</h1>
<p>Explore Angular v19 with a blog post from the Angular team: <a href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84">https://blog.angular.dev/meet-angular-v19-7b29dfd05b84</a></p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li><code>this.foo</code> property reads no longer refer to template context variables. If you intended to read the template variable, do not use <code>this.</code>.</li>
</ul>
<h3>core</h3>
<ul>
<li>
<p>Angular directives, components and pipes are now standalone by default.</p>
<ul>
<li>Specify <code>standalone: false</code> for declarations that are currently declared in <code>@NgModule</code>s.</li>
<li><code>ng update</code> for v19 will take care of this automatically.</li>
</ul>
</li>
<li>
<p>TypeScript versions less than 5.5 are no longer supported.</p>
</li>
<li>
<p>Timing changes for <code>effect</code> API (in developer preview):</p>
<ul>
<li>
<p>effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples).</p>
</li>
<li>
<p>effects which are triggered during change detection (e.g. by input
signals) run <em>earlier</em>, before the component's template.</p>
</li>
</ul>
</li>
<li>
<p><code>ExperimentalPendingTasks</code> has been renamed to <code>PendingTasks</code>.</p>
</li>
<li>
<p>The <code>autoDetect</code> feature of <code>ComponentFixture</code> will now
attach the fixture to the <code>ApplicationRef</code>. As a result, errors during
automatic change detection of the fixture be reported to the <code>ErrorHandler</code>.
This change may cause custom error handlers to observe new failures that were previously unreported.</p>
</li>
<li>
<p><code>createComponent</code> will now render default fallback with empty <code>projectableNodes</code>.</p>
<ul>
<li>When passing an empty array to <code>projectableNodes</code> in the <code>createComponent</code> API, the default fallback content
of the <code>ng-content</code> will be rendered if present. To prevent rendering the default content, pass <code>document.createTextNode('')</code> as a <code>projectableNode</code>.</li>
</ul>
<pre lang="ts"><code>// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
<p>// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });</p>
<p></code></pre></p>
</li>
<li>
<p>Errors that are thrown during <code>ApplicationRef.tick</code>
will now be rethrown when using <code>TestBed</code>. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:</p>
<ul>
<li>Instead of waiting for automatic change detection to happen, trigger</li>
</ul>
</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@âangular/platform-browser-dynamic</code>'s changelog</a>.</em></p>
<blockquote>
<h1>19.0.0 (2024-11-19)</h1>
<p>Blog post: <a href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84">https://blog.angular.dev/meet-angular-v19-7b29dfd05b84</a></p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li><code>this.foo</code> property reads no longer refer to template context variables. If you intended to read the template variable, do not use <code>this.</code>.</li>
</ul>
<h3>core</h3>
<ul>
<li>
<p>Angular directives, components and pipes are now standalone by default.</p>
<ul>
<li>Specify <code>standalone: false</code> for declarations that are currently declared in <code>@NgModule</code>s.</li>
<li><code>ng update</code> for v19 will take care of this automatically.</li>
</ul>
</li>
<li>
<p>TypeScript versions less than 5.5 are no longer supported.</p>
</li>
<li>
<p>Timing changes for <code>effect</code> API (in developer preview):</p>
<ul>
<li>
<p>effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples).</p>
</li>
<li>
<p>effects which are triggered during change detection (e.g. by input
signals) run <em>earlier</em>, before the component's template.</p>
</li>
</ul>
</li>
<li>
<p><code>ExperimentalPendingTasks</code> has been renamed to <code>PendingTasks</code>.</p>
</li>
<li>
<p>The <code>autoDetect</code> feature of <code>ComponentFixture</code> will now
attach the fixture to the <code>ApplicationRef</code>. As a result, errors during
automatic change detection of the fixture be reported to the <code>ErrorHandler</code>.
This change may cause custom error handlers to observe new failures that were previously unreported.</p>
</li>
<li>
<p><code>createComponent</code> will now render default fallback with empty <code>projectableNodes</code>.</p>
<ul>
<li>When passing an empty array to <code>projectableNodes</code> in the <code>createComponent</code> API, the default fallback content
of the <code>ng-content</code> will be rendered if present. To prevent rendering the default content, pass <code>document.createTextNode('')</code> as a <code>projectableNode</code>.</li>
</ul>
<pre lang="ts"><code>// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
<p>// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });</p>
<p></code></pre></p>
</li>
<li>
<p>Errors that are thrown during <code>ApplicationRef.tick</code>
will now be rethrown when using <code>TestBed</code>. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:</p>
<ul>
<li>Instead of waiting for automatic change detection to happen, trigger
it synchronously and expect the error. For example, a jasmine test
could write <code>expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()</code></li>
</ul>
</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="09df589e31"><code>09df589</code></a> refactor(core): Migrate all packages with the <code>explicit-standalone-flag</code> sche...</li>
<li><a href="84b6896956"><code>84b6896</code></a> refactor(platform-server): Add an ssr benchmark setup. (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/57647">#57647</a>)</li>
<li><a href="9dbe6fc18b"><code>9dbe6fc</code></a> refactor: update license text to point to angular.dev (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/57901">#57901</a>)</li>
<li>See full diff in <a href="https://github.com/angular/angular/commits/19.0.0/packages/platform-browser-dynamic">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) from 18.2.12 to 19.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@âangular/animations</code>'s releases</a>.</em></p>
<blockquote>
<h2>v19.0.0</h2>
<h1>19.0.0 (2024-11-19)</h1>
<p>Explore Angular v19 with a blog post from the Angular team: <a href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84">https://blog.angular.dev/meet-angular-v19-7b29dfd05b84</a></p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li><code>this.foo</code> property reads no longer refer to template context variables. If you intended to read the template variable, do not use <code>this.</code>.</li>
</ul>
<h3>core</h3>
<ul>
<li>
<p>Angular directives, components and pipes are now standalone by default.</p>
<ul>
<li>Specify <code>standalone: false</code> for declarations that are currently declared in <code>@NgModule</code>s.</li>
<li><code>ng update</code> for v19 will take care of this automatically.</li>
</ul>
</li>
<li>
<p>TypeScript versions less than 5.5 are no longer supported.</p>
</li>
<li>
<p>Timing changes for <code>effect</code> API (in developer preview):</p>
<ul>
<li>
<p>effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples).</p>
</li>
<li>
<p>effects which are triggered during change detection (e.g. by input
signals) run <em>earlier</em>, before the component's template.</p>
</li>
</ul>
</li>
<li>
<p><code>ExperimentalPendingTasks</code> has been renamed to <code>PendingTasks</code>.</p>
</li>
<li>
<p>The <code>autoDetect</code> feature of <code>ComponentFixture</code> will now
attach the fixture to the <code>ApplicationRef</code>. As a result, errors during
automatic change detection of the fixture be reported to the <code>ErrorHandler</code>.
This change may cause custom error handlers to observe new failures that were previously unreported.</p>
</li>
<li>
<p><code>createComponent</code> will now render default fallback with empty <code>projectableNodes</code>.</p>
<ul>
<li>When passing an empty array to <code>projectableNodes</code> in the <code>createComponent</code> API, the default fallback content
of the <code>ng-content</code> will be rendered if present. To prevent rendering the default content, pass <code>document.createTextNode('')</code> as a <code>projectableNode</code>.</li>
</ul>
<pre lang="ts"><code>// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
<p>// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });</p>
<p></code></pre></p>
</li>
<li>
<p>Errors that are thrown during <code>ApplicationRef.tick</code>
will now be rethrown when using <code>TestBed</code>. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:</p>
<ul>
<li>Instead of waiting for automatic change detection to happen, trigger</li>
</ul>
</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@âangular/animations</code>'s changelog</a>.</em></p>
<blockquote>
<h1>19.0.0 (2024-11-19)</h1>
<p>Blog post: <a href="https://blog.angular.dev/meet-angular-v19-7b29dfd05b84">https://blog.angular.dev/meet-angular-v19-7b29dfd05b84</a></p>
<h2>Breaking Changes</h2>
<h3>compiler</h3>
<ul>
<li><code>this.foo</code> property reads no longer refer to template context variables. If you intended to read the template variable, do not use <code>this.</code>.</li>
</ul>
<h3>core</h3>
<ul>
<li>
<p>Angular directives, components and pipes are now standalone by default.</p>
<ul>
<li>Specify <code>standalone: false</code> for declarations that are currently declared in <code>@NgModule</code>s.</li>
<li><code>ng update</code> for v19 will take care of this automatically.</li>
</ul>
</li>
<li>
<p>TypeScript versions less than 5.5 are no longer supported.</p>
</li>
<li>
<p>Timing changes for <code>effect</code> API (in developer preview):</p>
<ul>
<li>
<p>effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples).</p>
</li>
<li>
<p>effects which are triggered during change detection (e.g. by input
signals) run <em>earlier</em>, before the component's template.</p>
</li>
</ul>
</li>
<li>
<p><code>ExperimentalPendingTasks</code> has been renamed to <code>PendingTasks</code>.</p>
</li>
<li>
<p>The <code>autoDetect</code> feature of <code>ComponentFixture</code> will now
attach the fixture to the <code>ApplicationRef</code>. As a result, errors during
automatic change detection of the fixture be reported to the <code>ErrorHandler</code>.
This change may cause custom error handlers to observe new failures that were previously unreported.</p>
</li>
<li>
<p><code>createComponent</code> will now render default fallback with empty <code>projectableNodes</code>.</p>
<ul>
<li>When passing an empty array to <code>projectableNodes</code> in the <code>createComponent</code> API, the default fallback content
of the <code>ng-content</code> will be rendered if present. To prevent rendering the default content, pass <code>document.createTextNode('')</code> as a <code>projectableNode</code>.</li>
</ul>
<pre lang="ts"><code>// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
<p>// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });</p>
<p></code></pre></p>
</li>
<li>
<p>Errors that are thrown during <code>ApplicationRef.tick</code>
will now be rethrown when using <code>TestBed</code>. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:</p>
<ul>
<li>Instead of waiting for automatic change detection to happen, trigger
it synchronously and expect the error. For example, a jasmine test
could write <code>expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()</code></li>
</ul>
</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="09df589e31"><code>09df589</code></a> refactor(core): Migrate all packages with the <code>explicit-standalone-flag</code> sche...</li>
<li><a href="84b6896956"><code>84b6896</code></a> refactor(platform-server): Add an ssr benchmark setup. (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/57647">#57647</a>)</li>
<li><a href="9dbe6fc18b"><code>9dbe6fc</code></a> refactor: update license text to point to angular.dev (<a href="https://github.com/angular/angular/tree/HEAD/packages/animations/issues/57901">#57901</a>)</li>
<li>See full diff in <a href="https://github.com/angular/angular/commits/19.0.0/packages/animations">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.3.0 to 5.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/jasmine/jasmine/releases">jasmine-core's releases</a>.</em></p>
<blockquote>
<h2>v5.4.0</h2>
<p>Please see the <a href="https://github.com/jasmine/jasmine/blob/main/release_notes/5.4.0.md">release notes</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="c8c3325b56"><code>c8c3325</code></a> Bump version to 5.4.0</li>
<li><a href="84c7e2b21b"><code>84c7e2b</code></a> Fixed de-duplication of exception messages containing blank lines on Node and...</li>
<li><a href="dda25bb29e"><code>dda25bb</code></a> Removed references to PhantomJS from StackTraceSpec.js</li>
<li><a href="9ccf2ef96b"><code>9ccf2ef</code></a> Also deprecate the expected and actual properties of ThrowUnlessFailure</li>
<li><a href="c6fa55bfc8"><code>c6fa55b</code></a> Clarify support status of old Firefox ESRs</li>
<li><a href="06bcf1c2e1"><code>06bcf1c</code></a> Fixed broken docs link</li>
<li><a href="40f402d117"><code>40f402d</code></a> Deprecate the expected and actual properties of expectation results</li>
<li><a href="71f6a95ce5"><code>71f6a95</code></a> Added Firefox 128 (current ESR) to supported browsers</li>
<li>See full diff in <a href="https://github.com/jasmine/jasmine/compare/v5.3.0...v5.4.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.2.0 to 5.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/jasmine/jasmine/releases">jasmine-core's releases</a>.</em></p>
<blockquote>
<h2>v5.3.0</h2>
<p>Please see the <a href="https://github.com/jasmine/jasmine/blob/main/release_notes/5.3.0.md">release notes</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="5cd7d47f72"><code>5cd7d47</code></a> Bump version to 5.3.0</li>
<li><a href="d0fe5c4712"><code>d0fe5c4</code></a> Require curly braces around loop and conditonal bodies</li>
<li><a href="f602c4911c"><code>f602c49</code></a> Merge branch 'dave-unclamp-safari' of <a href="https://github.com/dcsaszar/jasmine">https://github.com/dcsaszar/jasmine</a></li>
<li><a href="7aaf7eaf30"><code>7aaf7ea</code></a> API reference for reporter capabilities</li>
<li><a href="35f16e8125"><code>35f16e8</code></a> Add test for unclamping setTimeout in Safari</li>
<li><a href="acc777c267"><code>acc777c</code></a> Unclamp setTimeout in Safari</li>
<li><a href="1c74356691"><code>1c74356</code></a> Add unclampedSetTimeout helper</li>
<li><a href="bbebea0fa5"><code>bbebea0</code></a> Refactor: extract postMessage</li>
<li><a href="66eb27b0af"><code>66eb27b</code></a> Throw if spying has no effect</li>
<li><a href="7a63c06a65"><code>7a63c06</code></a> Merge branch 'webkit-performance' of <a href="https://github.com/m-akinc/jasmine">https://github.com/m-akinc/jasmine</a></li>
<li>Additional commits viewable in <a href="https://github.com/jasmine/jasmine/compare/v5.2.0...v5.3.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>