wandres.dev
POR QUÉ SOLID · grano fino vs VDOM

El ecosistema Solid en 2026

Solid Router, SolidStart, solid-primitives y las DevTools: las piezas oficiales que rodean al core, cómo encajan y en qué estado está el proyecto de cara a 2026 y a Solid 2.0.

⏱ 12 min

Un lenguaje reactivo no basta: hace falta un ecosistema para construir aplicaciones reales. El de Solid es deliberadamente pequeño y composable, mantenido en gran parte por el equipo core alrededor de un núcleo estable. Esta lección traza el mapa de las piezas oficiales —enrutado, meta-framework, primitivos, herramientas— y sitúa el estado del proyecto en 2026, con Solid 2.0 en el horizonte.

🎯 Al terminar esta lección sabrás
  • Conocer las piezas oficiales: Router, SolidStart, primitives, DevTools.
  • Entender qué es SolidStart y sobre qué se apoya.
  • Situar la madurez del proyecto y de Solid 2.0 en 2026.
  • Ver cómo Solid se integra con el resto del stack, como Astro.

El núcleo y sus satélites

Solid separa el núcleo reactivo de todo lo demás. El paquete solid-js trae signals, efectos, memos, stores y control flow; a su alrededor orbitan paquetes oficiales que resuelven enrutado, servidor y utilidades sin inflar el core.

mindmap
root((Ecosistema Solid))
  Core
    solid-js
    Store reactivo
    solid-js web
  Enrutado
    solidjs router
    query y action
    createAsync
  SolidStart
    Vinxi
    Nitro
    use server
  Primitivos
    solid primitives
  Tooling
    Solid DevTools
    babel jsx dom expressions
🧭

Solid Router

@solidjs/router: enrutado por configuración o por archivos, rutas anidadas, useParams, useNavigate y APIs de datos como query y createAsync.

🚀

SolidStart

El meta-framework oficial: SSR, streaming, SSG, server functions con "use server" y actions para formularios progresivos.

🧩

solid-primitives

Una colección de más de cien primitivos revisados por el equipo: desde createMediaQuery hasta gestión de eventos, storage y scheduling.

🔬

Solid DevTools

Extensión de navegador más el paquete solid-devtools: inspecciona el grafo reactivo, las dependencias y las actualizaciones en vivo.

SolidStart: el meta-framework

SolidStart es a Solid lo que otros meta-frameworks son a su librería: el andamiaje para aplicaciones fullstack. Alcanzó su versión 1.0 en 2024 y en 2026 es la vía estándar para producción. Se apoya en Vinxi —que a su vez combina Vite y Nitro— para el arranque y el despliegue.

La filosofía es la de un meta-framework “delgado”: no reinventa el enrutado ni el bundler, sino que integra piezas maduras —Solid Router para las rutas, Vite para el desarrollo, Nitro para el servidor— y añade lo justo para unirlas en una experiencia fullstack coherente. La consecuencia práctica es que casi todo lo que aprendes en Solid puro sigue valiendo dentro de SolidStart; solo se añade la capa de servidor.

🖥️

Modos de render

SSR síncrono o en streaming, CSR puro y prerender SSG, elegibles por ruta según lo que cada página necesite.

🔒

Server functions

Con la directiva "use server" defines funciones que solo corren en el servidor, con RPC type-safe y una frontera cliente/servidor explícita.

📨

Actions y datos

action para mutaciones con progressive enhancement, y query más createAsync para cargar, cachear y revalidar datos.

☁️

Deploy portátil

Gracias a los presets de Nitro, el mismo proyecto se despliega en Node, Vercel, Netlify, Cloudflare o Deno cambiando una opción.

💡
Router y datos van de la mano

Las APIs de datos viven en @solidjs/router y SolidStart las integra: query deduplica y cachea, createAsync expone el resultado como una señal async, y action invalida la cache al terminar. Es un flujo de carga y mutación coherente, no piezas sueltas.

En código, ese flujo se ve compacto: una función de servidor con "use server" y un createAsync que la consume como si fuera una señal más del grafo.

import { query, createAsync } from "@solidjs/router";

const getUsuario = query(async (id: string) => {
  "use server"; // este cuerpo solo corre en el servidor
  return db.usuarios.find(id);
}, "usuario");

function Perfil(props: { id: string }) {
  const usuario = createAsync(() => getUsuario(props.id));
  return <span>{usuario()?.nombre}</span>;
}

Primitivos, herramientas y estándares

solid-primitives es el análogo comunitario oficial de una librería de utilidades: cada primitivo sigue una convención estricta (tamaño, tree-shaking, SSR) y se publica de forma independiente, así que solo cargas lo que usas. Las Solid DevTools te dejan ver el grafo reactivo por dentro —qué observa a qué, qué se ejecutó y por qué—, algo especialmente valioso cuando el modelo mental aún es nuevo. Algunos primitivos que aparecen una y otra vez en código real:

  • createMediaQuery y createBreakpoints — responsividad como valor reactivo.
  • makePersisted — sincronizar un signal con localStorage o sessionStorage.
  • createEventListener — eventos del DOM con onCleanup automático.
  • debounce y createScheduled — control temporal de efectos.
ℹ️
Astro y Solid conviven bien

Con @astrojs/solid-js puedes usar componentes Solid como islas dentro de un sitio Astro: contenido estático servido sin JavaScript e interactividad de grano fino solo donde hace falta. Es una de las combinaciones más limpias del frontend actual.

El proyecto en 2026

Solid es un proyecto dirigido por su comunidad, con Ryan Carniato al frente del diseño reactivo, financiación vía patrocinios y OpenCollective, y una base de usuarios pequeña pero fiel. La línea 1.9 es la estable y madura; Solid 2.0 avanza en preview, con un nuevo núcleo reactivo cuyo objetivo es la transparencia async —tratar valores asíncronos dentro del grafo sin cablear Suspense a mano— y un modelo de ownership afinado.

La transparencia async es el cambio de fondo de la 2.0. Hoy, coordinar datos asíncronos exige envolver el árbol en Suspense y pensar de forma explícita en los estados de carga; el nuevo runtime aspira a que una derivación que dependa de un valor async se comporte como cualquier otra derivación, propagando la carga por el grafo sin ceremonia. Es la misma tesis de grano fino llevada al mundo asíncrono. Mientras llega, la 1.9 es una base sólida para producción y la migración se ha planteado como evolutiva, no como una ruptura traumática.

🟢

Core estable

La línea 1.9 es madura y apta para producción; la API reactiva lleva años asentada.

🧪

Solid 2.0 en preview

Nuevo núcleo con transparencia async y ownership afinado, con migración pensada como evolutiva.

💛

Comunidad y fondos

Dirigido por su comunidad, con patrocinios y OpenCollective; pequeña pero constante.

📐

Influencia estándar

Su modelo de signals alimenta la propuesta de TC39, más allá del propio Solid.

Un ecosistema pequeño por diseño, no por descuido

Es tentador medir un framework por el tamaño de su ecosistema, y por esa vara Solid pierde ante React. Pero la comparación engaña, porque Solid necesita menos ecosistema para lo mismo. Al reutilizar el DOM y APIs web estándar en vez de reinventarlas, muchas librerías de JavaScript vanilla funcionan sin adaptador. Al no re-renderizar, no hace falta un universo de utilidades de memoización ni de gestión de estado para frenar renders que no existen. La reactividad de grano fino sirve de estado global sin librería: un store en un módulo basta. Así que el ecosistema reducido no es una carencia que haya que tolerar, sino la consecuencia de un diseño que resuelve en el core lo que otros delegan a terceros. Menos piezas, pero cada una carga más peso. Evalúa la cobertura de tus necesidades reales, no el recuento de paquetes en npm.

⚔️ Explora el mapa
  1. Crea un proyecto con SolidStart y localiza dónde vivirían las rutas y las server functions.
  2. Instala la extensión Solid DevTools y observa el grafo reactivo de un contador en vivo.
  3. Busca en solid-primitives un primitivo que te ahorre código, por ejemplo uno de storage o media query.
  4. Anota qué de tu stack de React actual dejaría de ser necesario aquí, y por qué.