que es react native

Artículo

¿Qué es React Native?

Descubriendo sus principales características y funcionalidades

React Native es un framework JavaScript para crear aplicaciones reales nativas para iOS y Android, basado en la librearía de JavaScript React para la creación de componentes visuales, cambiando el propósito de los mismos para, en lugar de ser ejecutados en navegador, correr directamente sobre las plataformas móviles nativas, en este caso iOS y Andorid. Es decir, en lugar de desarrollar una aplicación web híbrida o en HTML5, lo que obtienes al final como resultado es una aplicación real nativa, indistinguible de la que podrías desarrollar con tu código en Objective-C o Java.

Esa es la teoría, pero veamos cómo propone React Native alcanzar este objetivo.

React Native usa el mismo paradigma fundamental de construcción de bloques de UI (componentes visuales con los que interacciona el usuario) que las aplicaciones nativas reales de Android e iOS, pero gestiona la interacción entre los mismos utilizando las capacidades de JavaScript y React.

Características

Con esta idea de construcción de aplicaciones React Native nos proporciona las siguientes funcionalidades:

  • Compatibilidad Cross-Platform: ya que la mayoría de las APIs de React Native lo son de por sí, lo cual ayuda a los propios desarrolladores a crear aplicaciones que puede ser ejecutados tanto en iOS como Android simultáneamente con el mismo código base.
  • Funcionalidad nativa: las aplicaciones creadas mediante React Native funcionan de la misma manera que una aplicación nativa real creada para cada uno de los sistemas usando su lenguaje nativo propio. La unión de React Native junto con JavaScript permite la ejecución de aplicaciones más complejas de manera suave, mejorando incluso el rendimiento de las apps nativas y sin el uso de un WebView.
  • Actualizaciones instantáneas (para desarrollo y/o test): con la extensión de JavaScript, los desarrolladores tienen la flexibilidad de subir los cambios contenidos en la actualización directamente al dispositivo del usuario sin tener que pasar por las tiendas de aplicaciones propias de cada sistema y sus tediosos ciclos de procesos obligatorios previos. Hay que aclarar que este uno es exclusivo de versiones de desarrollo o para test, es ilegal, y puede llegar a conllevar castigos que llegan hasta la retirada definitiva de la aplicación si se realizan cambios directos sobre código con aplicaciones ya publicados y en producción. La tienda de Apple lleva un control muy exhaustivo sobre este tipo de prácticas.
  • Sencilla curva de aprendizaje: React Native es extremadamente fácil de leer y sencillo de aprender ya que se basa en los conceptos fundamentales del lenguaje JavaScript, siendo especialmente intuitivo tanto para los ya expertos en dicho lenguaje o incluso para las personas sin experiencia en él, ya que nos provee de un rango muy amplio de componentes, incluyendo ejemplo como los maps y filters típicos que se han usado siempre.
  • Experiencia positiva para el desarrollador: si bien la curva de aprendizaje hemos dicho que es sencilla, también el propio lenguaje nos motiva y ayuda a la hora de la evolución según aumentamos nuestro conocimiento y dominio del mismo. Nos ofrece varias características importantes como, por ejemplo, el Hot reloading que nos refresca la app en el momento en que guardamos cambios, y nos ofrece una gran ventaja para el desarrollo y testing de nuevas versiones, como hemos comentado arriba. O el uso del flexbox layout engine gracias al cual nos permite abstraernos de muchos de los tediosos detalles de la generación de cada uno de los layouts correspondientes a iOS y Android. Así como el uso del debugger de las herramientas de desarrollados del navegador Google Chrome, facilitando de sobre manera la tarea de depuración de código.

Estas son cinco de las características principales que nos brinda React Native por defecto si lo elegimos como framework para nuestro desarrollo. A priori suenan muy bien ¿verdad? Más adelante, a lo largo de una serie de artículos, veremos que no es oro todo lo que reluce, y que todas estas características no se cumplen siempre, o no al cien por cien, en todos los casos.

Soporte

Sin embargo, aparte de los que nos ofrece el framework, hay otros factores, tanto o más importantes de cara a la elección de React Native como nuestra principal herramienta en el desarrollo, y es el soporte que tiene. Podríamos definir el soporte de una plataforma, a grosso modo, como la compañía o compañías que está detrás del framework o que lo usan y lo publicitan activamente.

Todos tenemos claro, y es notorio, que el principal soporte de la librería React (que como hemos comentado arriba es parte fundamental del proceso de desarrollo en React Native) recae sobre Facebook. Sabemos que la compañía ha construido su propia web y la de su red social hermana Instagram. ¿Pero sabemos si ese soporte se extiende a sus aplicaciones móviles? La respuesta a esta pregunta probablemente es no (al menos en mi caso, no lo sabía a ciencia cierta), no lo sabemos con la contundencia que hablamos de React y las respectivas webs de Facebook e Instagram, pero la respuesta es sí, sus aplicaciones móviles están desarrolladas con React Native (aunque la aplicación de Instagram no está soportada en IPad debido a problemas relacionados con el framework).

Si buscamos compañías que históricamente han apoyado React Native, desde prácticamente sus inicios, seguro encontraremos las menciones a Facebook o Instagram, pero veremos también una tercera compañía muy potente a nivel mundial que lo hacía de igual modo: Airbnb. Y es en ella en la que nos vamos a centrar en un artículo futuro, pues en este pasado 2018 ha dado la espalda al framework del que hablamos, causando un gran revuelo a nivel tecnológico, forzando incluso a Facebook a salir a la palestra a reafirmar su apoyo al mismo. En el próximo capítulo de la serie de artículos sobre React Native intentaremos analizar en profundidad las causas de este cambio de planes en Airbnb y las posibles consecuencias para al futuro de React Native, ya que este tema da para mucha discusión y existe amplia información al respecto.

¿Qué es lo siguiente para React Native?

Es una pregunta complicada de responder a medio plazo. A corto plazo, basándonos en lo que sabemos que en este momento que se está preparando, tenemos dos novedades a destacar como puntos de impacto importantes para el desarrollo de React Native, y son:

  • El anuncio por parte de Facebook de que están trabajando en la rearquitectura del framework a gran escala, con el fin de hacerlo más flexible e integrarlo de manera más natural con la infraestructura nativa de las plataformas objetivo.
  • Y el trabajo de otras compañías haciendo importantes avances en librerías externas. Como por ejemplo de ello, tenemos esta librería, React Native Gesture Handler, con la cual los gestos ya no son controlados por el sistema de respuesta de JavaScript, sino que son reconocidos y rastreados en el hilo de la interfaz de usuario nativa: https://github.com/kmagiera/react-native-gesture-handler:

El objetivo sigue siendo el mismo que cuando React Native inició su andadura mejorar el framwork, de cara a permitir que que estas mejoras acorten las distancias entre el desarrollo y el diseño, usando herramientas basadas en los componentes React, pero mejorando el flujo y la velocidad de interacción entre los mismos.

Conoce a nuestro experto

José Antonio Blanes

José Antonio es Jefe de Equipo en DxD de Deloitte, formando parte del área de movilidad dentro de la competencia Java. Profesional con más de siete años de experiencia, todos ellos en la firma, como desarrollador web, primero de aplicaciones basadas en el paradigma J2EE, y en la actualidad más centrado en el desarrollo web frontend basado en Angular, así como en la implementación de aplicaciones híbridas para dispositivos móviles, con más de dos años de experiencia en este tipo de desarrollos. Actualmente combina sus labores como desarrollador con la gestión de equipos y tareas dentro de la metodologías ágiles, formando parte del Development Team.