Redux dominó una década de React y hoy vive como legacy en la mayoría de los proyectos nuevos. Zustand, Jotai y signals redujeron el costo de re-render a niveles que la context API nunca alcanzó. Esta guía compara los tres modelos con benchmarks de render y criterios de elección por tipo de aplicación.
¿Redux todavía tiene lugar en 2026?
Lo tiene, en equipos grandes que valoran devtools maduros con time-travel, ecosistema de middleware y patrones impuestos por el framework. El boilerplate se encogió con createSlice y RTK Query, que cubren mutations y cache sin ceremonia extra. La disciplina sigue siendo obligatoria: una subscription via selector mal escrito provoca tormenta de re-renders.
¿Cómo funciona Zustand?
Un store único, hooks como selectores, cero providers y ningún dispatch. Cada componente se suscribe al pedazo de estado que usa, con funciones de igualdad (shallow de zustand/shallow) controlando el re-render al nivel del campo. El paquete pesa poco más de 1 kB minificado, y el middleware persist resuelve la sincronización con localStorage en dos líneas.
¿Cuándo brillan los átomos de Jotai?
Jotai arma el estado de abajo hacia arriba: átomos derivados calculan valores a partir de otros átomos, y átomos async se suspenden con React Suspense nativo. Ese modelo resuelve estados dependientes complejos, como wizards de formulario multi-etapa y filtros combinatorios en tiempo real. Cuando la derivación domina el dominio, Jotai ahorra código y bugs.
¿Los signals resuelven el problema de re-render?
Los signals traen reactividad de granularidad fina: la actualización toca el nodo exacto del DOM, sin pasar por el re-render del componente. Solid.js prueba el modelo en producción, Preact incorpora signals en la API pública, y React resiste la integración mientras la propuesta TC39 avanza. La fricción de interop con React existe hoy, así que la apuesta exige evaluación por proyecto.
¿Qué dice el benchmark de render?
Tabla de 10 mil filas actualizando una celda: estado en Context re-renderiza todo, Zustand con selectores re-renderiza la fila, signals actualizan la celda. Las diferencias llegan a órdenes de magnitud en tiempo de commit. Cuanto más grande la lista y más frecuente la escritura, mayor el abismo entre los modelos.
¿Cuál elegir para tu proyecto?
- ¿Domina el estado de servidor? TanStack Query carga con el peso y el estado cliente se reduce a concerns de UI
- ¿Caso general? Zustand como default pragmático
- ¿Dominan derivaciones en cadena? Jotai
- ¿La performance de render es contractual (dashboards en tiempo real, editores)? Signals donde la stack lo permita
¿Cómo migrar sin big bang?
La coexistencia funciona: convierte providers de Context en stores Zustand poco a poco, un dominio por PR. Mantén Redux donde los flujos de devtools son parte del trabajo del equipo. Adopta signals por isla en páginas híbridas, empezando por los componentes de mayor frecuencia de actualización.
¿Te gustó el contenido?
Construyo productos web y soluciones con IA de la manera correcta — arquitectura sólida, código sostenible y entrega real.
Hablemos