KasyKasy

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:

FluxoQuando apareceO que faz
Atualização disponívelUsuário está numa versão antigaBotão "Atualizar agora" abre a loja
O que há de novoUsuário acabou de atualizarBottom 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

  1. No Firebase Remote Config crie duas chaves de texto:

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

    Parâmetros app_latest_version e app_min_version criados no Firebase Remote Config
    Firebase Remote Config: os dois parâmetros publicados

    app_min_version com valor errado trava todos os usuários. Suba esse valor com cuidado.

  2. 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 → subiu app_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 --yes

    Pelo 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 do google-services.json e atualiza só as chaves de versão, sem sobrescrever o resto do Remote Config.

O que há de novo

  1. Atualize a versão em pubspec.yaml (ou use kasy ios release, que faz isso automaticamente):

    version: 1.2.0+5
  2. Atualize os textos em lib/i18n/pt.i18n.json e lib/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."
      ]
    }
  3. Regenere os arquivos i18n:

    dart run slang

    Pronto. 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çãoAparece?
Primeira instalação (app nunca aberto)Não, só registra a versão atual
Reinstalação sem troca de versãoNão
App atualizado para versão novaSim, na primeira abertura
Usuário recém-cadastrado (conta criada hoje)Não, evita aparecer logo no cadastro

Atualizado em 03/11/2026