🚀 Por que criei meu próprio sistema de Send OTA Updates para o Nutrilow


Introdução
Quando decidi adotar Expo + React Native + ExpressJS para o Nutrilow, compartilhei o raciocínio por trás dessa escolha no artigo “Por que adotei Expo, React Native e ExpressJS para a escalabilidade do Nutrilow”.
Essa decisão abriu portas para um controle técnico maior sobre cada camada da aplicação. Mas um ponto ainda me incomodava: as atualizações OTA (Over-the-Air).
Usar o serviço oficial do Expo é prático, mas também cria uma dependência forte de uma infraestrutura externa e limita a personalização da experiência de entrega de updates.
Foi aí que nasceu a ideia: criar meu próprio servidor de Send OTA Updates — controlado, transparente e 100% integrado ao meu pipeline.
Por que não usar o Expo Updates diretamente?
O Expo Updates é excelente, mas no Nutrilow eu precisava de:
- Controle de versão granular (permitir forçar updates mesmo com o mesmo version code);
- Infraestrutura self-hosted (sem dependência de terceiros);
- Logs e métricas personalizadas (integração com meu sistema de monitoramento);
- Autenticação customizada para liberar updates apenas a builds autorizadas.
Além disso, o processo de publicação precisava estar alinhado ao meu ciclo de deploy com PM2 + API Express, para que cada commit pudesse gerar uma release OTA sem etapas manuais.
Arquitetura do sistema OTA customizado
O sistema é simples, mas eficaz:
[Git Commit] → [Build Script Customizado] → [Servidor Express OTA] → [Cliente Expo Fetch Update]
-
Build Script
- Um script Bash coleta o commit atual e gera metadados (
runtimeVersion,uploadKey,url). - Empacota o bundle via
expo exporte envia para a API.
- Um script Bash coleta o commit atual e gera metadados (
-
Servidor Express OTA
- Recebe o arquivo.
- Valida a chave de upload.
- Armazena o bundle no storage local.
- Responde em formato compatível com o cliente OTA do Expo.
-
Cliente Nutrilow
- O app verifica atualizações usando
expo-updatesapontando para minha URL custom. - Se houver uma nova versão, baixa e aplica automaticamente.
- O app verifica atualizações usando
Benefícios diretos
- Controle total de ciclo de updates
- Deploys mais rápidos e auditáveis
- Independência da nuvem Expo
- Economia de custos a longo prazo
Conclusão
Criar meu próprio sistema OTA foi um passo natural dentro da minha filosofia: entender, experimentar e dominar cada camada técnica de um produto.