<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/what-s-new-in-angular-v22-signal-forms-goes-stable-onpush-by-default-and-early-ai-agent-tooling-h80mmdcfp" -->

---
title: What&#x27;s new in Angular v22: Signal Forms goes stable,...
description: Angular v22 stabilizes Signal Forms, a new declarative signal-based API replacing both Reactive and Template Driven Forms, along with...
canonical: https://daily.dev/posts/what-s-new-in-angular-v22-signal-forms-goes-stable-onpush-by-default-and-early-ai-agent-tooling-h80mmdcfp
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: What&#x27;s new in Angular v22: Signal Forms goes stable, OnPush by default, and early AI agent tooling | daily.dev
og:description: Angular v22 stabilizes Signal Forms, a new declarative signal-based API replacing both Reactive and Template Driven Forms, along with...
og:url: https://daily.dev/posts/what-s-new-in-angular-v22-signal-forms-goes-stable-onpush-by-default-and-early-ai-agent-tooling-h80mmdcfp
og:image: https://api.daily.dev/og/posts/H80mmDcFP.png
og:image:alt: What&#x27;s new in Angular v22: Signal Forms goes stable, OnPush by default, and early AI agent tooling
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# What's new in Angular v22: Signal Forms goes stable, OnPush by default, and early AI agent tooling

**[Collections](https://daily.dev/sources/collections)** · 4 min read · 9 upvotes · 0 comments

## Summary

Angular v22 stabilizes Signal Forms, a new declarative signal-based API replacing both Reactive and Template Driven Forms, along with resource/rxResource/httpResource, Angular Aria, and async reactivity APIs. New components now default to OnPush change detection instead of the renamed 'Eager' strategy. New DI tools include a @Service() decorator and injectAsync for lazy-loaded services. Templates gain spread/rest syntax, multi-case switch matching, exhaustive never checks, inline arrow functions, and tag comments. An experimental WebMCP feature exposes app and Signal Forms functionality as callable tools for in-browser AI agents. A notable experiment showed Claude Opus 4.8 migrating forms from Angular 20 to 22 produced buggy code with race conditions and data corruption unsupervised, but giving it access to the Angular CLI's MCP server cut token usage 60% and eliminated most subtle bugs. Migration requires TypeScript 6, drops Node 20 support, and deprecates Webpack.

## Content

Angular v22 landed with a mix of long-awaited stabilizations and some genuinely new territory around AI coding agents. Here's what actually changed and what it means if you're maintaining an Angular app.

## Signal Forms are stable

The headline feature. Signal Forms replace both Reactive Forms and Template Driven Forms with a single declarative, signal-based API that's strongly typed and doesn't force you to choose between reactive rigor and template convenience.

Migrating an existing app doesn't have to happen all at once. A few tools make incremental adoption possible:

- `SignalFormControl` lets you adopt Signal Forms bottom-up, one control at a time.
- `compatForm` bridges old and new: existing `FormControl`s and custom controls can keep working alongside Signal Forms code.
- Custom form components move to the new `FormValueControl` interface.
- `FormArray`s get updated using `applyEach`.

A few gotchas worth knowing about before you start: disabled/hidden/readonly state is now declarative rather than imperative, `valueChanges`/`statusChanges` get replaced by `effect`/`computed`, the default CSS classes have changed, and reset behavior works differently than before. Tests will need adjusting too.

### What happens when you let AI do the migration

Someone ran an experiment worth mentioning: pointing Claude Opus 4.8 at 22 real-world forms and asking it to migrate them from Angular 20 to 22, agentically, with no extra guardrails.

The results were not great. The AI produced code that looked fine but had race conditions, infinite loops, broken submission flows, and silent data corruption — the kind of bugs that pass a quick glance and then bite you in production.

Giving the same agent access to the Angular CLI's MCP server (which exposes documentation and best-practices tooling) changed things substantially: token usage dropped 60%, and most of the subtle bugs disappeared. Submission logic was the one area that still needed a human to step in and correct the agent's work. Worth remembering next time someone tells you to just let the agent handle a framework migration unsupervised.

## Other API stabilizations

`resource`, `rxResource`, and `httpResource` are now stable too. These treat async data as signals, and support `chain()` for dependent requests plus SSR caching so you're not re-fetching data that already loaded server-side.

Angular Aria and the async reactivity APIs also moved to production-ready status in this release.

## OnPush is now the default

This is a bigger deal than it sounds. New components now default to `OnPush` change detection instead of what used to be the default strategy — which has been renamed `Eager` for anyone who still wants the old behavior. If you're used to Angular's default change detection quietly checking everything on every event, this is a meaningful shift toward the more performance-conscious pattern that's long been considered best practice anyway.d,c d,c d,c

## New dependency injection tools

A `@Service()` decorator simplifies registering global singletons. `injectAsync` enables lazy-loaded, code-split services — useful if you've got heavy dependencies you don't want in your initial bundle.

## Template syntax improvements

Templates got several ergonomic additions: spread/rest syntax, matching multiple cases in one branch, exhaustive `never` checks in `@switch` blocks (so the compiler yells at you if you forget a case), inline arrow functions, and tag comments.

## Experimental: WebMCP

This is the part I find most interesting, and also the part I'm least sure what to make of yet. Angular v22 ships experimental WebMCP support, which exposes app and Signal Forms functionality as tools that in-browser AI agents can call directly. It's early, but it points toward a future where AI agents interact with your running app the same way they'd interact with a CLI or an API — not by screen-scraping the DOM, but through an actual protocol.

## Migration notes

A few things to plan around before upgrading:

- TypeScript 6 is now required.
- Node 20 support is dropped.
- Webpack support is deprecated.

The `ng update` command and the interactive migration guide handle most of the mechanical steps, but given the AI migration experiment above, I'd budget real time for reviewing Signal Forms conversions by hand rather than trusting any automated pass blindly.

## Questions this post answers

### What changed with change detection defaults in Angular 22?

New components in Angular 22 default to OnPush change detection instead of the previous default strategy, which has been renamed 'Eager' for those who want the old behavior. This is a performance-conscious shift, since OnPush avoids checking every component on every event and has long been considered best practice in Angular development.

_Developers planning an Angular 22 upgrade can track breaking defaults like this one on daily.dev._

### Are Angular Reactive Forms and Template Driven Forms being replaced?

Yes, Angular 22 stabilizes Signal Forms, a single declarative, strongly-typed, signal-based API meant to replace both Reactive Forms and Template Driven Forms. Migration tools include SignalFormControl for incremental bottom-up adoption, compatForm for bridging old FormControls with new code, and the FormValueControl interface for custom controls.

_Teams weighing a Signal Forms migration can follow ongoing Angular coverage on daily.dev._

### How well does AI handle migrating Angular forms to Signal Forms automatically?

Poorly without guidance: an experiment pointing Claude Opus 4.8 at 22 real-world forms migrating from Angular 20 to 22 agentically produced code with race conditions, infinite loops, broken submission flows, and silent data corruption. Giving the same agent access to the Angular CLI's MCP server, which exposes documentation and best-practices tooling, cut token usage 60% and eliminated most subtle bugs, though submission logic still needed human correction.

_Anyone letting AI agents handle framework migrations can weigh this kind of evidence via daily.dev._

---

Tags: [#ai-agents](https://daily.dev/tags/ai-agents), [#typescript](https://daily.dev/tags/typescript), [#angular](https://daily.dev/tags/angular)

[View this post on daily.dev](https://daily.dev/posts/what-s-new-in-angular-v22-signal-forms-goes-stable-onpush-by-default-and-early-ai-agent-tooling-h80mmdcfp)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"What's new in Angular v22: Signal Forms goes stable, OnPush by default, and early AI agent tooling","url":"https://daily.dev/posts/what-s-new-in-angular-v22-signal-forms-goes-stable-onpush-by-default-and-early-ai-agent-tooling-h80mmdcfp","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/what-s-new-in-angular-v22-signal-forms-goes-stable-onpush-by-default-and-early-ai-agent-tooling-h80mmdcfp"},"datePublished":"2026-08-14T14:30:40.997Z","dateModified":"2026-08-14T14:31:31.371Z","description":"Angular v22 stabilizes Signal Forms, a new declarative signal-based API replacing both Reactive and Template Driven Forms, along with...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8549ad4b8a841a1b56d968b9fbc36adc?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8549ad4b8a841a1b56d968b9fbc36adc?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collections","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/what-s-new-in-angular-v22-signal-forms-goes-stable-onpush-by-default-and-early-ai-agent-tooling-h80mmdcfp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":9},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"ai-agents,typescript,angular","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"What's new in Angular v22: Signal Forms goes stable, OnPush by default, and early AI agent tooling"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/what-s-new-in-angular-v22-signal-forms-goes-stable-onpush-by-default-and-early-ai-agent-tooling-h80mmdcfp#faq","mainEntity":[{"@type":"Question","name":"What changed with change detection defaults in Angular 22?","acceptedAnswer":{"@type":"Answer","text":"New components in Angular 22 default to OnPush change detection instead of the previous default strategy, which has been renamed 'Eager' for those who want the old behavior. This is a performance-conscious shift, since OnPush avoids checking every component on every event and has long been considered best practice in Angular development. Developers planning an Angular 22 upgrade can track breaking defaults like this one on daily.dev."}},{"@type":"Question","name":"Are Angular Reactive Forms and Template Driven Forms being replaced?","acceptedAnswer":{"@type":"Answer","text":"Yes, Angular 22 stabilizes Signal Forms, a single declarative, strongly-typed, signal-based API meant to replace both Reactive Forms and Template Driven Forms. Migration tools include SignalFormControl for incremental bottom-up adoption, compatForm for bridging old FormControls with new code, and the FormValueControl interface for custom controls. Teams weighing a Signal Forms migration can follow ongoing Angular coverage on daily.dev."}},{"@type":"Question","name":"How well does AI handle migrating Angular forms to Signal Forms automatically?","acceptedAnswer":{"@type":"Answer","text":"Poorly without guidance: an experiment pointing Claude Opus 4.8 at 22 real-world forms migrating from Angular 20 to 22 agentically produced code with race conditions, infinite loops, broken submission flows, and silent data corruption. Giving the same agent access to the Angular CLI's MCP server, which exposes documentation and best-practices tooling, cut token usage 60% and eliminated most subtle bugs, though submission logic still needed human correction. Anyone letting AI agents handle framework migrations can weigh this kind of evidence via daily.dev."}}]}
```

