¿Qué hace que React Native sea adecuado para Uber Eats y otras aplicaciones de entrega de alimentos en línea?
Publicado: 2021-12-07Uber está obligado a ofrecer un poco más de lo convencional a sus clientes, independientemente del dominio. Si bien el plan de lanzar UberEats, una aplicación de entrega de alimentos en línea, estaba en trámite, la compañía se comprometió a convertirla en una experiencia excepcional, tal como es el caso con UberPOOL y UberX.
El equipo de desarrolladores estaba al tanto de los desafíos existentes de la industria, como pasos adicionales involucrados en la recogida y entrega, no tener comunicación en tiempo real con el profesional de entrega y establecer una comunicación constante con las tres verticales (clientes, restaurantes y personal de entrega) del personal
Finalmente, nació UberEats, con la ayuda de React Native. En esta publicación, explicaremos cómo el uso de Reach Native ayudó a Uber a dar forma a la aplicación.
Entendiendo React Native
RN o React Native es un marco de desarrollo de aplicaciones móviles reconocido mundialmente, escrito en JavaScript. Usando React Native, es posible el desarrollo de aplicaciones móviles nativas para iOS y Android. El desarrollo de aplicaciones para las diversas plataformas se realizará utilizando una base de código idéntica, lo que genera grandes esfuerzos y ahorro de tiempo.
Generado por Facebook y comunidades relacionadas, React Native se ofreció como una herramienta de código abierto en 2015. Poco después del desarrollo, se convirtió en una fuente estándar utilizada en el desarrollo de soluciones híbridas y móviles, debido a su inigualable facilidad y usabilidad ampliada. Además, el código escrito una vez se puede usar para el desarrollo de aplicaciones iOS y Android sin problemas.
Se ha vuelto tan prominente entre los desarrolladores que más del 42% lo está usando. De hecho, las aplicaciones modernas como Skype, Facebook e Instagram surgieron solo gracias a React Native.
Los desafios
Desarrollar una aplicación móvil ya es un trabajo lleno de desafíos y el principal desafío de Uber fue la falta de una pila de tecnología adecuada requerida para desarrollar una aplicación móvil, ya que el equipo se ocupó solo del desarrollo de aplicaciones web, con tres partes. El desarrollo de una aplicación de este tipo necesitaba un tablero que no se limitara a la web, que pudiera ingresar a los restaurantes y transmitir información crítica de los restaurantes.
Con base en el conocimiento existente, Uber construyó un prototipo de la aplicación. Pero, todas las características anteriores faltaban en él. Además, la ausencia de notificaciones de sonido perjudicó enormemente la experiencia del usuario final, ya que los consumidores no pudieron obtener las actualizaciones de pedidos en tiempo real.
El panel de restaurante primitivo era compatible con la web y presentaba una página React/Flux para tabletas que otorgaba acceso a dispositivos limitados en ese momento. Esta capacidad disminuida del Tablero de restaurante obligó a Uber a tener una comunicación limitada con los restaurantes.
Uno de los ejemplos más fáciles de esta comunicación controlada es que los usuarios finales tienen que comunicarse con la página web para admitir la indicación de notificación basada en sonido. Los empleados del restaurante no recibían actualizaciones en tiempo real sobre la recepción de un nuevo pedido, la llegada del personal de entrega para la preparación del pedido y la entrega final.
Aparte de esto, la versión anterior de UberEats solo otorgaba acceso a la impresión de recibos físicos a los restaurantes que usaban impresoras compatibles con AirPrint.
Reaccionar nativo mejoró las cosas
El equipo de desarrollo no sabía cómo crear una aplicación iOS/Android. Pero, React fue dominado. Por lo tanto, preferir React Native a Uber Eats era una apuesta segura. Es una parte fundamental de la gran pila de tecnología utilizada para Uber Eats. Se lleva bien con la infraestructura existente de Uber y permite que el equipo acceda a las funciones que estaban buscando en el desarrollo de aplicaciones móviles nativas.
Antes de lanzar una aplicación completamente funcional, Uber decidió crear una versión de demostración que debería incluir las partes clave que se mencionan a continuación:
- Informes de fallas de la aplicación
- Análisis detallado del usuario final
- La capacidad de la aplicación para descargar las dependencias nativas.
- Autenticacion de usuario
Según el informe de la empresa, la demostración logró obtener el resultado deseado, ya que el equipo de desarrolladores descubrió que los informes de fallas funcionaban mejor de lo esperado.
Arquitectura de la aplicación redefinida
React Native ayudó a Uber a fusionar el desarrollo de aplicaciones móviles y web al tiempo que permitía la generación de funciones en nativo o en JavaScript. Debido a esta interoperabilidad, los desarrolladores de Uber también pudieron utilizar su experiencia en desarrollo de aplicaciones web en el desarrollo de aplicaciones móviles.
Diseñaron Uber Eats de una manera muy similar a la aplicación web habitual React / Redux mientras mantenían a raya los patrones y módulos de iOS según la necesidad del momento. El uso de React Native permite a Uber mejorar la funcionalidad de enrutamiento de la aplicación.
Si bien Uber Eats solo estaba basado en la web, Restaurant Dashboard usaba la famosa biblioteca de enrutador de reacción. Usando la biblioteca, las rutas de la aplicación se explicaron de forma declarativa, como una vista. Este tipo de enrutamiento de aplicaciones solo admitía URL, cuya accesibilidad no era posible fuera del navegador.
El uso de React Native otorga a los desarrolladores una biblioteca de navegación precisa que es muy similar a UINavigationController. Las bibliotecas de React Native como NavigationExperimental o Navigator permitieron al equipo de desarrollo de Uber migrar fácilmente fuera del enrutador de alcance. Vanilla reach-router es un gran recurso para el enrutamiento de aplicaciones, ya que apenas se ve obstaculizado por la arquitectura de la aplicación.
Mientras se llevaba a cabo el proceso de portabilidad, el equipo de desarrollo aprendió que reducir la interacción entre iOS y JavaScript y colocar la lógica en la capa de JavaScript es un movimiento inteligente. Este movimiento ayudó de muchas maneras. Por ejemplo, la aplicación final presentaba menos.
Cambio de JavaScript y Objective-C para una mejor portabilidad y menos probabilidades de que ocurran errores. Usando n Reach Native, el equipo de desarrollo de Uber Eats ideó una API de comunicación austera que se puede usar más en varios niveles.
Mejora las notificaciones/actualizaciones automáticas
La incompetencia de la notificación de sonido de la aplicación web se frenó con React Native, ya que las aplicaciones creadas con esta tecnología se vinculan con una pequeña parte del código Objective-C/Java. Estos códigos se unen para crear un paquete voluminoso que luego se envía con la aplicación como un activo. Cuando hay una capa nativa, la aplicación es capaz de alterar el archivo del puente React Native y solicitar una recarga.
En la capa nativa, la aplicación puede cambiar el archivo utilizado por el puente React Native y solicitar que se vuelva a cargar. Una mala actualización, que se conoce como un paquete que causa problemas en Uber Eats, puede forzar la detención del Tablero del restaurante. Puede suceder antes de que el paquete lógico entre en acción. Estas malas actualizaciones pueden aparecer en cualquier momento y bloquear el panel del restaurante.
El equipo de desarrolladores solucionó este problema al tratar cada lanzamiento individual como experimentación para que sea posible una implementación gradual. El paquete único de javascript, ofrecido en React Native, se cargó automáticamente después de cargar cualquier paquete enviado.
Envolviéndolo todo
Uber Eats tiene un viaje interesante y React Native ha jugado un papel fundamental a lo largo de este viaje. Esta tecnología ha ayudado al equipo de desarrollo con algunos conocimientos y funcionalidades encomiables para el desarrollo de aplicaciones nativas para mejorar la experiencia del usuario.
Trajo cambios revolucionarios máximos en la actualización del Tablero del Restaurante. Ha hecho que este aspecto operativo sea empoderado, fluido y altamente receptivo. Este marco seguramente ha intensificado la capacidad de la aplicación sin aumentar la complejidad. A pesar de que React Natives representa una pequeña porción de la gigantesca pila de tecnología de UberEats, funcional desde atrás, su contribución es encomiable.
Si planea desarrollar una aplicación de entrega de alimentos en línea como UberEats, considere React Native. Contrate a un desarrollador o equipo de React Native para convertir su idea de proyecto en realidad. Hacer una apuesta no defraudará a nadie.
Nota del editor: Chandresh Patel es director ejecutivo, entrenador ágil y fundador de Bacancy Technology. Su espíritu verdaderamente emprendedor, su hábil experiencia y su amplio conocimiento en los servicios de desarrollo de software Agile han ayudado a la organización a alcanzar nuevas cotas de éxito.
¿Tiene alguna idea sobre esto? Háganos saber a continuación en los comentarios o lleve la discusión a nuestro Twitter o Facebook.