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.