La gestión de estado sigue siendo uno de los temas más debatidos en el ecosistema de React y Next.js. A medida que las aplicaciones crecen en complejidad, tamaño de equipo y requisitos de rendimiento, elegir la herramienta adecuada se convierte en una decisión estratégica que impacta directamente en la mantenibilidad, el rendimiento y la escalabilidad del proyecto.
En este artículo analizamos en profundidad los patrones avanzados de gestión de estado comparando Redux, Zustand y Jotai. No nos limitaremos a explicar cómo usar cada librería, sino que exploraremos sus filosofías, patrones arquitectónicos recomendados, casos de uso reales en aplicaciones Next.js y las mejores prácticas para lograr máxima escalabilidad en 2025.
Desde los días de Flux y Redux como estándar indiscutible, el panorama ha cambiado drásticamente. La introducción de hooks en React 16.8 abrió la puerta a soluciones más ligeras y composables. Context API prometió simplificar las cosas, pero rápidamente mostró sus limitaciones en aplicaciones medianas y grandes debido al problema de re-renderizado innecesario.
En los últimos años hemos visto un claro movimiento hacia soluciones atómicas y minimalistas. Jotai y Zustand representan esta nueva generación: librerías que priorizan la simplicidad sin sacrificar escalabilidad. Mientras Redux sigue siendo extremadamente poderoso para aplicaciones empresariales con requisitos complejos de middleware, devtools y patrones maduros, las nuevas alternativas ofrecen mejor ergonomía y rendimiento en muchos escenarios modernos, especialmente en aplicaciones Next.js con Server Components.
La elección ya no es solo técnica, sino también cultural. Equipos que valoran la velocidad de desarrollo y la simplicidad tienden hacia Zustand o Jotai. Equipos que necesitan trazabilidad completa, patrones estrictos y una arquitectura bien definida suelen mantener Redux como base, a veces combinándolo con herramientas modernas.
Redux Toolkit (RTK) ha modernizado enormemente la experiencia de desarrollo, eliminando gran parte del boilerplate histórico. La combinación de createSlice, configureStore y Redux Toolkit Query ha convertido a Redux en una solución completa que va más allá de la simple gestión de estado.
En aplicaciones Next.js, Redux brilla especialmente cuando se necesita una gestión centralizada del estado del servidor y del cliente, caché avanzada, optimizaciones de revalidación y una trazabilidad completa de las acciones. Su ecosistema maduro incluye excelentes herramientas de desarrollo, middleware probados y una comunidad enorme.
El patrón más potente en aplicaciones modernas es la combinación de Redux con Next.js App Router mediante un Redux Provider en un Client Component estratégico. Se recomienda crear un StoreProvider que hidrate el estado inicial desde el servidor usando useHydrateAtoms o equivalentes.
Otro patrón avanzado es el uso de Entity Adapters combinado con RTK Query para gestionar tanto el estado de UI como el estado del servidor de forma eficiente. Esta aproximación permite normalizar datos complejos y mantener una única fuente de verdad incluso en aplicaciones con múltiples dominios.
Zustand ha ganado popularidad masiva por su API minimalista y excelente rendimiento. Su filosofía se basa en stores muy simples que pueden ser tan granulares o tan globales como necesites. A diferencia de Jotai, Zustand mantiene un enfoque más tradicional de «store» pero sin el boilerplate de Redux.
En el contexto de Next.js, Zustand destaca por su facilidad de integración con Server Components y su excelente soporte para hidratación. La librería permite crear stores fuera del árbol de React, lo que la hace ideal para lógica que debe ejecutarse tanto en el servidor como en el cliente.
Uno de los patrones más potentes es el uso de stores por dominio combinado con selectors memoizados. Zustand permite crear múltiples stores pequeños y altamente cohesionados, evitando el problema de un único store monolítico.
Otro patrón interesante es el uso de subscribeWithSelector y la creación de stores derivados. Esto permite mantener lógica compleja fuera de los componentes mientras se mantiene una suscripción óptima y granular al estado.
Jotai representa el paradigma más radical de los tres. Su concepto de «átomos» como unidad mínima de estado permite una granularidad extrema y elimina virtualmente los re-renders innecesarios. Cada pieza de estado es independiente y solo los componentes que realmente dependen de un átomo se vuelven a renderizar.
Esta aproximación atómica es especialmente poderosa en Next.js, donde podemos combinar átomos con Server Components, React Suspense y patrones de streaming de forma muy natural. Jotai brilla particularmente en aplicaciones con interfaces de usuario complejas donde el rendimiento de renderizado es crítico.
Los átomos derivados (derived atoms) son una de las características más poderosas de Jotai. Permiten crear lógica computada que se actualiza automáticamente cuando cambian sus átomos dependientes, similar a los selectores de Redux pero con una API mucho más simple.
El soporte nativo para asincronía con loadable y la integración con Suspense hace que Jotai sea una opción excelente para aplicaciones que consumen muchos datos remotos. Combinado con atomWithStorage, atomWithLazy y atomWithReset, ofrece un conjunto completo de primitivas para construir arquitecturas escalables.
La elección entre estas tres soluciones depende de varios factores clave: tamaño del equipo, complejidad del dominio, requisitos de rendimiento, curva de aprendizaje deseada y madurez del proyecto.
| Aspecto | Redux (RTK) | Zustand | Jotai |
|---|---|---|---|
| Curva de aprendizaje | Media-Alta | Baja | Baja-Media |
| Boilerplate | Medio (con RTK bajo) | Muy bajo | Extremadamente bajo |
| Rendimiento | Bueno (con optimizaciones) | Excelente | Superior (renderizado granular) |
| DevTools | Excelentes | Buenas (con middleware) | Aceptables (en desarrollo) |
| Server Components | Bueno | Muy bueno | Excelente |
| Ecosistema y madurez | Muy alto | Alto | Medio-Alto |
| Mejor para | Apps empresariales complejas | La mayoría de aplicaciones | Interfaces complejas y rendimiento crítico |
Una estrategia cada vez más popular es el uso de enfoques híbridos. Por ejemplo, usar Jotai para el estado de UI local (formularios, componentes de interfaz, estados efímeros) y Zustand o Redux para el estado de aplicación global y datos del servidor.
En aplicaciones grandes de Next.js, es común ver arquitecturas donde Jotai gestiona el estado atómico de componentes muy específicos, Zustand maneja el estado de features completas y Redux (o RTK Query) se encarga de toda la capa de server state y caching.
Elige Redux cuando tu aplicación tiene requisitos complejos de trazabilidad, necesitas un middleware muy sofisticado, trabajas en un equipo grande que valora convenciones estrictas o tienes flujos de datos muy complejos con muchas relaciones entre entidades.
Elige Zustand para la mayoría de aplicaciones. Ofrece el mejor balance entre simplicidad, rendimiento y escalabilidad. Es ideal para startups, productos medianos y aplicaciones que necesitan moverse rápido sin sacrificar calidad.
Elige Jotai cuando tu aplicación tiene una interfaz de usuario muy compleja, muchos estados locales interdependientes, o cuando el rendimiento de renderizado es una prioridad crítica. También es excelente para microfrontends y aplicaciones modulares.
La gestión de estado es como organizar una casa grande. Redux sería como tener un sistema de archivadores muy estructurado y completo: funciona muy bien pero requiere más esfuerzo inicial para configurarlo. Zustand es como tener cajones inteligentes que se organizan solos: sencillo, práctico y eficiente para la mayoría de las situaciones. Jotai es como tener cada cosa en su propio contenedor inteligente que solo se activa cuando lo necesitas: extremadamente eficiente pero requiere pensar de forma diferente.
Lo más importante no es cuál herramienta es «mejor» en abstracto, sino cuál se adapta mejor a tu equipo y tipo de proyecto. La mayoría de aplicaciones modernas obtendrán excelentes resultados con Zustand. Solo proyectos muy grandes o con requisitos muy específicos justificarán la complejidad adicional de Redux o la mentalidad atómica de Jotai.
Desde una perspectiva técnica avanzada, la tendencia clara en 2025 es hacia soluciones más composables y menos imperativas. Jotai representa el estado del arte en cuanto a granularidad y optimización de renders, mientras que Zustand ofrece la mejor relación calidad-esfuerzo para la mayoría de casos. Redux sigue siendo la opción más robusta para aplicaciones críticas donde la predictibilidad y la trazabilidad son más importantes que la velocidad de desarrollo.
Recomendación práctica: comienza con Zustand para la mayoría de nuevos proyectos. Si encuentras que necesitas más granularidad en componentes específicos, integra Jotai de forma complementaria. Reserva Redux para proyectos grandes con múltiples equipos o cuando necesites su ecosistema completo (RTK Query, excelente middleware, etc.). La verdadera maestría no está en dominar una sola herramienta, sino en saber combinarlas inteligentemente según las necesidades de cada capa de la aplicación.
La clave para la escalabilidad real no está solo en la librería elegida, sino en la arquitectura del estado: normalización de datos, separación clara entre server state y UI state, patrones de consumo selectivo y una buena organización por dominios. Cualquiera de estas tres herramientas puede escalar excepcionalmente bien si se utiliza con disciplina arquitectónica.
Crea interfaces impecables y eficientes con Alejandro Mejía. Especializado en React y NextJS, aseguramos diseños modernos y funcionales desde Madrid.