pororocaota

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 ios

2. 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.key

3. 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.key

4. 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.

Start 21-day trial Read the docs