Reagir nativo vs. nativo “real”

5

Estou trabalhando para a empresa voltada para o consumidor, que tem o aplicativo para dispositivos móveis como produto principal.

Nosso aplicativo móvel tem 100 mil usuários ativos mensais e é desenvolvido usando o Cordova + Kendo Mobile + Telerik Appbuilder (que será descontinuado em alguns dias). Estamos pensando em migrar nosso código para uma solução nativa (nativo real ou React Native).

Primeiramente, quero dizer que, para nós, desenvolver aplicativos para o Cordova com o Kendo Mobile foi um inferno.

Isto é principalmente devido ao Kendo, mas também devido à dependência de vários plugins (alguns dos quais eram ótimos, e outros não muito - e você tem a opção de usar o plugin ou escrever código nativo e o plugin Cordova para você) .

É claro que o maior problema é o desempenho. E nosso aplicativo não possui cálculos complicados, nem animações ou algo parecido, mas diferença ao rolar através de listas infinitas, ou a troca rápida entre tela é óbvia. Então, gastamos muito tempo otimizando (ou até mesmo escrevendo código a partir do zero) para coisas que sairíamos da caixa se fôssemos nativos. E por causa disso, não podemos estimar facilmente os lançamentos de novos recursos, e todo o processo de desenvolvimento é lento.

Da perspectiva de negócios, seria melhor para nós ir com o React Native, porque nós já temos 3 desenvolvedores JS e os desenvolvedores nativos são escassos e caros.

Por outro lado, somos um pouco traumatizados de toda a nossa experiência com o desenvolvimento híbrido e não temos certeza se o React Native é tão bom e maduro como o anunciado, e não temos tempo para erros.

Nossos maiores medos são:

  • Reagir nativa é sensacionalista e quando a "próxima grande coisa" acontece, todos vão pular nessa onda (por exemplo, o Google Flutter)
  • Dependência de plug-ins de código-fonte aberto (que pode ser abandonada a qualquer momento)
  • O desenvolvimento é mais rápido na teoria (porque a maioria do código é compartilhada), mas para que o aplicativo realmente pareça nativo, teremos que gastar muito tempo otimizando várias coisas e seremos muito mais lentos no final
  • Eu li em alguns artigos que reagem execuções nativas no iOS perfeitamente, mas o Android é outra história - é mais lento e há peculiaridades entre várias versões do Android (por exemplo, algo funciona bem em 5.1.0, mas não em 5.1.1)
  • A Apple vai mudar alguma coisa. (como introduzir o entalhe) e levará muito tempo para nos adaptarmos à mudança por causa das limitações tecnológicas

No topo da minha cabeça, aqui estão alguns requisitos que o nosso aplicativo tem, e não tenho certeza se todos eles estão cobertos corretamente com o React:

  • Nativo ao navegar pelo feed infinito (o feed é semelhante ao que o FB tem)
  • Compras no aplicativo
  • Reprodução de áudio e vídeo nativa
  • Cronômetro de fundo
  • Internacionalização
  • Deep linking
  • Analytics and Crash reporting system (como o GA e o Crashlytics)
  • SQLite ou alguma outra solução de banco de dados / armazenamento
  • Nativo como navegação entre telas
  • Gráficos & Gráficos (como o D3.js tem)

Seus pensamentos e experiências seriam muito apreciados!

    
por hyperN 14.03.2018 / 18:31
fonte

1 resposta

1

Eu costumava usar o aplicativo Blomberg como uma amostra de reagir nativo. Você pode verificar se precisar de alguma prova de conceito. Tem feeds infinitos e interface complicada. A rolagem e a troca de guias não é tão rápida, mas ainda assim funciona. E seria mais difícil fazer toda essa interface usando o desenvolvimento nativo.

Neste momento, estamos desenvolvendo o projeto (que também possui feed infinito) em nativo no Android e em React Native no iOS. Nós também passamos algumas tentativas de fazer reagir versão nativa rodar no Android e comparou duas versões. O desempenho da rolagem é comparável. Reagir nativa tem toda a lógica do aplicativo em execução no thread de segundo plano, portanto, o thread ui está livre. Nosso aplicativo nativo do Android usou o thread da interface do usuário muito mais.

Ainda nativo é uma aposta segura e, se algo der errado com o desempenho, você tem certeza de que pode ser corrigido.

Você tem muitos requisitos e alguma parte nativa da programação também seria necessária de qualquer maneira.

    
por 26.05.2018 / 01:05
fonte