Cristian Maraglino

Cristian Maraglino

20/08/2024

Explorando React Native como Framework

React Native
Desarrollo Móvil
Multiplataforma

En el vasto panorama del desarrollo de software, la personalización y la aceleración del proceso son ahora más accesibles, gracias a la aparición de nuevos frameworks. Entre las opciones disponibles, React Native ha captado mi atención en los últimos meses mientras trabajaba en el desarrollo de una aplicación móvil multiplataforma para iOS y Android. En este artículo, comparto mis experiencias y conocimientos sobre React Native, explorando sus orígenes, usos y desafíos enfrentados.

¿Por qué React Native?

Al trabajar en proyectos con plazos ajustados, equilibrar el tiempo de desarrollo y la calidad del producto se vuelve crucial. Buscaba una forma de desarrollar una aplicación para iOS y Android sin tener que crear dos bases de código separadas. En esta búsqueda, React Native surgió como una solución prometedora, permitiendo escribir una sola base de código para ambas plataformas.

Ofrece un enfoque eficiente para crear aplicaciones móviles multiplataforma utilizando una base de código unificada, asegurando un rápido desarrollo y resultados de alta calidad.

Orígenes e historia de React Native

React Native es un framework de código abierto creado por Facebook (ahora Meta) que permite desarrollar aplicaciones móviles utilizando JavaScript o TypeScript con el framework React. La evolución de React Native está marcada por varios hitos significativos:

  • 2013: Introducción de React, un framework para desarrollar interfaces de usuario para la web.

  • 2015: Anuncio oficial de React Native en la conferencia F8 y lanzamiento en GitHub como un proyecto de código abierto, permitiendo el desarrollo de aplicaciones móviles nativas utilizando la misma base de código que React para la web.

  • 2017: Introducción de 'React Native Fabric', una importante revisión arquitectónica para mejorar el rendimiento y la flexibilidad.

  • 2020: Lanzamiento de 'Hermes', un motor de JavaScript optimizado para React Native, mejorando el rendimiento de las aplicaciones de Android.

  • 2021: Meta continúa invirtiendo en el framework, ampliando el soporte y mejorando la integración con otras tecnologías.
  • Usos y aplicaciones de React Native

    Hoy en día, React Native es ampliamente adoptado por las principales empresas globales para el desarrollo de aplicaciones móviles:

  • Facebook e Instagram (Meta): utilizan React Native para partes de sus aplicaciones móviles.

  • Airbnb: utilizó extensivamente React Native en el pasado, aunque se han alejado parcialmente por razones específicas.

  • Skype y Microsoft Teams: ambas aplicaciones son desarrolladas por Microsoft usando React Native.

  • Uber Eats y Walmart: utilizan React Native para sus plataformas de comercio electrónico y entrega.

  • Tesla: adopta React Native para ciertas características de sus aplicaciones móviles.

  • El framework sigue siendo popular debido a su capacidad de combinar la experiencia de usuario de las aplicaciones nativas con la eficiencia del desarrollo multiplataforma.

    Las principales empresas confían en React Native por su rendimiento.

    Mi experiencia con React Native

    Comenzar con React Native requirió familiarizarse con las herramientas necesarias y configurar el proyecto. La documentación es abundante y la comunidad está activa, aunque la información puede ser a veces contradictoria. Encontré útil el soporte de la comunidad y las guías oficiales, aunque la variedad de enfoques puede ser una fuente de confusión.

    Uso de componentes y Material Design

    React Native ofrece una amplia gama de componentes para construir interfaces de usuario. Ya sea utilizando componentes básicos, personalizados o de terceros, el desarrollo modular es una fortaleza clave. La integración con Material Design, utilizando bibliotecas como React Native Paper, mejora aún más la consistencia y personalización de la interfaz de usuario.

    Componentes en React Native:

    Los componentes de React Native ofrecen flexibilidad y personalización para construir aplicaciones móviles:

  • Componentes Básicos: View, Text, Image, ScrollView... Corresponden a elementos nativos de iOS y Android.

  • Componentes Personalizados: creados para satisfacer necesidades específicas de la aplicación.

  • Componentes de Terceros: bibliotecas externas que ofrecen elementos predefinidos.

  • Los componentes pueden ser sin estado (stateless) o con estado (stateful). Los componentes sin estado son funciones que reciben datos a través de props sin gestionar un estado interno, mientras que los componentes con estado mantienen y gestionan un estado interno, permitiendo interfaces de usuario dinámicas e interactivas.


    Por ejemplo, una barra de búsqueda que realiza búsquedas dinámicas basadas en parámetros externos (como buscar apartamentos o plazas de aparcamiento) podría implementarse como un componente con estado, gestionando internamente el texto ingresado por el usuario y los resultados de búsqueda.


    Alternativamente, un versátil componente CustomInput podría utilizarse como campo numérico, entrada de contraseña o ingreso de correo electrónico ajustando algunas propiedades. Este componente sería sin estado, dependiendo enteramente de los datos pasados a través de props, haciéndolo fácilmente reutilizable en diferentes partes de la aplicación.


    Material Design y React Native: Material Design, desarrollado por Google, proporciona directrices visuales y de comportamiento para interfaces de usuario consistentes y atractivas. Las bibliotecas para implementar Material Design en React Native incluyen:


  • React Native Paper: ofrece una amplia gama de componentes compatibles con Material Design, con soporte para temas personalizados.

  • React Native Material UI: ofrece componentes basados en Material Design, aunque menos completos que React Native Paper.

  • Integrar Material Design en React Native mejora la consistencia de la interfaz de usuario, reduce el tiempo de desarrollo y permite la personalización de temas.

    Desarrollo y depuración efectivos

    Al comenzar un proyecto en React Native, se pueden utilizar varios modos y herramientas:

  • React Native CLI: la herramienta oficial para crear y gestionar proyectos, ofreciendo control completo sobre el entorno de desarrollo.

  • Expo CLI: una solución para iniciar proyectos sin configuraciones complejas, incluye hot-reloading y soporte multiplataforma.

  • EAS (Expo Application Services): un conjunto de herramientas para gestionar builds, distribución y actualizaciones OTA.

  • Metro Bundler: el empaquetador predeterminado para React Native, maneja la creación y distribución de paquetes JavaScript.

  • Visual Studio Code + React Native Tools: extensión para depurar y gestionar builds directamente desde el editor.

  • Ignite CLI: un kit de herramientas avanzado con configuración preconfigurada y características listas para usar.

  • Bitrise / App Center: plataformas CI/CD para automatizar la construcción, pruebas y distribución.

  • Elegir el método adecuado para su proyecto puede ser un desafío. Mi experiencia se caracterizó por cierta confusión inicial, pero con el tiempo encontré las soluciones que mejor se adaptaban a mis necesidades.

    Preparando una versión de Bundle

    Crear un bundle para liberar una aplicación de React Native a menudo requiere el uso de IDEs nativos:

  • Xcode (para iOS): necesario para configurar ajustes de build, gestionar certificados de firma y crear archivos IPA.

  • Android Studio (para Android): utilizado para configurar archivos gradle, gestionar claves de firma y crear archivos APK o AAB.

  • Expo EAS Build puede simplificar algunos aspectos, pero los IDEs nativos siguen siendo cruciales para configuraciones avanzadas y la publicación final.

    Conclusión

    React Native ofrece ventajas significativas, pero no está exento de desafíos. La variedad de enfoques y herramientas puede ser abrumadora, y mejorar la experiencia requiere buena documentación y educación.

    Si buscas ahorrar tiempo en el desarrollo, es esencial elegir cuidadosamente el método y las herramientas. De lo contrario, el desarrollo nativo puede ser preferible para obtener una documentación más centralizada y un rendimiento óptimo. La elección depende de las necesidades específicas y tu experiencia con el framework.