¿Es React Native la solución definitiva?

¿Es React Native la solución definitiva?

Desde hace un tiempo en movilidad ha surgido la necesidad de resolver la problemática de intentar unificar el desarrollo duplicado de códigos nativos.

Durante años diversas compañías han desarrollado productos para intentar minimizar de alguna manera ese trabajo laborioso de desarrollo en los diferentes lenguajes móviles y con el tiempo el mercado ha ido cambiando; desde Phonegap o Cordova, hasta las actuales Progressive Wep Apps (PWAs), aplicaciones desarrolladas con tecnologías web y proporcionadas desde la misma web que pueden funcionar como aplicaciones nativas, el mercado ha ido evolucionando para dar una respuesta útil y óptima a esta necesidad.

Hoy en día podemos decir que sólo hay dos grandes sistemas operativos en el mundo móvil, Android e IOS, pero la necesidad de unificar dichos códigos sigue estando ahí.

Es en este punto donde entra en juego React Native.

React Native

React Native nació en Facebook y fue lanzado en el 2015. Se trata de un Framework diseñado para desarrollar en JavaScript o en Typescript y que genera como resultado final aplicaciones nativas que pueden correr sobre Android e IOS. Una parte importante a destacar es que React Native interactúa a nivel interno con código nativo IOS o Android, lo que hace se distinga de soluciones pasadas que acababan ejecutándose en una especie de navegador embebido.

La parte más tediosa de trabajar con React Native es la de generar las compilaciones para distribución, aunque para facilitar dicho trabajo poseemos herramientas de código abierto como Expo.io.

Expo.io es una plataforma de código abierto que funciona como una capa por encima de React Native y nos permite agilizar los procesos de montar y distribuir una aplicación de este tipo.

React Native trabaja principalmente con lenguaje web, también posee una parte interna que interactúa con código Java o Swift.

Muchas de las funcionalidades móviles (cómo las interacciones con la cámara, las notificaciones push, etc.) ya estarán implementadas por Facebook, que desarrolla y da soporte a este framework que se encuentra actualmente en la versión 0.63, pero algunos casos especiales, errores singulares o nuevas funcionalidades, pueden requerir bajar a nivel interno donde se necesita saber de Java y/o Swift.

Tenemos que ir con cuidado ya que para seguir el alcance de nuestro aplicativo requeriremos no solo de conocimientos sobre React y Typescript, sino también de los códigos nativos.

Antes de decidir, tendremos que sopesar al menos las siguientes ventajas y desventajas:

Ventajas:

  • Rapidez de desarrollo
  • Código Typescript o JavaScript, que posibilita reciclar a programadores web
  • Fácil de entender por nuevos programadores
  • Mas fácil de mantener y modificar que el código nativo
  • Mejor rendimiento en dispositivo que PWA (Progressive Wep Apps)

Desventajas:

  • Compilación tediosa y difícil (a no ser que se usen Expo.io u otras utilidades)
  • Aplicaciones más pesadas que las de código nativo.
  • Problemas al acceder a funciones nativas (GPS, Notificaciones Push…)
  • Errores y logs poco descriptivos
  • Documentación de React Native poco clara y ambigua en ocasiones.
  • Al depender de Facebook y sus desarrollos puede ser que funciones o utilidades nuevas de los dispositivos no estén implementadas en un tiempo.

Tras plantear pros y contras queda la pregunta clave: ¿es React Native la solución actual a todos nuestros problemas en movilidad?

No, o al menos no lo es actualmente, pero sí puede ser un gran aliado si sabemos en qué proyectos aplicarlo.

Cada tecnología tiene un lugar y un uso y React Native no es una excepción, puede ser nuestro mejor aliado o un bloqueo para nuestro proyecto.

Si una organización o un equipo puede permitirse tener dos grupos para desarrollo en nativo, esta será la opción más optima, pero cuando este no sea el caso , cómo por ejemplo en equipos reducidos, se ha de valorar el conocimiento y el perfil de los componentes del equipo antes de elegir React Native, ya que, aunque su curva de aprendizaje es rápida, existen otras alternativas viables que quizá se amoldan mejor a los conocimientos del equipo.

Por último, y quizá lo más importante, hay que valorar también que tipo de aplicación quiere hacerse; si el objetivo es una aplicación para consultar y guardar datos, React Native es una buena opción, pero si requiere interacciones más complejas, como por ejemplo seguimiento de GPS mediante mapas, esto será mucho más complicado de implementar y nos requerirá conocimientos de código nativo.

En Trentia apostamos por utilizar diversas tecnologías e innovar en la manera de desarrollar nuestros proyectos. Somos Camaleones Digitales.

De hecho tenemos gran experiencia trabajando por ejemplo con Xamarin, pero siempre mirando al futuro y viendo hacia dónde van las Nuevas Tecnologías, probándolas antes internamente. A la vanguardia con solidez.

Siempre avanzando, creciendo e innovando.

Somos Trentia Digital Working.

Abraham Boj y David González
Abraham Boj y David González
IT Consultant