1

Pitch: FitStreak, treinos de 5 minutos com um bichinho que cresce, e o bug do iOS 27 que quase nos derrubou

Fizemos o FitStreak, um app de iPhone (React Native + Expo) com treinos curtos em casa, de 5 a 7 minutos, sem equipamento. Cada treino conta para uma sequência de dias e faz crescer um bichinho companheiro.

A parte técnica que talvez interesse aqui: em outubro uma atualização nossa parou de abrir em todos os iPhones com iOS 27, sem nenhum erro no Sentry. O motivo: o Mac de build passou a usar o Xcode 27, e um app compilado com o SDK do iOS 27 precisa do ciclo de vida UIScene (nota técnica TN3187 da Apple). O Expo SDK 54 não tinha suporte a scenes. Como a falha acontece antes de qualquer JavaScript rodar, nenhuma ferramenta dentro do app viu nada.

O que mudamos:

  • recompilamos com o Xcode 26 e pedimos revisão expressa;
  • agora, antes de cada upload, um script em Node abre o Info.plist do IPA e recusa o build se DTSDKName for 27 ou mais e não houver UIApplicationSceneManifest;
  • o mesmo script confere NSSupportsLiveActivities, outra falha silenciosa que pegamos assim.

Lição: "compilou" e "passou na revisão" não dizem nada sobre esse tipo de bug. Leia o binário, não a sua memória do que está instalado.

O app está em português. Se quiser testar e dizer o que achou, o feedback é muito bem-vindo:
https://apps.apple.com/app/apple-store/id6759306186?pt=127830887&ct=comm-tabnews&mt=8

Carregando publicação patrocinada...
1

No IPA, o DTSDKName vem como iphoneos27.0, não como o número 27. Comparar com o texto "27" não encontra esse valor. O script tira o número depois de iphoneos, ou compara a string inteira?