Publicar na Web
Build de produção, Firebase Hosting, Vercel, domínio próprio e PWA.
Implementação
Pelo MCP: pra Auth na web com domínio próprio, peça "lista os domínios autorizados" ou "adiciona app.suamarca.com nos domínios" (manage_domain). Favicon: set_favicon. O build/hosting estático ainda é pelo terminal (abaixo). Veja MCP do Kasy.
-
Gere o build de produção:
flutter build web --release --dart-define=ENV=prodO site pronto fica na pasta
build/web. É um site estático: qualquer hospedagem serve.--dart-define=ENV=prodé obrigatório. Sem isso o build usa a configuração de desenvolvimento.Opcional: compilar para WebAssembly.
flutter build web --wasm --release --dart-define=ENV=prodcompila pra WebAssembly em vez de JavaScript, com fallback automático pra JavaScript em navegadores sem suporte (nenhum usuário fica sem app). Testado e funcionando no Kasy a partir do Flutter 3.47. Detalhes e o motivo de não ser o padrão em WebAssembly (Wasm), abaixo. -
Escolha a hospedagem:
Opção 1: Firebase Hosting (backend Firebase)
Se o seu backend é Firebase, o projeto já vem configurado: o
firebase.jsonaponta parabuild/web, com rewrites de SPA e headers de cache corretos. Publicar é só:flutter build web --release --dart-define=ENV=prod firebase deploy --only hostingNo final, o terminal mostra a URL (
https://seu-projeto.web.app).Para domínio próprio:
- Firebase Console → Hosting → Adicionar domínio personalizado
- Digite o domínio (ex.:
app.suamarca.com) - Crie os registros DNS que o console mostrar (no seu provedor de domínio)
- Aguarde a verificação: o certificado HTTPS é automático
Opção 2: Vercel (qualquer backend)
Funciona com Firebase, Supabase ou API REST, porque o build é estático.
- Crie a conta em vercel.com
- Rode o build de produção (comando acima)
- Publique a pasta:
npm i -g vercel cd build/web vercel --prodDomínio próprio: painel da Vercel → seu projeto → Settings → Domains.
Netlify, Cloudflare Pages ou qualquer host estático também funcionam: o processo é o mesmo, build e subir a pasta
build/web. -
Depois de publicar, libere o login:
Google Sign-In
Adicione o domínio de produção e
http://localhost:5555como origins autorizadas: Google Cloud Console → Credenciais → seu OAuth Client → Authorized JavaScript origins.Firebase Auth (domínios autorizados)
Firebase Console → Authentication → Settings → Authorized domains → adicione o domínio de produção. Sem isso, o login social falha com
auth/unauthorized-domain.Supabase Auth (domínios autorizados)
Painel do Supabase → Authentication → URL Configuration → adicione o domínio de produção (e
http://localhost:5555, se ainda estiver testando) em Site URL / Redirect URLs. Sem isso, o login social redireciona de volta pro domínio errado ou falha silenciosamente.
Informações
Desenvolvimento
kasy run --web # imprime localhost:5555
kasy run --web --open-browser # abre no seu navegador (conta Google, extensões)
kasy run --web --open-browser --fresh # mesmo lugar, limpa storage de dev (onboarding)
kasy clear-web # só limpa storage (app já rodando)
kasy run --web --open # Chrome isolado do Flutter (perfil zerado, sem conta)| Comando | Onde abre |
|---|---|
--open-browser | Navegador padrão do sistema, no perfil onde você já está logado |
--open | Janela Chrome separada do Flutter, sem contas nem extensões |
Porta 5555 fixa para a sessão Firebase Auth persistir entre runs. Detalhes em Rodar o app.
WebAssembly (Wasm)
flutter build web --wasm compila o app pra WebAssembly em vez de JavaScript. Ganho real, medido pelo próprio time do Flutter: até 2x mais rápido em tela com muita animação/reconstrução de widgets, com menos engasgo (jitter). Navegador sem suporte a Wasm carrega a versão JavaScript normalmente, de forma automática, sem configuração extra.
Ainda não é o comando padrão recomendado por um motivo: o ganho de desempenho completo (renderização em paralelo, não só a compilação) exige que o servidor mande os headers Cross-Origin-Opener-Policy e Cross-Origin-Embedder-Policy. Esses headers isolam a aba do navegador e podem quebrar login social feito via popup (Google, Facebook). Sem eles, o app em Wasm funciona normalmente, só sem o ganho extra de multithread.
Se quiser ativar:
- Troque o build por
flutter build web --wasm --release --dart-define=ENV=prod. - Publique normalmente (Firebase Hosting, Vercel, etc.).
- Só adicione os headers COOP/COEP se for testar o ganho de multithread, e teste o login social depois, numa aba anônima, antes de confirmar em produção.
Mais detalhes técnicos: docs.flutter.dev/platform-integration/web/wasm.
PWA
O app web já é instalável como PWA. Personalize:
- Ícones e cores:
web/manifest.json(background_color,theme_color) - Favicon:
kasy favicon --image seu-icone.png(guia)
Atualizado em 03/11/2026

