⌘ REFERENCIA · 115 elementos
Cheatsheet de Motores de Reactividad
La máquina entera en un sitio: el grafo, el tracking, la propagación, la consistencia, la propiedad y la planificación. Son conceptos y mecanismos, no la API de ninguna librería.
🔬 Grano fino y grano grueso 10
Lo que el motor tira y vuelve a producirLa unidad de invalidación
Documento, componente, expresión, atributoEs un eje, no dos bandos
Rehacer la descripción entera y comparar con la anteriorRe-render
Cada expresión es un efecto atado a su nodo del DOMGrano fino
Trabajo proporcional a la salida, no al cambioLo que cuesta el grueso
Memoria y contabilidad del grafo, se use o noLo que cuesta el fino
Menos trabajo por cambio, más libros que llevarMoverse a la derecha
Sin nada a lo que suscribirse no hay fuga posibleLo que gana el diff
Interrumpibilidad, tamaño y bugs también pesanNo hay ganador
La fija tu código, no el framework del READMELa granularidad real
🕸️ Las piezas del grafo 10
Valor, observadores y una función de igualdadFuente
Un cuerpo que reejecutar y de quién leyó la última vezComputación
Fuente y computación a la vez: ocupa el centroDerivación
Hoja: existe por lo que hace fuera del sistemaEfecto
Propagar baja; desatar y verificar subenAristas en dos sentidos
Ahorras memoria y pierdes el desatado baratoQuitar una dirección
Conjunto, arrays con índices cruzados, lista enlazadaTres representaciones
Baja en tiempo constante sin recorrer el arrayÍndices cruzados
Un ciclo en el grafo es una cascada que no terminaAciclicidad
Predicen el coste de cada propagación concretaProfundidad y anchura
🎯 Tracking automático 11
Una variable de módulo: guardar, asignar, restaurarEl observador actual
El grafo se construye ejecutando, no analizandoLeer teje la arista
Sin eso quedan aristas de ramas que ya no se leenDesatar antes de correr
El grafo cambia cada pasada, y por eso es exactoDependencias condicionales
Lo que no llega a evaluarse no queda suscritoEl cortocircuito corta
Dos ramas iguales pueden dejar aristas distintasEl orden de lectura importa
Consultar el valor sin quedar suscrito a élLeer sin rastrear
Después de esperar ya no hay observador que anotarLímite: asincronía
Lo leído antes de entrar no lo ve el efectoLímite: fuera de ámbito
Si no pasa por la fuente, nadie se enteraLímite: escritura lateral
Un Map nativo no avisa de sus propias mutacionesLímite: colecciones
🔀 Push, pull e híbrido 9
Al escribir, recalcular en cascada toda la descendenciaPush puro
Trabajo inútil y valores imposibles en el romboLo que rompe push
Nadie recalcula nada hasta que alguien leePull puro
Sin glitches, pero hay que preguntar arriba siempreLo que rompe pull
Escribir empuja una marca; leer tira del cálculoEl híbrido
La caché vale y la lectura no comprueba nadaLimpio
Certeza local: una fuente mía cambió de valorSucio
Sospecha heredada: hay que preguntar antes de decidirQuizá sucio
Sin el intermedio nadie puede cortar la cadenaPor qué no bastan dos
💎 Glitches y consistencia 9
Dos caminos hasta el mismo nodo, y llegan desfasadosEl rombo
Evaluar mezclando entradas de dos estados globalesGlitch
Nadie llega a observar un estado que nunca existióGlitch-free
Ver el mundo de antes es válido; mezclarlo noObsoleto no es inconsistente
Un valor imposible persistido sobrevive a la sesiónEl daño que persiste
Marcar entero primero, evaluar solo al leerMarcado en dos fases
Impone el orden topológico sin llegar a calcularloResolver hacia arriba
Altura por nodo y cola de prioridad: la vía clásicaOrden topológico explícito
Comparar contadores en vez de ordenar el grafoVersiones y épocas
🧊 Memoización e igualdad 9
Nodo perezoso que es fuente y computación a la vezQué es un memo
Lo invalida el grafo, no unos argumentosNo es una caché con clave
Si no cambia de valor, los de abajo no se ensucianCortacircuitos
Decide qué cuenta como cambio, y dónde para todoLa igualdad es la frontera
Barata; un objeto nuevo idéntico propaga igualIdentidad
Corta más propagación y la paga en cada escrituraComparación estructural
Propagar siempre: útil cuando mutas en el sitioDesactivarla
Sin observadores no se evalúa aunque cambie su fuenteEl memo que nadie lee
Nodo, aristas y comparación por un cálculo trivialCuándo no compensa
🌳 El árbol de dueños 9
La segunda variable global: quién posee lo que se creeEl dueño actual
Cada cosa nace dentro de exactamente una ejecuciónEs un árbol
Lo que se creó y lo que habrá que deshacerHijos y limpiezas
Desechar un dueño destruye recursivamente su interiorLimpieza en cascada
Cada pasada limpia lo que creó la anteriorEntre reejecuciones
Un ámbito de nadie, que se desecha a manoRaíz desacoplada
La salida de emergencia para el código diferidoCapturar y volver
Contabilidad manual de bajas: falla siempre a escalaSin dueño
La fuente retiene al efecto y el efecto a todo su mundoLa arista huérfana
📋 Lotes y planificación 8
Los estados intermedios dejan de ser observablesEl lote es una transacción
Qué corre y en qué orden: es parte de la correcciónLa cola de efectos
Derivar todo primero; solo después tocar el mundoPuras antes que efectos
Ensucia a otros dentro del mismo vaciadoEfecto que escribe
Sin él, dos efectos que se responden cuelgan la pestañaTope de cascadas
Pila legible y depurable; agrupa menosVaciado síncrono
Agrupa el turno entero y abre ventana de inconsistenciaVaciado diferido
Antes de actualizar el DOM, después, o ya mismoElegir el momento
🪞 Reactividad profunda 9
No es sintaxis: cambia granularidad y atomicidadAtómico o profundo
La lectura suscribe y la escritura notificaEl proxy
Hay operaciones del lenguaje que ninguna trampa veLo que no intercepta
Envolver cada nivel solo cuando alguien lo atraviesaInstrumentación perezosa
Sin ella dos lecturas devuelven objetos distintosCaché de proxies
La trampa, la desoptimización y una fuente por claveEl coste por acceso
Leíste el valor en vez de guardar cómo leerloLa desestructuración
Un primitivo no puede llevar identidad consigoPor qué es inevitable
No desestructurar, envolver por propiedad, o compilarLas salidas
⚖️ Los motores comparados 14
Tracking automático, push-pull y glitch-freeLo que comparten los cinco
Arrays con índices cruzados y marcado en dos fasesSolid
Capturar, volver y crear raíces desde tu códigoSolid: el dueño es público
No hay re-render: la reactividad vive en las expresionesSolid: correr una vez
Proxy profundo de primera clase y planificador asíncronoVue
Listas enlazadas y aristas reutilizadas: igual semánticaVue: la reescritura
El acceso por propiedad obliga a leer donde se usaVue: ref o reactive
Versión por nodo y época global: comparar, no reordenarAngular
El ciclo de vida lo lleva la inyección de dependenciasAngular: el inyector
Estable desde la 20.2: el grafo sustituye al parcheoAngular sin zonas
Runes como marcadores y agrupamiento por tickSvelte 5
Proxy si es objeto, atómico si es primitivoSvelte: el estado
Lista enlazada con versión por arista, síncrono y mínimoPreact Signals
Sin dueño ni estado profundo: los pone el anfitriónPreact: las ausencias
🏗️ Compilar la reactividad 10
Lo que está en el texto; no lo que exige ejecutarQué puede inferir
Ningún compilador sustituye al descubrimiento dinámicoEl límite teórico
Reescriben el acceso: un incremento normal propagaLas runes
Capturar sin evaluar es algo que solo hace un compiladorReciben expresiones
Una rune no se importa ni se pasa como valorDonde no llega
Plantilla clonable más efectos que rellenan los huecosEl JSX de Solid
Inserta la memoización que antes se escribía a manoReact Compiler
Estable desde octubre de 2025; no cambia de familiaReact Compiler 1.0
Devolver los mismos objetos permite podar subárbolesLo que consigue
Trazas de código generado y lógica atada a su ecosistemaLo que se paga
📜 El estándar y el criterio 7
Stage 1: el comité acepta explorarlo, nada másSignals en TC39
Prototipar mucho e integrarlo antes de pedir etapaEl plan declarado
La forma propuesta; sin implementación en motoresSignal.State y Computed
Un polyfill publicado y frameworks experimentandoQué hay hoy
Conocerla y no construir encima nada irreversibleLa postura sensata
El grafo es global del módulo y el orden no componePor qué no interoperan
Núcleo, tres estados, memo, dueño y lote: cabe en pocoEl motor mínimo