fullscreen

¿Qué es React Native? El modo de desarrollar apps está cambiando

Una de las principales preguntas que como empresa especializada en desarrollo de apps recibimos por parte de nuestros clientes es ¿app en nativo o híbrida?. Hasta ahora éstas eran, simplificando un poco, las principales opciones, además de la propia evolución de la tecnología web, especialmente de progressive web app. 

Pero en este momento Facebook ha impulsado su tecnología React Native, que nos permite desarrollar aplicaciones nativas (utilizando Javascript). ¿Qué significa esto en términos que cualquier persona pueda entender?, básicamente su principal aportación es la simplificación de los procesos de desarrollo, permitiendo desarrollar bajo un código único las aplicaciones para iOs y Android.

Desarrollar una app con React Native implica desarrollar con un único código tanto para iOs como para Android.

¿Quién está detrás de esta tecnología? Facebook es el principal impulsor (aspecto que también hay que tener en cuenta y que puede dar para otro post sobre sus implicaciones) y, en principio, el sector lo ha tomado como una garantía. Además, empresas como Instagram, Airbnb, Skype, Tesla o Uber (para Uber Eats) ya están apostando por este framework para sus propias aplicaciones.

Para entender el impacto que puede tener esta tecnología en los costes a la hora de desarrollar una aplicación para las plataformas iOs y Android es importante recordar que, hasta ahora, una aplicación nativa con calidad y funcionalidad completa requería programar para cada una de las plataformas su propia aplicación: Objective-C o Swift para iOs y Java para Android, duplicando prácticamente el coste de producción en las fases de desarrollo y testeo.

¿Y no es eso lo que hacían las aplicaciones híbridas? La respuesta es no. Las aplicaciones híbridas (como las desarrolladas con Cordova, Ionic, etc.) básicamente ejecutaban aplicaciones web en navegadores app. Se podría decir que se desarrollaba una web con apariencia de app y esta se ejecutaba en un contenedor llamado Webview. Esta tecnología, muy útil para aplicaciones sencillas y efímeras es, sin embargo, insuficiente para aplicaciones que realmente necesitan utilizar todas las posibilidades de los dispositivos móviles. Nos referimos a servicios como la cámara, notificaciones asíncronas, gps, nfc, sensores de movimiento, funcionamiento offline, etc. Y la experiencia nunca ha llegado a ser tan estable y fluida como una aplicación desarrollada en código nativo. Por este motivo, ninguna aplicación entre las más descargadas de los marketplaces ha sido desarrollada con tecnología híbrida.

¿Y cómo consigue React Native con un solo código ofrecer una experiencia nativa? Esta tecnología, en términos inteligibles, prácticamente ofrece un traductor, ejecutando el código de React Native en Objective-C para iOs y Java para Android. Por lo tanto, la experiencia de usuario es idéntica a una aplicación nativa. Efectivamente, React Native no es un webview; todo lo que el usuario ejecuta en su dispositivo es absolutamente nativo.

Entonces, ¿debemos elegir React Native para nuestros proyectos? Pues, como siempre, depende. Aunque realmente la gran mayoría de proyectos pueden beneficiarse de las ventajas que nos aporta React Native y la programación en código nativo puede verse relegada a un segundo plano, tenemos que tener en cuenta que React Native utiliza el lenguaje de programación más utilizado del mundo (Javascript) y el gestor de paquetes más grande del mundo (NPM). Esto, para el que no sea programador, significa garantías y estabilidad a largo plazo. Es decir, la tecnología utilizada no será interrumpida y, además, cuenta y contará con una amplia comunidad. No estamos ante un experimento arriesgado en el que nos podamos quedar tirados o solos a mitad del camino.

Además, los desarrolladores tendrán acceso a todas las características que los SDK nativos ofrecen, por lo que, a diferencia del desarrollo híbrido, esta tecnología permite explotar el 100% de las posibilidades de las plataformas (iOs y Android) y, por lo tanto, de los dispositivos. Respondiendo a la pregunta, es posible que React Native pase a ser el código utilizado por defecto por muchos desarrolladores o empresas de desarrollo app, relegando el nativo a proyectos con características muy concretas.

¿Entonces ya no debemos programar en nativo? El código nativo actualmente sigue ofreciendo un grado mayor de independencia, algo que grandes proyectos para los que el coste no es un aspecto fundamental sigan valorando. También en aquellos proyectos en los que voluntariamente las aplicaciones para las diferentes plataformas sean marcadamente diferentes, podría tener sentido desarrollar en nativo sin pasar por un framework “intermedio”. En cualquier caso, siempre se debe evaluar el objetivo del proyecto y pensar con una mente abierta qué infraestructura y tecnología es la mejor para atender los requerimientos de cada caso. En tecnología ser sectario no es nada positivo.

¿Se puede hacer todo con React Native? Lógicamente una de las principales dudas es qué se puede hacer y qué no con React-Native, pero la respuesta es un rotundo sí. La comunidad de desarrollo para esta plataforma no deja de crecer y los propios desarrolladores de Facebook no dejan de publicar nuevas funcionalidades nativas para ampliar las posibilidades, no obstante otra de las ventajas de React Native es que, llegado el caso (una posible funcionalidad o la integración de un servicio de un tercero), es posible integrar código nativo en el proyecto, por lo que elegir React Native no conlleva renunciar al código nativo.

De hecho, lo común es integrar código nativo con código Javascript: las estimaciones apuntan a que un 85% del código implementado en este tipo de proyectos es Javascript y el otro 15% nativo, porcentajes que se cumplen en nuestra propia experiencia (variando de un 95%-5% a un 70%-30%).

¿Qué características tiene que tener el equipo de desarrollo? Podría parecer que para desarrollar en React Native no es necesario tener conocimientos de nativo, pero realmente para asegurar el éxito de un desarrollo app con React Native el equipo debe ser experto tanto en React Native como en lenguaje nativo, ya que como apuntábamos es muy probable que un porcentaje del código del proyecto tenga que implementarse en nativo. Además, conocer los entornos de iOs y Android facilitará enormemente la implementación del proyecto.

Cuatroochenta y React Native


¿Cuál es la experiencia con React Native en Cuatroochenta? Hace meses que se estamos ofreciendo esta tecnología a nuestros clientes y varios proyectos los desarrollamos con ella. El primer proyecto desarrollado por Cuatroochenta y lanzado ya al mercado con esta tecnología es Legends. La experiencia a nivel de diseño no ha supuesto un cambio, ya que la propuesta era cambiar la tecnología sin limitarnos en las posibilidades de la experiencia de usuario.

No hemos observado ninguna limitación. A nivel de desarrollo, donde más impacto ha tenido la tecnología, la posibilidad de que un equipo trabaje bajo un único código ha permitido una experiencia, en términos de calidad, muy positiva: todos trabajan para evolucionar y mejorar un único código, sumando esfuerzos y generando sinergias; a diferencia del código nativo, donde en ocasiones mantener esas sinergias entre equipos de diferentes plataformas es complicado. Para entendernos, no es lo mismo tener dos equipos de tres personas trabajando, cada uno en un código, que tener seis personas contribuyendo al mismo código. En términos de velocidad y especialmente de calidad a la hora de supervisar código, resolver problemas y proponer soluciones, ha supuesto una mejora considerable.

En la fase final, se ha detectado también una clara optimización en los procesos de QA (Calidad). Concretamente en la ejecución de beta-test, ya que al final se ha desarrollado con un único código; por lo tanto, los posibles bugs son compartidos en las diferentes plataformas y las soluciones se desarrollan una única vez. Los procesos de publicación, sin embargo, son exactamente los mismos que en el caso de publicar aplicaciones nativas.

Otro aspecto fundamental es el mantenimiento y evolución de los proyectos. De nuevo, en estos casos React Native aporta una clara ventaja al centrar todos los esfuerzos en un solo código de proyecto. Eso directamente significa que, donde antes una funcionalidad nueva se tenía que programar dos veces, ahora solo es necesario programarlo en React Native, por lo que los recursos pueden destinarse a mejoras y no a duplicidad de trabajo.

En términos generales estamos muy satisfechos con el resultado y especialmente con el proceso de desarrollo, lo que permite a los proyectos mejorar la experiencia y la optimización con el mismo presupuesto.

Comments are closed.