React Labs: Lo que hemos estado trabajando – febrero de 2024
La última hoja de ruta de React, incluido un compilador de optimización y funciones como la auto-memoización y las acciones de servidor, está provocando reacciones mixtas entre los desarrolladores frontend. Muchos ven estos avances como potentes, pero temen que React se haya vuelto demasiado complejo y “mágico”, especialmente con los hooks, React Server Components y la creciente influencia de Next.js y Vercel, lo que dificulta razonar sobre el código y vuelve más frágiles los pipelines de compilación. Otros sostienen que el ecosistema de React, la compatibilidad hacia atrás y su idoneidad para aplicaciones grandes y duraderas siguen justificando su elección, incluso cuando alternativas como Vue, Svelte, Preact, MobX, htmx y los frameworks del lado del servidor ganan interés por su simplicidad.
Create React App y herramientas
- CRA se considera efectivamente abandonado y nunca estuvo muy bien financiado; estaba pensado como un punto de partida, no como la herramienta de producción “mejor”.
- Los comentaristas señalan que las herramientas modernas (especialmente Vite) son más simples, rápidas y fáciles de depurar que la opaca configuración de Webpack de CRA.
- Algunos todavía usan CRA para aplicaciones pequeñas, pero reconocen problemas futuros debido al mal mantenimiento.
Hooks, complejidad y “magia”
- Muchos sienten que React se ha vuelto demasiado complejo, especialmente con hooks, hidratación y directivas de servidor/cliente.
- Los hooks se describen como un lenguaje incrustado con sus propias reglas que se apartan de la intuición normal de JS; los casos simples son más fáciles, pero depurar código complejo es más difícil.
- Otros argumentan que los hooks aumentan la explicitud, encajan mejor con la arquitectura concurrente de React y no son inherentemente confusos una vez que se aprende el modelo mental.
- Hay frustración porque las explicaciones y la guía de React sobre hooks (por ejemplo,
useEffect) han cambiado con el tiempo, lo que causa confusión.
Compilador de optimización / auto-memoización
- El nuevo compilador (React Forget) busca auto-memoizar y eliminar muchos patrones manuales de
useMemo/useCallback. - A algunos les impresiona, pero les inquieta la “magia” de cambiar el comportamiento basándose en análisis semántico del valor en tiempo de compilación, especialmente cuando altera la semántica percibida del lenguaje.
- Surgen preocupaciones por otra capa de compilador más en pipelines de compilación ya complejos.
Debates sobre gestión de estado
- Debate sobre si
useReducer+useContextpuede reemplazar a Redux; una parte afirma que sí, la otra enfatiza diferencias de rendimiento y suscripción. - Se menciona Redux Toolkit por haber reducido el boilerplate, pero algunos siguen percibiendo Redux/RTK como verboso.
- MobX recibe elogios por su reactividad sencilla y la separación entre dominio e interfaz de usuario, pero los críticos dicen que la reactividad push estilo observer conduce a espagueti y recomputaciones sorprendentes.
React frente a alternativas
- Varios comentaristas recomiendan Vue, Svelte, Preact, htmx, Rails/Hotwire o el renderizado tradicional en servidor como opciones más simples e intuitivas.
- Otros responden que el modelo de modo inmediato de React, su enorme ecosistema, su pool de contratación y su fuerte compatibilidad hacia atrás siguen haciéndolo la opción pragmática, especialmente para aplicaciones web complejas y React Native.
- Algunos ven el React moderno como un sistema nuevo, más enrevesado, montado sobre la popularidad de la biblioteca original.