Modern Angular
What to Adopt, Spike, or Wait On in Angular 21
Angular 21 (released November 2025) gives new projects a solid starting point. Existing production apps still need an adoption filter, especially with v22 already on the release calendar for June 2026.
Adopt
The first move in an existing Angular project is not changing the whole app. In new or touched code, adopt standalone-first components, modern control flow, local Signals for current UI state, computed for synchronous derivation, and takeUntilDestroyed for manual subscriptions.
These changes make the code look like current Angular without asking the team to bet the product on a migration wave.
Use a decision filter
This post should not repeat the broader modernization guide. Its job is to give a reviewer a quick filter before a release note becomes a migration ticket.
I would ask these questions before moving anything from idea to team default.
| Criterion | Adopt | Spike | Wait or isolate |
|---|---|---|---|
| Runtime impact | Local and predictable | Changes app timing or rendering | Touches critical flows with unstable behavior |
| CI impact | No new runner or build model | Needs comparison data | Would make failures harder to trust |
| API maturity | Stable and documented | Stable but architecture-sensitive | Experimental or developer preview |
| Rollback cost | Small diff in touched code | Branch can be abandoned | Rollback would affect release scope |
| Evidence needed | Code review and smoke test | Timebox, owner, metrics, failures | Official status change or stronger local proof |
Spike
Spike zoneless in an existing app, Vitest migration for a large Karma/Jasmine suite, SSR/hydration changes, and AI tooling with ng mcp. None of these should be a general cleanup ticket. Each one needs a hypothesis, a timebox, an owner, a rollback path, and evidence from the actual app: failing flows, CI delta, flaky specs, or review findings.
If this filter becomes team policy, record it in an ADR or ticket: item, status, evidence, owner, and next review date. That is a decision record, not application code.
| Item | Status | Evidence to require |
|---|---|---|
| Control flow in touched templates | Adopt | Reviewed diff with @if, @for, and correct track usage. |
| Local component state with Signals | Adopt | Less boilerplate without replacing async contracts. |
| Zoneless in an existing app | Spike | Smoke report for timers, subscriptions, forms, overlays, and third-party UI. |
| Vitest migration for a large suite | Spike | CI comparison for migrated specs, fake timers, mocks, and browser-only tests. |
| Signal Forms or Angular Aria in critical flows | Wait or isolate | API status checked against official docs and no dependency on critical release paths. |
Wait or isolate
Keep Signal Forms and Angular Aria away from critical production flows until the team has enough confidence in the current API surface. Signal Forms is labeled experimental on the official docs: 'The API may change in future releases. Avoid using experimental APIs in production applications without understanding the risks.' Angular Aria sits in developer preview on the roadmap.
Minko Gechev (Angular team lead) sketched the interop direction in the Angular 2025 Strategy post: existing forms keep working while Signal Forms is gradually recommended as best practice. That gradual is the gate. The risk is not that the new APIs are bad ideas. The risk is API churn, forms complexity, accessibility liability, and critical screens becoming early-adopter test beds.
Reusable artifact
Adopt / spike / wait
- Adopt: stable patterns that improve new code or areas already changing.
- Spike: changes that affect runtime assumptions, CI, rendering, workflow, or rollback cost.
- Wait: experimental or developer preview APIs in critical flows.
- Promote a spike only after it has an owner, a timebox, evidence, and a rollback path.
Sources checked
- https://angular.dev/roadmap
- https://angular.dev/reference/releases
- https://angular.dev/guide/components
- https://angular.dev/guide/signals
- https://angular.dev/guide/templates/control-flow
- https://angular.dev/guide/zoneless
- https://angular.dev/guide/forms/signals/overview
- https://angular.dev/guide/aria/overview
- https://angular.dev/api/core/computed
- https://angular.dev/api/core/rxjs-interop/takeUntilDestroyed
- https://blog.angular.dev/announcing-angular-v21-57946c34f14b
- https://blog.angular.dev/angular-2025-strategy-9ca333dfc334
Modern Angular Playbook
This article is one play.
The Modern Angular Playbook collects the diagnostic, the adoption matrix, eleven plays, and the 30-day plan. Free, in English and Portuguese.
You get both PDFs by email, through the Dojo IA list.
André Ramosavailable for remote roles, UTC−3Get in touch →