Pirobits
  

Cambio de rumbo I: adiós react

alberto avatar Alberto Sola · 5/31/2023 · 4 min

Este blog ha sido mi campo de pruebas para disfrutar aprendiendo tecnologías, analizando ventajas e inconvenientes de cada una. Pero, ¿por qué abandono React?

Me he divertido mucho probando y experimentado con todo tipo de frameworks que se basan en React.js: gatsby, remix, next.js... React me gusta, llevo usándolo unos cinco años en muchos proyectos, tanto personales como profesionales. El desarrollo es divertido y la experiencia es muy cómoda, ya que frameworks como Next.js traen todo lo que probablemente necesites para empezar.

⚠️ Importante: Quiero incidir que cada herramienta tiene sus ventajas y sus inconvenientes. Es responsabilidad tuya, como ingeniero, decidir qué herramienta es la que cubre mejor tus necesidades y en mi caso, React o Next.js han dejado de serlo y te voy a exponer por qué.

¿Por qué abandono React en algunos proyectos?

En este post me quiero centrar en contarte qué problemas me encuentro en mi día a día, ya que mantengo múltiples proyectos que tienen cada vez más dependencias, y se hace cada vez más insostenible por diferentes motivos:

  • Tiempo: cada vez paso más tiempo manteniendo y desarrollando funcionalidades que considero que podrían ser más simples o ni si quiera existir. Hay opciones para reutilizar código como los monorepos (que me encantan) pero me parece que elevan la complejidad en este caso y no terminan de solucionar algunos problemas.
  • Falta de optimización: he observado la falta de optimización de muchas partes en el ecosistema de node. A día de hoy se están haciendo muchos esfuerzos con Rust en herramientas como Turbopack o SWC, o con GO como ESBuild. Personalmente me encanta ver cómo estas neuvas herramientas están ayudando en gran medida a mejorar esta parte.
  • Consumo de CPU: React tiene algunos problemas de base, como el Server-Side-Rendering o SSR. La opereación renderToString es muy costosa a nivel de CPU. Es cierto que a día de hoy comienzan a salir algunas novedades que intentan optimizarlo (server components, streming…), pero creo que es un problema más profundo.
  • Tamaño considerable: el ecosistema de Javascript tiene muchas dependencias, haciendo la carpeta node_modules un agujero negro que consume almacenamiento. Muchas veces me pregunto cuánto código habrá ahí sin mantener, dependencias de dependencias en las que no sabemos realmente qué estamos ejecutando.
  • Sobrecarga del navegador: tanto con Next.js como con Gatsby se pueden generar estáticos pero, ¿y todo el javascript que tiene que descargar y procesar el navegador?

Cambio de rumbo: estáticos

Mi objetivo es optimizar mis recursos, principalmente teniendo en cuenta el coste y el tiempo, tanto de desarrollo como de mantenimiento.

Muchas veces no tenemos en cuenta el tiempo como un recurso importante, pero al final, en la vida, es lo más valioso y limitado, y hay que tenerlo en cuenta.

Es por esto que quiero explorar el utilizar otros lenguajes como Go o Rust, que me permitan optimizar dichos recursos. Los dos principales puntos que me han hecho replantearme dicho cambio han sido dos:

  • El tiempo empleado en mantener y desarrollar componentes, mantenimiento de dependencias, reutilización de código… se hace cada vez más tedioso, y para mí solo, prefiero evitar toda esta complejidad mientras no lo necesite.
  • Los recursos que necesito a nivel de infraestructura (CPU, RAM y almacenamiento: construcción de imágenes docker, node_modules, etc.) me parecen demasiados cuando podría ser algo mucho más simple.

Si te pones a analizar la gran mayoría de páginas podrían ser plantillas de HTML renderizados una vez y servidos múltiples veces (estáticos) o generados en cada petición (dinámicos). Como en todo hay excepciones: ciertas aplicaciones sí se pueden beneficiar de este tipo de ser un SPA con React, Angular, Vue… como son las aplicaciones de mapas, reproductores de música u otro tipo de aplicaciones web que pueden no necesitar Server-Side-Rendering (SSR).

Por tanto he empezado a experimentar con sistemas de plantillas, probando a recrear este blog con unos pocos ficheros estáticos y la verdad no me arrepiento.

He reducido tanto los tiempos de desarrollo como la optimización de mi servidor. Te lo contaré en los siguientes posts jeje.

Conclusión

React me parece una herramienta ideal para algunos casos de uso pero, como ingeniero de software buscando la optimización, he decidido abandonarlo en algunos proyectos pasándome a plantillas de HTML para optimizar mi tiempo y los recursos que necesito.

En el siguiente post iré contando el camino, y recuerda suscribirte a la newsletter para no perdértelo 😉

Si te ha resultado útil este artículo agradecería si te suscribes a mi newsletter. Recibirás contenido exclusivo de calidad y también me ayudarás enormemente. Cada suscripción apoya el trabajo que realizo y me permite conocer mejor los temas que te interesan, de forma que puedo mejorar los conocimientos que comparto contigo.


Posts recientes