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.