Juan Celestino Barberis

React Native después de 6 meses de uso

Introducción

Soy un desarrollador de PHP principalmente, que hasta hace un tiempo no me había animado a hacer frontend más allá de jQuery (con Bootstrap).

En mi trabajo salió un proyecto pequeño, el cual era desarrollar una app para iOS y Android. Se me encargó el desarrollo, al cual después se le sumó el backend. Terminé con el stack completo de la aplicación.

Estaba en cero en cuanto a tecnologías móviles, y después de investigar un poco, acoté la búsqueda a dos. Flutter y React Native. A continuación, detallo el porqué elegí React Native, lo bueno, lo malo y lo que recomiendo en el desarrollo con esta tecnología.

¿Por qué React Native sobre Flutter?

Elegí React Native porque me pareció la manera de matar dos pájaros de un tiro. Aprendía React, después React Native y abarcaba la web y el mundo de los celulares.

Además el hecho de que sea Javascript, me facilitó para que el lenguaje no sea una cosa más a aprender, ya que Flutter está desarrollado sobre Dart.

Lo bueno

  • La comunidad es muy basta, hay troubleshooting para casi todos los problemas que se presentan en el desarrollo. También esto incluye a las cantidad de librerías que tiene React en general para hacer practicamente cualquier cosa.

  • Expo es un aliado a la hora de desarrollar con React Native. De hecho, me duele la cabeza si pienso lo que debe ser desarrollar sin Expo. La posibilidad de enviarle un link a alguien y que pueda levantar la app en tiempo real en su teléfono es una gran cosa.

  • Expo tiene un servicio (gratuito) para compilar las aplicaciones en su nube. Simplemente con un par de comandos muy sencillos te sube el bundle y te devuelve el respectivo binario. Esto es una maravilla.

  • Muchas aplicaciones (y grandes) están hechas con RN. Esto en mi opinión da una "seguridad" de que el menos por unos años vamos a seguir viendo a React Native como una de las principales opciones para el desarrollo móvil híbrido.

Lo malo

  • La inestabilidad del proyecto. Y con esto me refiero a cómo la aplicación tiende a tener errores extraños, poco claros y a veces poco documentados. Me pasó muchas veces de simplemente instalar una librería y que todo el proyecto se rompa por completo. La solución siempre es la misma, borrar la carpeta node_modules y volver a correr la instalación. Recientemente me pasó de iniciar nuevos proyectos con Typescript y que estos comiencen a arrojar errores sin haber metido mano aún al proyecto. Esto me genera mucha desconcierto, porque siento que toda mi aplicación puede venirse a pique si llego a actualizar un paquete que no debo.

  • Librerías abandonadas. Esto igualmente pasa en todos los lenguajes y tecnologías, pero React no es la excepción.

  • JSX es inferior en algunos aspectos. Por ejemplo, en el no uso de CSS, lo cual limita algunas cosas. Me pasó de querer utilizar un linear-gradient y StyleSheets no lo tiene implementado, de hecho hay que recurrir a una librería externa para dicha funcionalidad.

Recomendaciones

  • Es fundamental usar Typescript, no solo para React Native sino para todo proyecto de JS que iniciemos. Javascript tiene muchos problemas de consistencia, es un lenguaje demasiado blando. Si bien TS no soluciona todo esto, sí que es una potente herramienta para no mezclar tipos de datos.

  • Buen manejo de JS moderno para que el código no sea un espagueti. Y con esto me refiero a entender las promesas, los callbacks, módulos, arrow functions y las características más modernas de la sintáxis de JS. No es que sea un exigente, pero sin estas cosas entramos en malas prácticas de Javascript, típicas de la web antigua.

  • Buscar cómo se estructuran los proyectos, qué carpetas hay que tener y cómo tener un orden en el código. Esto lo digo porque React es una librería simplemente, no otorga ninguna estructura de carpetas o línea a seguir, por lo que uno puede meter toda la aplicación dentro de un archivo y podría funcionar tranquilamente.

Me gusta React Native, de hecho fue lo que me dio paso a implementar React en proyectos web, y es una maravilla. Aunque, no me cerraría a probar otras tecnologías como Flutter, que según leí por ahí, con la salida de Flutter 2 metieron cosas muy interesantes.

Si venís trabajando con React, Vue o alguna otra librería orientada a componentes, entrar en React Native va a ser muy sencillo.