Migrando um app nativo de 13 anos para React Native
(ridicorp.com)Um relato sobre a experiência da Ridibooks no processo de migração de um app nativo para React Native
- Por que escolheram React Native
-
Antes, a descoberta de conteúdo e o pagamento eram feitos na web, e o app era usado como visualizador. Depois, decidiram introduzir no app também os recursos de navegação e pagamento. Para responder rapidamente às mudanças e atingir a meta dentro do prazo, decidiram adotar uma tecnologia que permitisse desenvolvimento cross-platform
-
Enquanto avaliavam Flutter e React Native, escolheram React Native porque sua comunidade parecia um pouco mais estável e ativa
- Base nativa vs base React Native
-
Eles avaliaram se colocariam React Native sobre o app nativo ou, ao contrário, se colocariam o nativo sobre React Native
-
Se colocassem React Native sobre o nativo, os endpoints mudariam de acordo com cada tela e o gerenciamento do ciclo de vida do app ficaria mais complexo
-
Se colocassem o nativo sobre React Native, seria necessário primeiro adaptar o código nativo existente para que fosse compatível com React Native. No futuro, também seria preciso reescrevê-lo completamente em React Native
-
Como a maior parte das funcionalidades acabaria sendo migrada para React Native de qualquer forma, decidiram seguir pela direção de colocar o nativo sobre React Native
- Reutilização de telas nativas
- Para responder rapidamente às mudanças dentro do prazo disponível, decidiram criar as novas telas em React Native e manter as telas existentes em nativo (com migração gradual dessas telas nativas para React Native)
- Reutilização de código nativo
-
Seria possível incorporar ao React Native a essência do código nativo acumulado ao longo de 13 anos de manutenção na Ridibooks? Eles já usavam Swift e Kotlin no app nativo existente, então validaram se isso poderia ser aproveitado como estava no React Native
-
Com a criação de bridges, foi possível usar tudo da forma existente
- Dificuldades no processo de adoção
-
O tamanho do bundle e o uso de memória aumentaram
-
O tamanho do bundle ficou dentro do esperado, mas o consumo de memória foi desastroso. Foi preciso dar muita atenção à otimização.
-
É difícil confiar em bibliotecas de terceiros
-
Não dá para negligenciar nem o lado nativo nem o front-end. Desenvolvedores nativos precisam aprender front-end, e desenvolvedores front-end precisam aprender desenvolvimento nativo. A troca entre as equipes é a chave do sucesso.
- Por que React Native é bom
-
Alta produtividade
-
Uma plataforma boa para colaboração
Graças ao React Native, foi possível cumprir o roadmap do produto dentro do prazo e ganhar um ambiente com produtividade e capacidade de responder rapidamente às mudanças. Daqui para frente, a empresa pretende migrar de forma mais ampla a área nativa para React Native. No entanto, como o visualizador carrega 13 anos de know-how acumulado, ele continuará sendo mantido para oferecer a melhor experiência possível ao usuário.
11 comentários
Não sei se você já chegou a fazer uma busca por palavras-chave no Google Trends, mas o ecossistema de RN está praticamente morrendo. Em comparação, o Flutter está crescendo de forma explosiva. Só para constar, eu sou desenvolvedor nativo.
Do ponto de vista do usuário, parece que o app desktop tem um desempenho pior do que a versão anterior. Antes eu não sentia atraso ao mudar de página, mas hoje em dia ele continua travando.
Queria que dessem um certo destaque na versão desktop... fico pensando se isso não dá por causa de alguma questão de direitos autorais, sei lá.
Queria muito que dessem um pouco de atenção aos apps de desktop também... buá buá
Como alguém que usou o app de desktop da Ridibooks por muito tempo, fico com a sensação frustrante de que essa decisão foi tomada pensando exclusivamente no mobile. E não sou só eu: todos que conheço e usam o app de desktop sofrem com bugs constantes... (ainda pior do que o antigo app baseado em Qt)
Tenho ouvido muita gente por aí reclamando bastante dos problemas de aplicativos desktop..
Eu também não estou na posição de desenvolver diretamente, mas ao ver tantos elogios ao Flutter nas comunidades que frequento, comentei isso com a pessoa desenvolvedora do app da empresa, e ela parecia gostar mais de React. Disse que a base instalada e o mercado de contratação também são melhores. Gostaria de ouvir a opinião de outras pessoas também.
Os apps nativos estão evoluindo numa velocidade impressionante, então a questão será se o RN consegue acompanhar esse ritmo.
E em comparação, como o Flutter se sairia nessa questão?
Do mesmo jeito, o Android provavelmente ficaria bem, mas não sei se conseguiria acompanhar o iOS.
Acho que não se deve ignorar o custo da entropia gerada pela unificação.
Eu desenvolvi e lancei com React Native há uns 2~3 anos...
Pessoalmente, achei que havia mais desvantagens do que vantagens...
https://m.blog.naver.com/PostView.naver/…
Acabei perdendo bastante o interesse, mas... a popularidade dele continua a mesma.