Si eres un desarrollador de Aplicaciones web, probablemente has escuchado que es posible crear aplicaciones móviles utilizando tus mismos conocimientos web (HTML, CSS, y JavaScript) o conocimientos similares (Biblioteca y Frameworks Web). Quizas has escuchado de frameworks o SDKs como PhoneGap, Ionic, NativeScript o incluso has escuchado de las aplicaciones web Progresivas o Progressive Web Apps.
Bueno, el día de hoy, me gustaria comentarles acerca de una tecnología que esta muy relacionada a estas que te he mencionado y que es muy utilizada por muchos desarrolladores y empresas en la creación de aplicaciones moviles multiplataforma (iOS y Android).
Empresas como Microsoft, Facebook, Instagram, Discord, Tesla, y muchas otras más han adoptado esta herramienta, asi que si ustedes tambien quieren hacer lo mismo, seria ideal que tengan primero una idea del tema y ver si es una buena opcion para su proyecto.
Aprendamos el día de hoy. ¿Qué es React Native?
¿Qué es React Native?
React Native es una tecnología Open Source desarrollada por Facebook para crear aplicaciones móviles nativas y multiplataforma a partir de una misma base de codigo escrita en Javascript y React. Es decir que React Native soluciona el tipico problema de crear una Aplicación movile o App que pueda ser ejecutada tanto en Android como en iOS sin tener dos proyectos separados en dos lenguajes de programación distintos. algo bastante tipico en el desarrollo de apps. Y todo esto sin ariesgar el rendimiento de la app, y reutilizando muchos de los conceptos de React de la Web.
Y digo conceptos y no código porque React Native te permite crear apps nativas usando la biblioteca de Javascript llamada React, pero no significa que tus proyectos web creados en React se transformen en apps moviles, sino que usas conceptos de React como los componentes, estados y hooks, pero todos las interfaces son distintas a la web.
Pero, para darles una mejor idea de React Native, aprendamos de donde viene.
Breve Historia de React Native
Cuando facebook decidió, por primera vez crear su aplicación movil, en lugar de desarrollar una apliacion móvil nativa como muchas otras empresas por entonces, ellos decidieron crear una sitio web movil basado en HTML5. Esto para ese momento fue un Error, que incluso fue admitido por Mark Zuckerberg en una entrevista por Tech Crunch, en el año 2012.
"El mayor error que cometimos como empresa fue apostar demasiado por HTML5 en lugar de nativo",
tiempo despues en el año 2013, un desarrollador de Facebook llamado Jordan Walke, encontro un metodo para generar Elementos UI para apps de iOS usando Javascript. Este descubrimiento fomentó a que se organizara una Hackaton para saber que tanto desarrollo movil se podia hacer usando javascript.
Así es como nacio React Native, inicialmente fue un desarrollo para iOS, pero luego añadio soporte para Android antes de ser publicado como un proyecto open source en el año 2015.
React & React Native.
De manera simple, React native te permite crear aplicaciones moviles usando React. Pero atentos, porque no es el mismo React para la web, sino un React enfocado en Apps. Esto quiere decir que cuando desarrollos si bien puedes utilizar muchos conceptos de React como componentes, manejador de estados, y props. Ya no estaras usando JSX con elementos HTML y CSS sino con elementos de interfaces moviles nativas.
esto quiere decir que no veras etiquetas como input, img, button tipicas en HTML. en lugar de ellas veras etiquetas como Text, Image o Button, los cuales al final son elementos nativos de dispositivos moviles.
¿Como funciona React Native?
Una aplicacion creada en React native es escrita tanto en Javascript como en JSX, el cual este es un lenguaje de marcado basado en XML. El framework puede comunicarse tanto con codigo de javascript como con codigo nativo. Esto es posible gracias a una caracteristicas llamada Bridge. Esto hace que mientras Javascript y modulos nativos esten escritos en lenguajes distintos, sea esta caracteristica bridge la que permite la comunicacion bidireccional.
Esto significa que si ya tienes una app native en Android o en iOS, aun puedas utilizar sus componentes o cambiar el desarrollo a React Native.
De hecho Este es una de las razones de su exito , porque a diferencia de sus alternativas como cordova o phonegap, React native no genera apps dentro de un WebView, ni tampoco convierte el codigo de Javascript a Java o Objective-C, sino genera apps con Javascript que realmente hacen uso de componentes nativos.
Todo esto hace que te puedas enfocar en escribir una sola vez el codigo, y que este pueda ser ejecutado en Android y en iOS, pero sin pagar con el rendimiento de la aplicacion.
Ahora todo esto es muy prometedor, pero como en toda tecnología hay ventajas y desventajas, asi que me gustaria darles un resumen de esto. Empezamos por las ventajas.
Ventajas
Reusabilidad de codigo y Desarrollo multiplataforma.
La capacidad de poder reutilizar el codigo para dos plataformas se transforma en menos tiempo de desarrollo y facilita a la publicación rapida de actualizaciones.
Los ingenieros de Discord dicen: “Probamos React Native el día que se lanzó para Android. Nos sorprendió lo fácil y rápido que pudimos hacer que nuestra aplicación completa de iOS se ejecutara en Android. ¡Solo tomó dos días y ya estaba construida! "
Comunidad de desarrollo Grande
debido a que los componentes nativos de React son Open Source, favore mucho a que estos tengan muchas más actualizaciones. y se encuentre mucha informacion de la plataforma tanto en GIthub y StackOverflow. ademas al ser la opcion más utilizado en el mundo de javascript para Apps nativas, hay muchos ejemplos practicos, libros y recursos que puedes encontrar para seguir aprendiendo.
Eficiente en Costo
El costo de desarrollar apps en React native es menor que soluciones no multiplataforma, al no necesitar de dos equipos para desarrollar una app para iOS y otro equipo para una app en Android. E incluso si ya has utilizado React en la web ya tienes un acercamiento para el desarrollo movil, que aunque no sea lo mismo y quizas no sea todo lo que necesites saber, si hay varias similitudes al estar utilizando React, JSX y otros conceptos conocidos.
Rendimiento similar a Nativo
React native al no convertir el codigo si no al usar realmente componentes nativos, llega a tener un rendimiento similar a apps creadas con Java, Kotlin o Swift. Haciendo que la velocidad de la app no sea un problema en el desarrollo multiplatafoma. Esto es diferente en otras alternativas como Cordova, o phonegap en el que una app generada por estas herramientas si se llega a notar la lentitud de ejecucion en tareas intensivas.
De hecho este es el punto fuerte para escoger react native por encima de sus alternativas. https://www.netguru.com/blog/swift-vs-react-native
pero ahora vemaos las desventajas de React Native.
Desventajas de React Native.
Carencia de algunos modulos personalizados
Si bien React Native existe desde hace varios años, algunos módulos personalizados aun faltan mejorar o faltan por completo. Esto significa que en ocasiones cuando necesites una funcionalidad que aun no es soportada por React Native, es posible que debas ejecutar tres bases de código separadas (para React Native, iOS y Android) en lugar de solo una, ya que necesitaras hacerla por tu propia cuenta.
Es decir que el aprender React native no va a evitar que necesites saber conceptos de Android o iOS.
Problemas de conpatibilidad y depuracion
A pesar de que React Native es utilizado por empresas muy grandes de tecnología, todavía está en fase beta. lo que en la practica significa que muchos desarrolladores pueden encontrar varios problemas con la compatibilidad de paquetes o las herramientas de depuración. Y si en caso los desarrolladores no son muy competentes en React Native, esto podría afectar negativamente al desarrollo de un proyecto, ya que dedicarian mucho tiempo a la resolución de problemas.
Aun asi necesitas saber desarrollo nativo
¿Recuerdas la función de "puente" que mencionamos anteriormente en esta publicación? Como se mostró, React Native une JavaScript con el código móvil nativo. Esto significa que si pones a cargo a un desarrollador que no tiene conocimientos de desarrollo móvil nativo, tendrá dificultades para incorporar el código nativo en la base de código de RN. Como resultado, necesitará ayuda de los desarrolladores de Android o iOS para guiarlos a través del proceso. Y si se es una empresa pequeña, es posible que no se desee contratar desarrolladores móviles nativos, ya que esto genera costos adicionales.
En resument React Native es una gran solución para crear aplicaciones movile que funcionarán sin problemas independientemente de la plataforma o el sistema en el que se ejecuten. Es un marco que adoran tanto las empresas como los desarrolladores, y que Le permite ahorrar muchas horas de trabajo, lo que da como resultado un proceso de desarrollo más rápido y también es rentable.
Le brinda acceso a una audiencia más amplia a la vez: ya que tanto los usuarios de Android e iOS pueden usar tu aplicación. Ademas El lanzamiento de nueva versiones de tu app se puede sincronizar y las empresas con un presupuesto menor para el desarrollo no tienen que elegir una sola plataforma.
Actualmente hay muchos production functionando con React Native, incluidos Skype, Facebook, Pinterest y Discord, lo que demuestra además que es un marco que vale la pena considerar para el desarrollo de aplicaciones. Si bien una solución nativa de iOS y Android sigue siendo la mejor opción para proyectos que requieren una experiencia de interfaz de usuario perfecta y un rendimiento de primer nivel, React Native es una excelente opción si su presupuesto es limitado y donde la experiencia de usuario satisfactoria es suficiente.
Y algo interesante es que React Native no queda tan solo en movil sino que hay proyectos relacionados para otras plataformas que vienen tanto por parte de facebook y terceros como:
- React Native Windows, el cual permite crear aplicaciones de escritorio nativas usando React
- React Native Desktop, aplicaciones nativas de WIndows y
los que permiten crear apps de escritorio para windows y mac. o React Native Web. el cual permite reutilizar componentes de React native para que funcionen en la web. y Muhcos otros proyectos para ejecutar en Applet Tv, en Android Wear on en Apple Watch.
Pero bueno al final escoger React native, depende mucho más si todas estas ventajas y desventajas se adaptan bastante a tu proyecto.
Y por supuesto React Native no es la unica opcion del desarrollo movil multiplataforma, pero sus alternativas se los mencionare en futuros videos, ya que son temas por si mismos. Al menos por ahora ya tienen una idea de que es React Native. nos vemos muy pronto en proximos videos. Bye Coders!
Mas recursos: