Mador, el runtime reactivo para el DOM en menos de 900 bytes
Un microruntime que da reactividad al DOM con una API mínima y menos de 900 bytes.
Mador es una librería que promete reactividad para el DOM sin obligarte a adoptar un framework completo. La ha publicado esta semana su autor en Hacker News y llama la atención por su tamaño y su enfoque. El runtime, una vez minificado, ocupa unos 855 bytes; el código fuente ronda las 80 líneas. Viene a cubrir el hueco de esos proyectos donde montar React o Svelte es un exceso y donde la página ya tiene su HTML y JavaScript, pero necesita un poco de reacción a cambios de estado.
La propuesta es sencilla: defines un estado inicial, normalmente un objeto, y obtienes dos funciones, read y write. Con read atas selectores CSS del DOM a una función que se ejecuta cuando cambia la parte del estado que te interesa. La función de actualización recibe el elemento y el valor leído. Para no re-renderizar todo, Mador rastrea las propiedades del estado que cada binding lee y solo vuelve a ejecutar los bindings cuyas dependencias hayan cambiado. Una suscripción selectiva, sin declarar dependencias manualmente.
Con write modificas el estado. Las escrituras se agrupan en lotes: si dentro de un mismo write cambias varias propiedades, Mador procesa todos esos cambios en una sola pasada de actualización. Así se evita el problema de encadenar múltiples renders en un solo frame.
Los bindings están ligados al ciclo de vida del DOM que actualizan. Si el elemento desaparece del documento, Mador elimina el runner asociado. No hay que limpiar nada a mano, no existen disconnect ni cleanup explícitos. La librería observa cuándo el nodo deja de estar presente y hace la limpieza sola.
El proyecto se distribuye como un módulo ES nativo, sin paso de build. Se puede importar desde npm o directamente desde un CDN como jsDelivr. Además, es agnóstico: no trae componentes, plantillas ni DOM virtual. Trabaja con el DOM que ya tienes, lo que encaja bien con páginas generadas en servidor o con HTML estático convertido en interactivo sin rehacer la arquitectura.
La API es mínima, un par de funciones, y la licencia es MIT, así que puede incorporarse sin problemas en proyectos comerciales.
Queda por ver cómo se comporta en proyectos con muchos bindings o árboles DOM cambiantes, pero para pequeños widgets, una página de aterrizaje o un componente de un dashboard puede ser una alternativa mucho más liviana que cargarse un framework de varios cientos de kilobytes.


