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.
Con esta idea de construcción de aplicaciones React Native nos proporciona las siguientes funcionalidades:
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.
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.
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 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.
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.