Angular has undergone a complete architectural evolution in recent versions, introducing fine-grained reactivity with Signals, eliminating NgModule boilerplate with Standalone Components, and offering built-in SSR hydration.

1. Signals: The New Reactivity Paradigm

Historically, Angular relied on Zone.js to monkey-patch asynchronous browser events and trigger top-down dirty checking across component trees. Signals provide synchronous, fine-grained dependency tracking:

  • signal(initialValue): Writable reactive primitive.
  • computed(() => calculate(sig())): Read-only derived reactive state with automatic memoization.
  • effect(() => sideEffect(sig())): Reactive lifecycle observer for DOM updates or analytics dispatching.

2. Standalone Architecture & Control Flow

Angular 17 introduced the built-in control flow syntax (@if, @for, @switch, and @defer). The @defer block allows developers to lazily load heavy UI components on scroll, hover, or timer triggers with zero custom webpack configuration.