KasyKasy

Rodar o app

Use kasy run no dia a dia. Simulador, device físico, web na porta 5555 e kasy reset para testar do zero.

Implementação

  1. Recomendado: use sempre kasy run (ou o MCP). É o caminho completo: carrega credenciais, mostra a marca Kasy e avisa quando há atualização da CLI.

    Pelo MCP: peça "rode o app". O assistente pergunta a plataforma (iOS, Android ou web) e, na web, se quer só a URL, abrir no navegador padrão (openBrowser) ou Chrome isolado do Flutter (flutterChrome). Pra testar onboarding do zero na web, peça freshStorage ou clear_web_storage. Veja MCP do Kasy.

    Pelo terminal:

    cd seu_app
    kasy run                 # primeiro device disponível
    kasy run --ios           # simulador iOS
    kasy run --android       # emulador Android
    kasy run --web           # web em localhost:5555
    kasy run --web --open-browser --fresh   # abre no navegador padrão já limpando storage
    kasy run --web --open    # Chrome dedicado do Flutter (perfil isolado)
    kasy clear-web           # só limpa storage (app já tem que estar rodando)
    kasy run --prod          # usa config de produção do launch.json
  2. Para validar o fluxo de primeira abertura (push, onboarding, ATT, Face ID), rode:

    Pelo MCP: "reseta o app no iOS" (reset_app).

    Pelo terminal:

    kasy reset               # detecta o device, pergunta se houver mais de um
    kasy reset --ios
    kasy reset --android
    kasy reset --web         # limpa storage de dev no navegador (precisa de kasy run --web ativo)
    kasy reset -d <device-id>   # device específico (ID do flutter devices)
    kasy reset --no-reinstall   # só desinstala

    Desinstala o app no simulador/emulador e reinstala em seguida. Um simples flutter run mantém os dados e permissões já concedidas, então não serve pra esse teste (detalhes em Informações).

  3. Quando for gerar um build de release:

    flutter build ipa --release --dart-define=ENV=prod
    # ou simplesmente:
    kasy ios release   # já injeta ENV=prod e incrementa o build

    Pelo MCP: "publica o iOS" (release_ios). Veja MCP do Kasy.

Próximo passo: ver o app funcionando.

Com o app rodando em debug, abra o Storyboard pela barra do preview: um mapa vivo de todas as telas e navegações, com Copiar para IA para pedir mudanças numa tela específica.

Informações

Por que não só flutter run?

kasy runflutter run
Lê o .envSimSim
Injeta --dart-define do launch.jsonSimNão
Escolhe chave RevenueCat certa (simulador vs físico)SimNão
Logo Kasy + aviso de updateSimNão

Chave RevenueCat automática

O RevenueCat tem três tipos de chave, e cada uma só funciona em um lugar:

ChaveFunciona em
test_xxxSimulador iOS e emulador Android
appl_xxxiPhone físico
goog_xxxAndroid físico

O kasy run detecta o device e injeta a chave certa do .env. Você não precisa lembrar qual usar onde.

RC_TEST_KEY=test_xxx
RC_IOS_PROD_KEY=appl_xxx
RC_ANDROID_PROD_KEY=goog_xxx

Se a chave errada for injetada, o paywall aparece vazio: o SDK não acha os produtos. Era a dor clássica de tentar testar assinatura no simulador.

Se só a RC_TEST_KEY estiver preenchida, o kasy run usa a de teste em qualquer device e avisa que no release não vai funcionar, sem travar o desenvolvimento. E se o .env ainda usar o formato antigo de chave única (RC_IOS_API_KEY / RC_ANDROID_API_KEY), ele continua funcionando sem a detecção automática; para ganhar a detecção, basta acrescentar as três variáveis acima.

Para forçar uma delas:

kasy run --rc=test   # chave de teste mesmo em device físico
kasy run --rc=prod   # chave de produção (falha em simulador)

Web: qual variante escolher

Todas rodam a mesma build e mostram a mesma tela, com a moldura de device preview incluída. A diferença é só qual janela hospeda a página:

ComandoO que abreQuando usar
kasy run --web --open-browserAbre localhost:5555 no navegador padrão do sistema (Chrome, Safari, Firefox, Edge…)Dia a dia com a conta Google já logada, extensões, etc.
kasy run --web --open-browser --freshIgual acima, mas limpa storage de dev antes (localStorage, sessionStorage, IndexedDB)Testar fluxo nativo no device preview sem aba anônima
kasy clear-webSó abre a URL de limpeza (app já rodando)Reset rápido sem reiniciar o Flutter
kasy run (escolha Chrome no seletor) ou kasy run --web --openUma janela nova e isolada do Chrome: perfil zerado, sem extensões nem contas salvasQA rápido, sem resquício de sessões ou dados antigos
kasy run --web (sem flags de abrir)Não abre nada sozinho. Imprime a URL (localhost:5555) no terminal pra você abrir onde quiserCopiar URL, abrir manualmente, ou deixar o MCP só devolver o link

Na web, o login guarda sessão por origin (domínio + porta), seja Supabase Auth ou Firebase Auth. Por isso a porta fica fixa em 5555: se ela mudasse a cada execução, o login pareceria sumir.

Se 5555 já estiver em uso: kasy run --web --web-port 6000.

Tela inicial em debug

O kasy run pode abrir na última tela em que você estava (ex.: admin, components). Isso ajuda no desenvolvimento e no hot restart (R). Não é o comportamento de produção: em release o app começa na Home (nativo) ou na URL que o usuário abriu (web). Detalhes em Navegação → debug vs produção.

Outras formas (funcionam)

make run           # sem o CLI instalado globalmente
flutter run        # rápido; usa o .env mas sem os extras do kasy run

No VSCode, F5 usa o .vscode/launch.json (com debugger gráfico).

Log completo para depurar erros

O kasy run grava toda a saída do Flutter em .kasy/run.log. Cole esse arquivo na IA quando precisar de ajuda.

Para ver a saída bruta direto no terminal:

kasy run --raw           # saída crua sem o spinner
kasy run | tee out.log   # qualquer pipe já cai em modo cru automaticamente

O que o kasy reset limpa em cada plataforma

Simulador iOSiPhone físicoAndroid (emu/device)
SharedPreferences e banco localSimSimSim
Permissão push / ATT / câmeraSimPode persistir alguns minutosSim
Auth do Firebase (Keychain)NãoNãoSim

O Keychain do iOS persiste por design da Apple, igual ao WhatsApp que "lembra" de você após reinstalar. Para testar sem conta em device físico: saia da conta dentro do próprio app.

Como testar "do zero" em iPhone físico

Quero testarO que fazer
Onboarding / fluxo de loginSaia da conta no app. Login novo cai no fluxo inicial
Permissão push do zeroConfigurações → app → Notificações → desativa
Permissão ATTConfigurações → Privacidade → Rastreamento → toggle do app
Face IDSettings → biometria → desliga e religa o switch

Quando o kasy reset brilha: em simulador iOS e emulador Android, onde zera tudo (incluindo permissões) em segundos.

Atualizado em 03/11/2026