Angular Signals: Reactividad y Propagación de Estado
El desafío de propagar el estado
El mayor desafío en el desarrollo frontend moderno no es mostrar datos en pantalla, sino qué hacer cuando esos datos cambian. Si un usuario agrega un producto al carrito, el contador debe actualizarse. Parece simple, pero la forma en que el framework propaga ese cambio define el rendimiento de toda tu aplicación.
Históricamente, Angular utilizaba un sistema de detección de cambios global basado en la librería Zone.js. Cuando ocurría un evento (un clic o una respuesta del servidor), el framework revisaba el árbol de componentes preguntando: "¿Cambió algo acá?". Este proceso, conocido como dirty checking (en versiones iniciales) o simplemente change detection, ayudaba a mantener la vista sincronizada, pero muchas veces consumía ciclos de procesamiento escaneando partes de la web que no habían sufrido modificaciones.
Con Signals, la actualización viaja directamente al componente que necesita el dato, sin escanear toda la aplicación.
El grafo de dependencias
Con la llegada de Signals, Angular introdujo un paradigma arquitectónico distinto: la reactividad de grano fino (fine-grained reactivity).
Un Signal es, en esencia, un contenedor reactivo que almacena un valor (el estado). Pero su verdadero poder radica en que Angular puede rastrear quién lo está utilizando. Cuando vinculás un Signal a un componente de la interfaz, el framework construye un grafo de dependencias. El componente (o cualquier contexto reactivo que lo lea) se suscribe directamente al dato.
Propagación quirúrgica
Cuando el valor del Signal cambia, se optimiza el escaneo. En su lugar, ocurre una propagación mucho más directa. El Signal notifica a los consumidores reactivos que registraron su lectura.
El cambio viaja por el grafo de dependencias y Angular marca específicamente ese componente para actualizar las partes de la vista que dependen del Signal. El resto de la aplicación evita verificaciones innecesarias, ahorrando memoria y batería en el dispositivo del usuario.
Dominar la propagación del estado con herramientas como Signals nos permite lograr que interfaces complejas reaccionen de forma instantánea, fluida y con gran precisión.


