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>
This is a sample add-to-app Android project based off the existing add-to-app Android sample project. This one makes minor changes to show how content-sizing can be achieved.
Adding a content resizing sample for Android to support
https://github.com/flutter/flutter/pull/179753
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>
The android_view add_to_app sample is currently broken. It does not build:
* AGP version is incompatible.
* MIN_SDK is below Flutter min
* Flutter plugin module was renamed awhile ago: https://github.com/flutter/samples/pull/2714
Removed an accidental project i pushed 😬
also fixed the bash commands in the readme
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I have added sample code updates to the [changelog].
- [x] I updated/added relevant documentation (doc comments with `///`).
This PR makes samples pass CI when 3.10 is released.
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I have added sample code updates to the [changelog].
- [x] I updated/added relevant documentation (doc comments with `///`).
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I have added sample code updates to the [changelog].
- [x] I updated/added relevant documentation (doc comments with `///`).
Removes VeggieSeaons
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I have added sample code updates to the [changelog].
- [x] I updated/added relevant documentation (doc comments with `///`).
---------
Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
I got carried away with Gemini and basically rewrote CI and the release
process for the new LLM reality. This work was largely completed by
Gemini.
- Bump all SDK versions to the current beta (3.9.0-0)
- Run `flutter channel beta`
- Wrote `ci_script.dart` to replace the bash scripts
- Converted repository to pub workspace #2499
- Added llm.md and release.md
- Added redirect for deprecated Samples Index
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I have added sample code updates to the [changelog].
- [x] I updated/added relevant documentation (doc comments with `///`).
Per #2565, this tip doesn't actually work anymore, so I'm removing it
from the README
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I have added sample code updates to the [changelog].
- [x] I updated/added relevant documentation (doc comments with `///`).
[](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 [pigeon](https://github.com/flutter/packages/tree/main/packages) from 25.5.0 to 26.0.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="f0a66f1fb7"><code>f0a66f1</code></a> [pigeon] Adds overrides for constructors and static members of ProxyApis (<a href="https://github.com/flutter/packages/tree/main/packages/issues/9515">#9515</a>)</li>
<li><a href="cb8fef6299"><code>cb8fef6</code></a> [dependabot]: Bump androidx.activity:activity from 1.9.3 to 1.10.1 in /packag...</li>
<li><a href="dedd2f0d5e"><code>dedd2f0</code></a> [webview_flutter] Update androidx.webkit to 1.14.0 (<a href="https://github.com/flutter/packages/tree/main/packages/issues/9638">#9638</a>)</li>
<li><a href="2496670aa5"><code>2496670</code></a> [dependabot]: Bump com.google.android.gms:play-services-maps from 18.2.0 to 1...</li>
<li><a href="85daf43681"><code>85daf43</code></a> [dependabot]: Bump androidx.fragment:fragment from 1.6.2 to 1.8.8 in /package...</li>
<li><a href="f19ecddeea"><code>f19ecdd</code></a> [image_picker] redesign example app (<a href="https://github.com/flutter/packages/tree/main/packages/issues/9625">#9625</a>)</li>
<li><a href="e2c722215a"><code>e2c7222</code></a> [camera_avfoundation] Implementation swift migration - part 7 (<a href="https://github.com/flutter/packages/tree/main/packages/issues/9595">#9595</a>)</li>
<li><a href="12fad6d68d"><code>12fad6d</code></a> [webview_flutter_wkwebview] Replace Flutter method failure assertion with nsl...</li>
<li><a href="1dc479bc08"><code>1dc479b</code></a> [webview_flutter] Add setMixedContentMode for Android (<a href="https://github.com/flutter/packages/tree/main/packages/issues/9586">#9586</a>)</li>
<li><a href="2b0ecd2eba"><code>2b0ecd2</code></a> [google_sign_in] Add exception info to migration guide (<a href="https://github.com/flutter/packages/tree/main/packages/issues/9574">#9574</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/flutter/packages/commits/pigeon-v26.0.0/packages">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>