Volver al blog

Signals en JavaScript: La Nueva Era de la Reactividad que Esta Transformando el Frontend

Hola HaWkers, una revolucion silenciosa esta ocurriendo en el mundo JavaScript: los Signals se estan convirtiendo en el nuevo estandar de reactividad para frameworks frontend. Angular, Vue, Solid, Svelte y hasta el comite TC39 estan abrazando este enfoque.

¿Alguna vez te has preguntado por que tu componente se re-renderiza completamente cuando solo un pequeño valor cambia? Los Signals prometen resolver exactamente este problema.

Que Son los Signals

Signals son primitivos reactivos que representan un valor que puede cambiar a lo largo del tiempo. Cuando un Signal cambia, solo las partes de la UI que dependen de el se actualizan.

Concepto Fundamental

// Concepto basico de un Signal
const count = signal(0);

// Leer el valor
console.log(count.value); // 0

// Actualizar el valor
count.value = 5;

// Todas las dependencias son notificadas automaticamente

Por Que los Signals Estan en Alza

El Problema de React y Virtual DOM

// React: Cuando el state cambia, TODO el componente re-ejecuta
function UserProfile({ userId }) {
    const [name, setName] = useState('');
    const [email, setEmail] = useState('');

    // Cambiar CUALQUIER estado causa re-render completo

    return (
        <div>
            <h1>{name}</h1>
            <p>{email}</p>
        </div>
    );
}

La Solucion con Signals

// Con Signals: Solo el elemento afectado actualiza
function UserProfile() {
    const name = signal('');
    const email = signal('');

    // Cambiar name.value actualiza SOLO el <h1>

    return (
        <div>
            <h1>{name.value}</h1>
            <p>{email.value}</p>
        </div>
    );
}

Signals en los Principales Frameworks

Angular Signals

import { signal, computed, effect } from '@angular/core';

@Component({
    selector: 'app-counter',
    template: `
        <p>Count: {{ count() }}</p>
        <p>Double: {{ double() }}</p>
        <button (click)="increment()">+1</button>
    `
})
export class CounterComponent {
    count = signal(0);
    double = computed(() => this.count() * 2);

    increment() {
        this.count.update(c => c + 1);
    }
}

Solid.js Signals

import { createSignal, createMemo } from 'solid-js';

function Counter() {
    const [count, setCount] = createSignal(0);
    const double = createMemo(() => count() * 2);

    return (
        <div>
            <p>Count: {count()}</p>
            <p>Double: {double()}</p>
            <button onClick={() => setCount(c => c + 1)}>+1</button>
        </div>
    );
}

Propuesta TC39: Signals Nativos

Existe una propuesta para agregar Signals directamente a JavaScript a traves del TC39:

Stage 1 (Enero 2026):

  • Propuesta aceptada por TC39
  • En discusion activa
  • Colaboracion entre Angular, Vue, Solid, Svelte

Beneficios de Performance

Escenario React Signals
1 prop cambia Componente entero Solo 1 elemento
Lista de 1000 items Reconcilia 1000 Actualiza 1
Formulario 20 campos 20 re-renders 1 actualizacion

Conclusion

Signals representan una evolucion natural en como manejamos la reactividad en JavaScript. En lugar de re-renderizar componentes enteros, actualizamos solo lo necesario.

Si aun no has experimentado con Signals, este es el momento perfecto para comenzar.

Vamos para arriba! 🦅

Comentarios (0)

Este artículo aún no tiene comentarios 😢. ¡Sé el primero! 🚀🦅

Añadir comentarios