POROROCA OTA
Atualizações OTA para apps brasileiros, sem esperar a revisão
O problema: uma correção de tela não deveria esperar a fila de revisão
Um preço errado, um texto de paywall que precisa mudar, uma etapa de onboarding confusa — e a correção fica parada esperando a revisão da App Store ou da Play Store. Para times que escrevem SwiftUI ou Jetpack Compose nativamente, não havia um equivalente às ferramentas de atualização remota que times React Native e Flutter já usam.
Este é o mesmo produto descrito nas demais páginas do site, com preço em BRL e esta página em português.
O modelo: documentos assinados, não código executável
O runtime para iOS 17+ em SwiftUI mantém um armazenamento resistente a falhas e um fallback embutido no app. No Android, o runtime para API 26+ em Jetpack Compose verifica a assinatura e os hashes do documento antes de usá-lo, e o app mantém o último documento aceito para uso offline hoje.
Cada manifesto é assinado com Ed25519, e a chave privada permanece na máquina do desenvolvedor ou no CI — nunca dentro do app.
O fluxo em quatro passos
1. Valide os documentos da tela antes de assinar qualquer coisa.
swift run pororoca validate .pororoca/documents --platform ios2. Exporte um pacote assinado e imutável.
swift run pororoca export .pororoca/documents \
--output .pororoca/update --update-id paywall-br-1 \
--private-key .pororoca/keys/private.key3. Publique em um canal com uma porcentagem inicial conservadora.
POROROCA_API_TOKEN=pororoca_live_... swift run pororoca publish .pororoca/update \
--server https://pororoca-ota.fly.dev --app your-app-slug \
--channel production --rollout 10 \
--public-key .pororoca/keys/public.key4. Confirme que um dispositivo elegível resolve a atualização antes de ampliar o rollout.
curl -i \
-H "Authorization: Bearer $POROROCA_RUNTIME_TOKEN" \
"https://pororoca-ota.fly.dev/api/v1/apps/your-app-slug/channels/production/resolve?install_id=docs-smoke-0001"O rollout é determinístico por install ID, então os mesmos dispositivos permanecem na mesma coorte enquanto você amplia a porcentagem, e a telemetria `applied` aparece no dashboard assim que um dispositivo renderiza a atualização com sucesso. Um único comando reverte para a última atualização estável, caso necessário.
Limites e o teste gratuito, com honestidade
No Android, o armazenamento da atualização é gerenciado pelo host hoje; o app mantém o último documento aceito para uso offline, mas a recuperação gerenciada após falha na atualização anterior, disponível no iOS, ainda não existe no SDK Android. A superfície de renderização do Android também é menor que a do SwiftUI, e ainda não há paridade completa de modificadores entre as duas plataformas.
Ainda não disponíveis: membros de equipe e controle de acesso por papel (RBAC), limites baseados em uso, alertas automáticos, paridade de expressões entre plataformas, e um transporte MCP hospedado (o servidor MCP roda localmente hoje).
Há um único plano Pro, com teste gratuito de 21 dias que exige cartão de crédito, cobrado em BRL ou USD.