Signal-based architecture for your Angular apps | Alain Chautard

Learn how to build more performant Angular apps with signals - from basic reactive state management to advanced architecture patterns and migration strategies.

Key takeaways
  • Signals provide more precise change detection in Angular by only updating components that depend on changed values, rather than checking the entire component tree

  • Key benefits include:

    • Simpler alternative to RxJS for reactivity
    • Lightweight (2KB) and built into Angular
    • Automatic dependency tracking
    • Better debugging via Angular DevTools
    • Improved performance through focused updates
  • Best practices for using signals:

    • Convert template-bound values to signals
    • Use computed() for derived values
    • Make signals required and provide initial values when possible
    • Expose signals as read-only when appropriate
    • Use input() function instead of @Input() decorator
  • Signal-based architecture recommendations:

    • Migrate existing inputs to signal inputs
    • Keep components focused and reusable
    • Use services to manage shared state
    • Convert observables to signals when possible
    • Think in terms of dependencies and transformations
  • Signal API key concepts:

    • signal() creates a basic signal
    • computed() derives values from other signals
    • toSignal() converts observables to signals
    • .set() updates signal values directly
    • .update() modifies based on previous value
  • Signals represent Angular’s future direction for state management and change detection, preparing applications for upcoming framework changes

  • Migration can be gradual - existing applications can mix traditional change detection with signal-based approaches

  • TypeScript integration provides better type safety and developer experience when working with signals