Atualização do app
Aviso de versão nova na loja e bottom sheet "O que há de novo" após o usuário atualizar.
O kit tem dois fluxos distintos de atualização. Não confunda:
| Fluxo | Quando aparece | O que faz |
|---|---|---|
| Atualização disponível | Usuário está numa versão antiga | Botão "Atualizar agora" abre a loja |
| O que há de novo | Usuário acabou de atualizar | Bottom sheet com as novidades da versão |
Ambos são native-only (não aparecem na web) e funcionam em PT, EN e ES nos três backends. A configuração vem do Firebase Remote Config, que é inicializado em todos os projetos, mesmo nos de Supabase e API.
Implementação
Atualização disponível
-
No Firebase Remote Config crie duas chaves de texto:
Chave Efeito app_latest_versionVersão mais nova na loja. Se o usuário tem versão menor → aviso opcional (pode fechar) app_min_versionVersão mínima aceita. Se o usuário tem versão menor → aviso obrigatório (bloqueia o app) Use SemVer (
1.4.0). O padrão é0.0.0: o recurso fica desligado até você pôr um valor real.
Firebase Remote Config: os dois parâmetros publicados app_min_versioncom valor errado trava todos os usuários. Suba esse valor com cuidado. -
Publique a versão na loja e só então suba o valor de
app_latest_version. O fluxo certo é: publicou na loja → entrou no Firebase Remote Config → subiuapp_latest_version(veja por que isso é manual de propósito em Informações).Atalho via CLI, sem abrir o console:
# Interativo: sugere a versão do pubspec, pergunta se é opcional ou obrigatória kasy release-version # Direto kasy release-version -v 1.4.0 # Obrigatória, sem perguntas (bom pra CI) kasy release-version -v 1.4.0 -f --yesPelo MCP: peça "marca a versão 1.4.0 como live nas lojas" (
set_release_version). Pra forçar update bloqueante, diga que é obrigatório (force). Veja MCP do Kasy.O comando reutiliza seu
firebase login, lê o projeto dogoogle-services.jsone atualiza só as chaves de versão, sem sobrescrever o resto do Remote Config.
O que há de novo
-
Atualize a versão em
pubspec.yaml(ou usekasy ios release, que faz isso automaticamente):version: 1.2.0+5 -
Atualize os textos em
lib/i18n/pt.i18n.jsonelib/i18n/en.i18n.json:"update_bottom_sheet": { "title": "O que há de novo?", "highlights": [ "- Nova funcionalidade X adicionada.", "- Melhorias de performance no assistente IA.", "- Correção de bug no login social." ] } -
Regenere os arquivos i18n:
dart run slangPronto. Na próxima atualização do usuário, o sheet aparece automaticamente.
O rastreamento é local (SharedPreferences). Se o usuário instalar em um celular novo onde a versão já é a mais recente, o sheet não aparece: correto, pois não houve atualização nesse aparelho.
Informações
Por que é manual de propósito
A loja demora pra aprovar. Você pode querer rollout gradual, ou só avisar que a atualização é opcional depois de alguns dias. Se o número saísse automático, você avisaria "atualize" antes de a versão estar disponível.
Botão "Atualizar"
Leva o usuário direto pra loja. No Android funciona automático. No iOS precisa do App Store ID: rode kasy configure e preencha o campo App Store ID (numeric).
Quando "O que há de novo" aparece
| Situação | Aparece? |
|---|---|
| Primeira instalação (app nunca aberto) | Não, só registra a versão atual |
| Reinstalação sem troca de versão | Não |
| App atualizado para versão nova | Sim, na primeira abertura |
| Usuário recém-cadastrado (conta criada hoje) | Não, evita aparecer logo no cadastro |
Atualizado em 03/11/2026

