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.

CriterionAdoptSpikeWait or isolate
Runtime impactLocal and predictableChanges app timing or renderingTouches critical flows with unstable behavior
CI impactNo new runner or build modelNeeds comparison dataWould make failures harder to trust
API maturityStable and documentedStable but architecture-sensitiveExperimental or developer preview
Rollback costSmall diff in touched codeBranch can be abandonedRollback would affect release scope
Evidence neededCode review and smoke testTimebox, owner, metrics, failuresOfficial 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.

ItemStatusEvidence to require
Control flow in touched templatesAdoptReviewed diff with @if, @for, and correct track usage.
Local component state with SignalsAdoptLess boilerplate without replacing async contracts.
Zoneless in an existing appSpikeSmoke report for timers, subscriptions, forms, overlays, and third-party UI.
Vitest migration for a large suiteSpikeCI comparison for migrated specs, fake timers, mocks, and browser-only tests.
Signal Forms or Angular Aria in critical flowsWait or isolateAPI 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

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.

Open playbook →

André Ramosavailable for remote roles, UTC−3Get in touch →

Related

Guide · 8 min

Modern Angular for Production Teams

A senior map for production Angular modernization: where the current Angular model helps, where experiments need isolation, and where a rewrite is the wrong answer.

Read article →

Guide · 7 min

Signals Without the RxJS War

A production boundary for Signals, computed values, RxJS streams, and interop, with no cosmetic rewrite of architecture that already works.

Read article →

Note · 5 min

A Small Checklist Before Trying Zoneless

A readiness checklist for testing zoneless in an existing Angular app without confusing a compatibility spike with a rollout plan.

Read article →