2024 — hoje · Engenharia mobile
CISS S.A.
Na CISS eu desenvolvo e modernizo aplicativos React Native que estão em produção no varejo — o tipo de projeto em que a parte difícil não é escrever a funcionalidade, é atualizar um app vivo sem quebrar quem depende dele todo dia.
Stack
- React Native
- Expo SDK 53
- TypeScript
- Jest
- EAS
- Hermes
O problema
Um app com dependências muito defasadas, sem nenhum teste automatizado, com as pastas nativas geradas por prebuild (ou seja, mudança nativa só se verifica com build real em dispositivo) e com feature branches continuando a entrar durante a modernização. Atualizar tudo de uma vez seria um pull request impossível de revisar e impossível de reverter.
A abordagem
Modernização em waves: um cluster de dependência por pull request, cada fase mergeável e revertível isoladamente com um único `git revert`, ordenadas por raio de impacto vezes probabilidade de quebra. Antes de qualquer bump arriscado, construí uma rede de testes Jest de caracterização — testes que não descrevem o comportamento ideal, e sim o comportamento atual, para que qualquer desvio apareça. QA manual em build real antes de cada merge, porque em projeto com prebuild o diff de git não conta a história inteira.
O que aconteceu
A primeira wave (Jest, alinhamento do SDK, cliente HTTP) foi entregue sem interromper as entregas de produto que continuavam acontecendo em paralelo. Do lado do build nativo, resolvi uma sequência de bloqueios de iOS que costuma consumir dias: conflito do macro `FMT_STRING` da lib `fmt` com o Apple Clang mais novo, resolvido com downgrade controlado de Xcode; falha do ReactCodegen por caminho de `node` não encontrado; e localização do SDK do iphoneos.
Fatos do projeto
Expo SDK 53, React Native 0.79, React 19, Hermes, New Architecture ligada
Um cluster de dependência por PR, cada fase revertível com um comando
Rede de testes Jest de caracterização criada antes dos bumps arriscados
Conflito de `FMT_STRING` com Apple Clang resolvido por downgrade de Xcode
Pastas nativas gitignored: verificação só com build real via EAS
Me conta o que você quer construir.
Uma conversa de 30 minutos sobre o problema costuma resolver mais do que três trocas de e-mail sobre tecnologia. Se não for pra mim, eu digo na hora.
andre@andrebordignon.dev · Brasília, Brasil