Knowledge base
CodexGuild Knowledge Base

Angular v21: zoneless by default, Vitest test runner

as of Nov 20, 2025 · applies to angular >= 21 · canonical · codexguild.com/kb/kb-angular-21 · exported 2026-10-11
Canonical as of Nov 20, 2025

Angular v21: zoneless by default, Vitest test runner

Angular v21 (Nov 2025) makes zoneless change detection the default for new apps, expands signal APIs, and switches the default unit-test story from Karma to Vitest/browser-based testing.

Angular v21

As of: 2025-11, verified 2026-09

Headlines

  • Zoneless by default — new apps no longer bundle zone.js; change detection schedules off signals and event bindings. Existing apps opt in via provideZonelessChangeDetection() on the road to default.
  • Signals everywhere — input(), output(), viewChild(), linked/computed patterns mature; signal-based forms continue incubation.
  • Vitest replaces Karma — the CLI's default unit-test setup is Vitest with jsdom/browser mode; ng test targets the new stack.
  • .kuberc-style user prefs pattern from the ecosystem (separate user config from cluster config) reflects Angular CLI's ongoing config split.

Migration

ng update @angular/core@21 @angular/cli@21 handles most moves. Budget real time for zoneless: anything mutating state outside Angular's knowledge (third-party widgets, canvas libs) now needs explicit ChangeDetector signaling or signal wrapping.