"O app quebrou e você não sabe programar. E agora?"
São 23h, o cliente mandou print e você não lê código. Seis passos numerados, na ordem que funciona: primeiro estabilizar, depois descobrir a causa.
"Sistema caindo."
"Sistema que só funcionava usando uma conta específica. Qualquer outra conta retornava erro."
As duas frases são de um programador brasileiro, num fórum, descrevendo o sistema feito com IA que ele foi contratado pra arrumar. E tem a versão de quem estava do outro lado, em outro fórum: "Agora estamos correndo de lá para cá procurando um programador."
Se você chegou aqui às onze da noite, com um print do cliente na tela, este post é pra ler agora. É numerado, cada passo diz quanto tempo leva, e a lição de moral fica pra amanhã. Uma regra só, que é o post inteiro:
Primeiro estabilizar. Depois descobrir a causa.
O instinto é o contrário: abrir o chat e digitar "conserta". É por isso que quase todo mundo piora. Consertar sem saber a causa é mandar a IA chutar em cima de um estado que você não entende; cada chute é uma mudança nova somada à que já quebrou, e em uma hora são três problemas. Quem lida com incidente há anos devolve o serviço primeiro e investiga depois. Não é técnica. É ordem.
Passo 1: é só comigo? (3 minutos)
Descubra se o app quebrou ou se a sua tela quebrou. Três testes:
- Janela anônima (Ctrl+Shift+N no Chrome; Cmd+Shift+N no Mac). O navegador guarda cópia das páginas que já visitou, o cache, e mostra a cópia velha com cara de nova. A anônima não tem cópia.
- Outro aparelho.
- Rede do celular. Desligue o Wi-Fi. Problema de rede aparece numa e some na outra.
Na minha experiência, metade dos "caiu" morre aqui; não é medição, é o que eu vejo. Se funcionou em janela anônima pela rede do celular, o app está de pé e o problema está entre o cliente e ele. Manda pro cliente: "abre em janela anônima e me diz".
Se continuou quebrado, um quarto teste: a página de status da plataforma. Toda plataforma séria tem uma, sem login: status.lovable.dev, status.supabase.com (o Supabase é o banco atrás do Lovable e de muita outra). Na semana em que escrevo, a do Lovable lista "builds falhando para alguns usuários" em 16 de setembro, e a do Supabase, uma falha no serviço de login (Auth) no mesmo dia. Se o seu login parou nessa noite, não era o seu app. Clique em Subscribe to updates: aviso por e-mail antes do cliente.
Incidente aberto? Espere e avise o cliente. Nada? Passo 2.
Passo 2: o que mudou nas últimas 24 horas? (2 minutos)
Quase todo defeito novo tem uma mudança recente atrás. O trabalho aqui é listar suspeitos, num papel:
- Você mudou algo? Pediu algo pra IA hoje? Publicou? Cadastrou uma chave? O histórico de versões da plataforma lista cada edição com hora; anote: "18h10: pedi filtro por data. 18h40: publiquei".
- A plataforma mudou algo? Um usuário do Lovable escreveu, em 2025: "my webApp completely broke twice just because Lovable changed something", meu app quebrou duas vezes só porque o Lovable mudou algo. Acontece, e não se conserta no seu código.
- Um serviço de fora mudou? Pagamento, e-mail, login pelo Google, WhatsApp. Cada um tem calendário próprio, e ele não é seu.
Mudança sua hoje? Passo 3. Nenhuma? Pule pro 4.
Passo 3: volte pro último ponto que funcionava (5 minutos)
Achou a mudança de hoje? Não peça pra consertar. Volte. Já expliquei como restaurar uma versão no Lovable e no Replit. Hoje acrescento a Vercel, e dois avisos.
Na Vercel, o botão se chama Instant Rollback, no bloco da publicação em produção. A documentação (julho de 2026) diz que o plano gratuito volta só pra publicação anterior; os pagos, pra qualquer uma que já esteve no ar. E o diálogo de confirmação lembra o que vale pra qualquer plataforma: as variáveis de ambiente (as chaves guardadas fora do código) ficam como estão, e o banco pode ter mudado desde aquela versão.
Esse é o primeiro aviso: em várias plataformas, voltar o código não volta o banco. Bolt, Lovable e Replit escrevem isso, já mostrei onde. Se a mudança de hoje criou uma coluna ou uma tabela, o código de ontem encontra o banco de hoje e pode quebrar de um jeito novo. Antes de restaurar, pergunte pra IA, sem autorizar nada:
"Não mude nada. A última mudança alterou alguma tabela ou coluna do banco? Responda só sim ou não, e qual."
Não? Restaure. Sim? Restaure mesmo assim, sabendo que o erro seguinte pode ser esse desencontro.
O segundo aviso: depois de voltar, confira. Rode a foto do antes, os cinco fluxos que não podem quebrar. Verde? Estabilizou. O cliente tem o app de volta, você perdeu uma tarde, e a investigação fica pra amanhã. Uma tarde é o preço de um app inteiro de pé.
Continuou quebrado? Passo 4.
Passo 4: leia o recado que o app deixou (10 minutos)
Quando um app quebra, ele deixa o motivo escrito. Chama log: o registro, linha por linha, do que o servidor fez e do que deu errado, com hora. Ninguém mostra isso pra quem não é dev, porque dev acha óbvio onde fica. Documentação oficial, conferida nesta semana:
| Onde o seu app roda | Onde está o log | O detalhe que importa |
|---|---|---|
| Lovable | More → Cloud → Logs | Não atualiza sozinho: clique em Refresh. Filtro de status pra mostrar só erro. Volta até 5 dias. |
| Replit | Tools → Replit Cloud → Monitoring | Filtro Errors only. Guarda 30 dias. |
| Supabase | Logs, no menu do projeto | Filtro Level = error. Guarda 1 dia no plano gratuito, 7 no Pro. |
| Vercel | Aba Logs | Já mostrei. |
Leia de novo a linha do Supabase: um dia. No plano gratuito, o recado de hoje à noite some amanhã à tarde. Copie hoje.
O que fazer com o log não é entender. É achar a linha vermelha da hora em que o cliente reclamou, copiar inteira e colar num bloco de notas, com a hora. Depois, cole no chat com o pedido de sempre: "não conserte ainda; me explique em português o que esta linha diz e o que eu confiro antes de você mudar qualquer código". Tradução primeiro; conserto só no passo 5.
Passo 5: como pedir socorro direito (5 minutos)
Quem manda "não funciona" recebe de volta "o que você verificou?". Vale pra IA, pro fórum e pro programador, e a pergunta é justa. Você acabou de conferir quatro coisas. Escreva assim:
SOCORRO — 20/09, 23h10
O que o cliente vê: "erro ao salvar pedido" (print, 22h48)
É só comigo? janela anônima: igual · rede do celular: igual
status da plataforma: sem incidente
O que mudou nas 24h: 18h10 pedi filtro por data · 18h40 publiquei
O que eu já fiz: voltei pra versão das 17h → continuou quebrado
O log diz: [linha colada, com a hora]
O que eu pedi pra IA: "adicionar filtro por data"
O que ela respondeu: "pronto, adicionei e ajustei a consulta"
O que eu verifiquei: filtro aparece; salvar dá erro desde então
As três últimas linhas são as que ninguém escreve e as que mais valem. O que eu pedi, o que a IA respondeu, o que eu verifiquei. Separadas, porque o que a IA disse que fez não é o que ela fez, e você já sabe disso. Quem lê o socorro precisa distinguir fato de relato.
Com esse bloco colado numa sessão nova do chat, a IA para de chutar e passa a diagnosticar. Peça diagnóstico e uma correção só, pequena, com a frase verificável combinada antes. Se falhar duas vezes, não mande a terceira.
Passo 6: quando chamar alguém, e o que ter na mão
Quatro sinais, e um basta:
- O dado está errado ou sumiu. Tela se refaz; dado de cliente, não.
- Voltar não estabilizou, e o log aponta pra algo que você não deveria tocar sozinho: banco, chaves, login.
- Duas rodadas de IA e nada, com cliente esperando.
- Passou de uma hora, e tem gente pagante do outro lado.
O que ter na mão, porque é o que separa uma hora cobrada de uma noite cobrada: o bloco de socorro do passo 5; o inventário de onde cada coisa mora e em nome de quem, porque "não sei a senha do banco" é onde a primeira hora vai embora; o ponto de retorno marcado; o log copiado.
E o que pedir: horas, no ponto exato, com três entregas: o que causou, o que foi feito, e como eu confiro que está resolvido. Se vier "é só reescrever isso", devolva as cinco palavras: me mostra onde eu clico.
O programador da frase lá do começo terminou o relato assim: "agora estou refatorando tudo". Talvez o seu app precise disso um dia. Não é a conversa das 23h. Quem te vende a reforma da casa com a cozinha pegando fogo não está te ajudando.
Enquanto isso, o cliente
Uma mensagem, no primeiro minuto: "Vi. Estou olhando. Te aviso em 30 minutos." E avise, mesmo que seja "ainda não". O que destrói confiança não é o app cair; é o silêncio. E nunca "foi a IA": pro cliente, o app é seu. Ser dono é isso, na noite ruim também.
Salve com o nome "quando quebrar"
Seis passos, uns 25 minutos até estabilizar ou saber que precisa de alguém. Na hora você não vai lembrar da ordem, e a ordem é tudo.
Há um checklist que eu uso pra separar protótipo de produto, e a pergunta 10 dele é: "você sabe o que fazer quando quebra? Está escrito em algum lugar, não na sua memória?" Até hoje a sua resposta era não, e não por descuido: ninguém documenta o que vem depois do "seu app está no ar 🎉". Agora está escrito.
É uma pergunta de dez. As outras da mesma fase, a de operar, são vizinhas desta noite: o backup que já voltou uma vez, o custo por mês, a pessoa de fora usando. Elas têm ordem, e a ordem existe pra que a próxima quebra te encontre sabendo onde tudo está, e não correndo de lá pra cá atrás de um programador.
Fontes
- Lovable — Logs (More → Cloud → Logs; sem atualização automática; filtro por status; até 5 dias): https://docs.lovable.dev/features/logs
- Lovable — página de status e histórico de incidentes: https://status.lovable.dev/history
- Replit — Monitoring a deployment (Tools → Replit Cloud → Monitoring; filtro Errors only; retenção de 30 dias): https://docs.replit.com/cloud-services/deployments/monitoring-a-deployment
- Supabase — Logging (filtro por nível e status): https://supabase.com/docs/guides/telemetry/logs
- Supabase — Pricing (retenção de log: 1 dia no Free, 7 no Pro, 28 no Team, 90 no Enterprise): https://supabase.com/pricing
- Supabase — página de status: https://status.supabase.com/
- Vercel — Instant Rollback (atualizado em 07/07/2026; Hobby volta só pra anterior; variáveis de ambiente não mudam): https://vercel.com/docs/instant-rollback