Enero 07, 2022

React, el Php del frontend

Desde sus inicios en 2013 - 2014 he tenido una relación amor / odio con React, primero no me gustaban las clases en los componentes para manejar el estado de la aplicación, luego me incline por Angular, que desde su versión 2 en adelante presenta mejoras sustanciales y al ser un framework cuenta con todo lo que necesitas para desarrollar tu aplicación desde la creación del proyecto y no tener que depender de librerías de terceros para partes imprescindibles como por ejemplo la navegación.

Cada año desde entonces pude observar cómo React ha ido acaparando el mercado con sus mejoras y nuevas funcionalidades, las cuales están muy bien implementadas y son siempre bien acogidas por la comunidad.

Un poco de historia

React aparece para el público por primera vez en 2013 con la versión 0.3.0, pero para mi la versión 15.0.0 es una de las más importantes en cuanto a la estructura que nos lleva a la librería como la conocemos hoy. Los hitos más sobresalientes a mi modo de ver son:

  • 15.4.0 Remueven React DOM del build
  • 16.8.0 Añaden los hooks(cambio crucial bajo mi punto de vista, para mejor)
  • 18.0.0 Suspense SSR

Que me gusta

En lo personal pienso que React le da al desarrollador mucha libertad para poder hacer sus proyectos como le dé la gana dentro de un marco general. Esto es su punto más fuerte en mi opinión ya que, si eres una persona que organiza bien sus proyectos y trabaja de forma estructurada bajo ciertos patrones de arquitectura, te dará mucha flexibilidad. Otros puntos que encuentro que destacan son:

  • Es una librería liviana
  • El flujo de datos en solo una dirección
  • Existe mucha documentación y ejemplos(tutoriales, cursos, etc.)
  • La reusabilidad de componentes
  • Facilidad de encontrar trabajo
  • Curva de aprendizaje inicial baja
  • El uso de JSX por sobre hacerlo con vanilla Javascript
  • El uso del virtual DOM
  • Incorporación de Hook
  • Incorporación de Context como alternativa a Redux

Como se puede ver existen muchos puntos a su favor para considerarla como "LA" alternativa para hacer frontend en este momento.

Que me desagrada

Aquí para mi es muy fácil decidir cúal es el aspecto que por lejos más me desagrada de React y es que es una librería, por lo cúal no cuenta según mi punto de vista con un core esencial para funcionar, lo que genera que se deben ocupar librerías externas para suplir estas faltas. Otros puntos que según mi apreciación no destacan son:

  • Re render excesivo por parte del árbol completo de componentes
  • Por lo mismo problema con el uso de formularios
  • No poseer un sistema de navegación propio. Encuentro este esencial, no puedes dejar en manos de terceros algo tan importante
  • Antes de los Hooks, la forma como se manejaba el state en base a Class Base components
  • Libertad en proyectos grandes es igual a caos

Como se puede ver no son muchos puntos pero según mi perspectiva muchos de ellos son esenciales para la buena experiencia de desarrollo y la conclusión de un producto exitoso.

Porqué uso React ahora

Después de mucho tiempo nadando contra la corriente (usando otras alternativas como: Angular, Vue, Vanilla Javascript), a mediados del año pasado empecé a adoptar React y todo su ecosistema (Next, Redux Toolkit, etc), como mi stack principal para desarrollar frontend. No me arrepiento, me agrada trabajar con esta librería, pero como habrás notado hay cosas que no puedo dejar pasar como los múltiples re render, la utilización excesiva de paquetes de terceros ya que React en sí carece de muchas cosas que pienso son esenciales aunque sea una librería y no un framework, por tanto debería tener. En estricto rigor me cambie por una cosa de oportunidades de laborales, así como la utilización del ecosistema (NextJs en particular), que me parece ha evolucionado mejor que las otras librerías o frameworks que ocupaba y se ve que en esa dirección va el futuro del frontend.

Otra razón fundamental es el uso de Redux toolkit, que lo encuentro mucho más intuitivo y fácil de usar que Redux por sí solo para manejar el estado de la aplicación especialmente en proyectos grandes.

Por último hago mucho desarrollo móvil multiplataforma con React native, por lo cual, poseer una tecnología base tanto para web como móvil me ayuda en la reutilización de código, tener un mejor conocimiento de la librería entre otros beneficios.

Porqué pienso que es tan popular

El motivo más claro que se puede ver es el mismo por el cual Php fue tan popular en los 2000, su adaptabilidad y todas sus ventajas son lo que todo desarrollador busca, fácil de implementar(en su mayor parte), fácil de aprender, componentes reutilizables y tutoriales. Por otro lado la adopción de esta tecnología por parte de las grandes aplicaciones de hoy en día logró catapultar su popularidad más haya que sus virtudes lo podrían haber hecho, por ejemplo decir que algo como Twitch usa React, o Twitter o cualquier frontend complejo de hoy en día es mucho mejor propaganda que decir que es rápido o fácil de aprender.

Podríamos decir qué React es balanceado en cuanto a su prestaciones por lo cual se ha convertido en la librería preferida de la mayor parte del mercado. Otra cosa a mi modo de ver le ha jugado a favor y pienso que es una gran fortaleza es lograr evolucionar la librería (nuevas funcionalidades, arreglo de bugs, etc.) sin probocar breaking changes para el desarrollador, esto lo encuentro fundamental, ya que, aunque a uno le encante aprender no quiere volver a cero con cada nueva versión, como lo que pasó entre Angular 1.x y Angular 2 (que según mi punto de vista nunca pudo recuperarse en cuanto a comunidad y popularidad).

Para este año veremos si algún otro competidor pasa a la delantera en popularidad (vengo escuchando hace como 3 años que Svelte se viene con fuerza), y nos genera la necesidad de cambiarnos una vez más.

© 2022 Alejandro Alvarez. All Rights Reserved.