Construido sobre Solid 2: Decisiones de Arquitectura
Solidiom está construido exclusivamente sobre Solid 2. Este artículo explica por qué, y cómo los primitivos reactivos del framework informan nuestra arquitectura de componentes.
Por Qué Solid 2
El modelo de reactividad de grano fino de Solid elimina la sobrecarga de difusión del DOM virtual que otros frameworks acarrean. Para una biblioteca de componentes enfocada en accesibilidad y rendimiento, esto importa:
- Sin renders desperdiciados — solo los nodos DOM exactos afectados por un cambio de estado se actualizan
- Temporización predecible — los effects se ejecutan síncronamente después de los cambios de estado, haciendo la gestión del foco confiable
- Runtime pequeño — sin sobrecarga de reconciliador significa bundles más pequeños por primitivo
- Composición sobre herencia — los signals y stores se componen naturalmente sin infierno de proveedores
Accesibilidad Reactiva
Las bibliotecas de componentes tradicionales luchan contra su framework para gestionar el foco. Cuando un diálogo se abre, la biblioteca debe asegurar que el foco se mueva dentro del diálogo después de que se renderice. En React, esto requiere refs, effects y temporización cuidadosa. En Solid 2, el DOM se actualiza síncronamente:
function openDialog() {
setOpen(true)
// DOM is already updated — focus management is immediate
dialogRef.focus()
}Este modelo síncrono es la razón por la que cada primitivo de Solidiom puede garantizar su contrato de teclado sin condiciones de carrera.
Máquinas de Estado Impulsadas por Signals
Cada primitivo interactivo se modela como una máquina de estados impulsada por signals:
- Disclosure — el signal
openimpulsa accordion, dialog, popover, tooltip - Selección — el signal
valueimpulsa tabs, select, radio-group, listbox - Navegación — el signal
activeIndeximpulsa menu, combobox, tree - Validación — el signal
validityimpulsa field, input, controles de formulario
La máquina de estados es el primitivo. El estilizado es una capa separada (recetas) que lee los mismos signals a través de atributos de datos.
Primitivos como Límites
Solidiom establece un límite firme entre primitivos y componentes estilizados:
- Los primitivos son dueños del comportamiento: máquinas de estado, manejo de teclado, atributos ARIA
- Las recetas son dueñas de la apariencia: colores, espaciado, tipografía, animaciones
- Las plantillas son dueñas de la composición: cómo los primitivos y recetas se combinan en páginas
Esta separación significa que puedes cambiar perfiles de estilizado (CSS, Tailwind, UnoCSS) sin tocar el comportamiento, y actualizar primitivos sin romper tu diseño.
Qué Significa Esto para los Consumidores
- Sin capa de compatibilidad con React — Solidiom es nativo de Solid, no un port
- Sin sobrecarga en runtime — los primitivos se compilan a operaciones DOM directas
- Tamaños de bundle predecibles — cada primitivo es independientemente tree-shakeable
- A prueba de futuro — cuando Solid 2 llegue a estable, Solidiom se mueve con él