React Native: Primeras impresiones

Finalmente ya tengo una aplicación hecha con React Native en producción, así que ya te puedo contar con propiedad el estado del arte y mis primeros pasos con esta librería/framework para el desarrollo de aplicaciones con vistas nativas y código en JS que promete poner en apuros a los entornos nativos clásicos u oficiales.

 

Puesta en marcha

Lo primero y más tajante a la hora de empezar a desarrollar con este tipo de tecnologías es que si quieres tener una app en la App Store, vas a tener que comprarte un Mac ya que necesitarás Xcode y los simuladores de iOS o un iPhone para desarrollar la aplicación (no vale tener únicamente un iPhone). Algo curioso también es que si quieres mínimamente ser productivo el primer día ya puedes tener una conexión a internet de fibra óptica por que vas a necesitar descargar los SDK's de iOS (Xcode) y Android (Android Studio) a parte del proyecto React Native en si (unos 20GB en total). Una vez lo tengas todo instalado verás que es muy fácil empezar si sigues la documentación oficial de React Native ya que es bastante completa.

Un punto a distinguir para los desarrolladores web es que si se usa el paquete npm create-react-native-app este viene con el task-runner packager y no con webpack.

 

Al lío

Una vez lo tenemos todo instalado ya podemos ejecutar el comando npm run ios/android según nos guste y empezar a desarrollar nuestro código y es que empezar a desarrollar con React Native es bastante rápido una vez tenemos todas las dependencias instaladas, veremos que en cuestión de segundos tendremos un simulador o dispositivo mostrando la aplicación y que al cambiar una línea de código y pulsando dos veces la tecla R dentro del simulador se reflejarán los cambios en la aplicación, sin tener que reiniciar la aplicación entera ni recompilar el proyecto. Aquí es cuando se empieza a notar el poder de JavaScript (ES6 por supuesto) en cuanto al desarrollo de aplicaciones, es más, si ya conoces React te notarás añadiendo pantallas y lógica de manera muy ágil y modificando un solo fichero en la mayoría de los casos, en cuestión de minutos puedes tener un flujo de varias pantallas hecho.

 

Librerías

La mayoría de componentes nativos básicos ya vienen dentro del core de React Native tanto para iOS como para Android y React Native es capaz de saber que un botón en iOS tiene un aspecto y que en Android tiene otro, lo cual esta muy bien para una aplicación sencilla o para componentes muy básicos, no obstante seguramente terminarás necesitando un botón con un icono o un enrutador para tu aplicación, en ese caso la comunidad te tiene cubierto. Hay literalmente todo tipo de componentes hechos por la comunidad, algunos muy simples cómo botones que cuando los pulsas hacen una llamada de teléfono y otros que abstraen librerías nativas como google maps

 

Mi experiencia

Habiendo hecho desarrollo iOS nativo con Xcode y Objective-C donde para mi era impensable no trabajar con XIB's o Storyboard para crear las vistas y un trabajo tedioso escribir código asíncrono con Objective-C (existe una web solamente para documentar su sintaxis http://fuckingblocksyntax.com/) pasar a React Native ha sido un gran giro y para bien. Eso sí, no me he librado de Xcode, pero solo lo abro cuando tengo que hacer modificaciones en las configuraciones de las builds o quiero ver la app en un dispositivo. En cuánto a Android y Java por ahora nunca he tenido que abrir el Android Studio (que solo lo uso para gestionar los SDK's) más que para añadir librerías nativas que son dos lineas.

El poder escribir una aplicación móvil enteramente en JavaScript y que me encuentre cómodo renderizando vistas utilizando únicamente código y maquetando con flexbox ha sido una sorpresa para mi y ha terminado siendo un placer. Otro de los puntos fuertes es que la aplicación funciona tanto para iOS como para Android y solamente he tenido que hacer dos condicionales (por ahora) para maquetar dos componentes de manera distinta según la plataforma, por tanto ahora mismo reutilizo un 99% del código para las dos plataformas y en un futuro me gustaría poder reutilizar código con el backend y la aplicación web.

En cuanto a puntos negativos la verdad es que por ahora he encontrado pocos, la cantidad de dependencias y lo mucho que pesan, algunos errores bastante aleatorios al desarrollar con dispositivos que hacían que la aplicación no arrancase si no tenia el debugger abierto y el hecho de que se desconectara el dispositivo sin razón aparente. Al ya tener un Mac Book, haber hecho React en la web y desarrollar en iOS con Objective-C también han ayudado a que el camino sea más liso.

Finalmente me gustaría decir que hasta que las Progressive Web Apps no tengan un soporte más extenso de los dispositivos tengo muy claro que desarrollaré aplicaciones móviles con React Native o NativeScript y que no veo el porqué usar soluciones híbridas como Apache Cordova o Phonegap ya que el código es casi el mismo y con React Native tienes vistas nativas.

 

¡Saludos!

 

¿Te ha gustado el artículo? ¿Quieres que te avise de mis próximas publicaciones?

¿Quieres seguir aprendiendo?

Un año como autónomo

El pasado febrero hizo ya un año que decidí trabajar cómo autónomo en el gremio de desarrollo de aplicaciones y me gustaría hacer un ejercicio de retrospectiva para ayudarme a asentar pensamientos e ideas y al mismo...

Seguir leyendo