O que torna o React Native adequado para Uber Eats e outros aplicativos de entrega de comida online?
Publicados: 2021-12-07A Uber é obrigada a oferecer um pouco mais do que o convencional aos seus clientes, independente do domínio. Enquanto o plano de lançar o UberEats, um aplicativo de entrega de comida online, estava em andamento, a empresa estava empenhada em torná-lo uma experiência excepcional, assim como é o caso do UberPOOL e UberX.
A equipe de desenvolvedores estava ciente dos desafios existentes do setor, como etapas extras envolvidas na coleta e entrega, não ter comunicação em tempo real com o profissional de entrega e estabelecer comunicação constante com todas as três verticais (clientes, restaurantes e entregadores pessoais) do pessoal.
Por fim, o UberEats surgiu, com a ajuda do React Native. Neste post, explicaremos como o uso do Reach Native ajudou a Uber a moldar o aplicativo.
Entendendo o React Native
RN ou React Native é uma estrutura de desenvolvimento de aplicativos móveis reconhecida mundialmente, escrita em JavaScript. Usando React Native, o desenvolvimento de aplicativos móveis iOS e Android nativos é possível. O desenvolvimento de aplicativos para as diversas plataformas será feito usando uma base de código idêntica, o que leva a grandes esforços e economia de tempo.
Gerado pelo Facebook e comunidades relacionadas, o React Native foi oferecido como uma ferramenta de código aberto em 2015. Logo após o desenvolvimento, tornou-se uma fonte padrão usada no desenvolvimento de soluções híbridas e móveis, devido à sua facilidade incomparável e usabilidade estendida. Além disso, o código escrito uma vez pode ser usado para desenvolvimento de aplicativos iOS e Android sem problemas.
Tornou-se tão proeminente entre os desenvolvedores que mais de 42% estão usando. Na verdade, aplicativos modernos como Skype, Facebook e Instagram surgiram apenas por causa do React Native.
Os desafios
Desenvolver um aplicativo móvel já é um trabalho cheio de desafios e o grande desafio da Uber foi a falta de uma pilha de tecnologia adequada necessária para desenvolver um aplicativo móvel, pois a equipe lidava apenas com desenvolvimento de aplicativos web, tendo três partes. O desenvolvimento de um aplicativo como esse precisava de um painel que não se limitasse à web, pudesse entrar nos restaurantes e transmitir informações críticas dos restaurantes.
Com base no conhecimento existente, a Uber construiu um protótipo do aplicativo. Mas, todos os recursos acima estavam faltando nele. Além disso, a ausência de notificações sonoras prejudicou enormemente a experiência do usuário final, pois os consumidores não conseguiam obter as atualizações de pedidos em tempo real.
O primitivo Restaurant Dashboard era compatível com a web e apresentava uma página React/Flux para dispositivos tablet, concedendo acesso a dispositivos limitados na época. Essa capacidade reduzida do Restaurant Dashboard forçou o Uber a ter comunicação limitada com os restaurantes.
Um dos exemplos mais fáceis dessa comunicação controlada é que os usuários finais precisam se comunicar com a página da Web para oferecer suporte à sinalização de notificação baseada em som. Os funcionários do restaurante não estavam recebendo atualizações em tempo real sobre o recebimento de um novo pedido, a chegada do pessoal de entrega para a separação de pedidos e a entrega final.
Fora isso, a versão anterior do UberEats só dava acesso à impressão de recibos físicos para restaurantes usando impressoras compatíveis com AirPrint.
Reagir nativo tornou as coisas melhores
A equipe de desenvolvimento não sabia como construir um aplicativo iOS/Android. Mas, React foi dominado. Então, preferir o React Native para o Uber Eats foi um tiro certeiro. É uma parte fundamental da robusta pilha de tecnologia usada para o Uber Eats. Ele se dá bem com a infraestrutura existente da Uber e permite que a equipe acesse os recursos que procurava no desenvolvimento de aplicativos móveis nativos.
Antes de lançar um aplicativo totalmente funcional, a Uber decidiu criar uma versão demo que deveria incluir as partes principais mencionadas abaixo:
- Relatórios de falhas do aplicativo
- Análise detalhada do usuário final
- A capacidade do aplicativo de baixar as dependências nativas
- Autenticação de usuário
De acordo com o relatório da empresa, a demonstração conseguiu trazer o resultado desejado, pois a equipe de desenvolvedores descobriu que o relatório de falhas estava funcionando melhor do que o esperado. A ponte de JavaScript para um recurso como disparar eventos de análise era perfeita e era fácil observar a lógica de negócios do aplicativo.
Arquitetura do aplicativo redefinida
O React Native ajudou a Uber a fundir o desenvolvimento de aplicativos móveis e da web, permitindo a geração de recursos nativos ou em JavaScript. Por causa dessa interoperabilidade, os desenvolvedores do Uber também puderam utilizar sua experiência em desenvolvimento de aplicativos da Web no desenvolvimento de aplicativos móveis.
Eles projetaram o Uber Eats de maneira muito semelhante ao aplicativo Web React / Redux habitual, mantendo os padrões e os padrões dos módulos do iOS à distância, conforme a necessidade do momento. O uso do React Native permite que a Uber aprimore a funcionalidade de roteamento do aplicativo.
Enquanto o Uber Eats era apenas baseado na web, o Restaurant Dashboard estava usando a famosa biblioteca react-router. Usando a biblioteca, as rotas do aplicativo foram explicadas de forma declarativa, como uma View. Esse tipo de roteamento de aplicativo suportava apenas URLs, cuja acessibilidade não era possível fora do navegador.
O uso do React Native concede aos desenvolvedores uma biblioteca de navegação precisa que é muito semelhante ao UINavigationController. Bibliotecas nativas do React, como NavigationExperimental ou Navigator, permitiram que a equipe de desenvolvimento da Uber migrasse facilmente do roteador de alcance. O roteador de alcance Vanilla é um ótimo recurso para roteamento de aplicativos, pois dificilmente é prejudicado pela arquitetura do aplicativo.
Enquanto o processo de portabilidade estava em andamento, a equipe de desenvolvimento aprendeu que é uma jogada inteligente reduzir a interação entre iOS e JavaScript enquanto coloca a lógica na camada JavaScript. Este movimento ajudou de muitas maneiras. Por exemplo, o aplicativo final apresentou menos.
Comutação JavaScript e Objective-C para melhor portabilidade e menos chances de ocorrência de bugs. Usando o n Reach Native, a equipe de desenvolvimento do Uber Eats criou uma API de comunicação austera que pode ser usada em vários níveis.
Melhora as atualizações/notificações push
A incompetência de notificação de som do aplicativo da web foi reduzida com o React Native, pois os aplicativos criados usando essa tecnologia são vinculados a um pequeno pedaço de código Objective-C/Java. Esses códigos se juntam para construir um pacote volumoso que é posteriormente despachado com o aplicativo como um ativo. Quando há uma camada nativa, o aplicativo é capaz de alterar o arquivo de ponte React Native e solicitar o recarregamento.
Na camada nativa, o aplicativo pode alterar o arquivo usado pela ponte React Native e solicitar que ele seja recarregado. Uma atualização ruim, chamada de pacote que causa problemas no Uber Eats, pode forçar a parada do Painel do restaurante. Isso pode acontecer antes que o pacote lógico entre em ação. Essas atualizações ruins podem aparecer a qualquer momento e travar o Painel do restaurante.
A equipe de desenvolvedores corrigiu esse problema tratando cada versão como experimentação para que o lançamento gradual fosse possível. O pacote javascript exclusivo, oferecido no React Native, foi carregado automaticamente após o carregamento de qualquer pacote enviado.
Envolvendo tudo
O Uber Eats tem uma jornada interessante e o React Native desempenhou um papel fundamental em toda essa jornada. Essa tecnologia ajudou a equipe de desenvolvimento com alguns conhecimentos e funcionalidades louváveis para o desenvolvimento de aplicativos nativos para melhorar a experiência do usuário.
Trouxe mudanças revolucionárias máximas na atualização do Painel do Restaurante. Isso tornou esse aspecto operacional empoderado, contínuo e altamente responsivo. Essa estrutura certamente intensificou a capacidade do aplicativo sem aumentar a complexidade. Embora o React Natives represente uma pequena parte da gigantesca pilha de tecnologia do UberEats, funcional por trás, sua contribuição é louvável.
Se você planeja desenvolver um aplicativo de entrega de comida online como o UberEats, considere o React Native. Contrate um desenvolvedor ou equipe React Native para transformar sua ideia de projeto em realidade. Apostar nisso não vai decepcionar ninguém.
Nota do editor: Chandresh Patel é CEO, Agile coach e fundador da Bacancy Technology. Seu verdadeiro espírito empreendedor, experiência hábil e amplo conhecimento em serviços de desenvolvimento de software Agile ajudaram a organização a alcançar novos patamares de sucesso.
Tem alguma opinião sobre isso? Deixe-nos saber abaixo nos comentários ou leve a discussão para o nosso Twitter ou Facebook.