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
-
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çafreshStorageouclear_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 -
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ó desinstalaDesinstala o app no simulador/emulador e reinstala em seguida. Um simples
flutter runmantém os dados e permissões já concedidas, então não serve pra esse teste (detalhes em Informações). -
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 buildPelo 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 run | flutter run | |
|---|---|---|
Lê o .env | Sim | Sim |
Injeta --dart-define do launch.json | Sim | Não |
| Escolhe chave RevenueCat certa (simulador vs físico) | Sim | Não |
| Logo Kasy + aviso de update | Sim | Não |
Chave RevenueCat automática
O RevenueCat tem três tipos de chave, e cada uma só funciona em um lugar:
| Chave | Funciona em |
|---|---|
test_xxx | Simulador iOS e emulador Android |
appl_xxx | iPhone físico |
goog_xxx | Android 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_xxxSe 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:
| Comando | O que abre | Quando usar |
|---|---|---|
kasy run --web --open-browser | Abre 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 --fresh | Igual acima, mas limpa storage de dev antes (localStorage, sessionStorage, IndexedDB) | Testar fluxo nativo no device preview sem aba anônima |
kasy clear-web | Só 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 --open | Uma janela nova e isolada do Chrome: perfil zerado, sem extensões nem contas salvas | QA 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 quiser | Copiar 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 runNo 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 automaticamenteO que o kasy reset limpa em cada plataforma
| Simulador iOS | iPhone físico | Android (emu/device) | |
|---|---|---|---|
| SharedPreferences e banco local | Sim | Sim | Sim |
| Permissão push / ATT / câmera | Sim | Pode persistir alguns minutos | Sim |
| Auth do Firebase (Keychain) | Não | Não | Sim |
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 testar | O que fazer |
|---|---|
| Onboarding / fluxo de login | Saia da conta no app. Login novo cai no fluxo inicial |
| Permissão push do zero | Configurações → app → Notificações → desativa |
| Permissão ATT | Configurações → Privacidade → Rastreamento → toggle do app |
| Face ID | Settings → 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

