"Firebase vs Supabase: qual escolhi pro OverAir e por quê"
Comparação real entre Firebase e Supabase pra um SaaS WhatsApp com IA — com os motivos técnicos e de custo que definiram a escolha do OverAir.
Toda semana alguém posta no Reddit ou no Twitter a mesma pergunta: "Firebase ou Supabase pra meu próximo projeto?" E toda semana os mesmos argumentos genéricos aparecem: "Supabase é open source", "Firebase tem lock-in", "Postgres é melhor que NoSQL".
Nenhum desses argumentos me ajudou quando precisei decidir o backend do OverAir — um SaaS de memória digital que roda via WhatsApp, processa áudio e imagem com IA, e dispara lembretes proativos pros usuários.
Escolhi Firebase. Firestore + Cloud Functions + FCM. Desde o primeiro commit. E se começasse hoje, faria a mesma escolha.
Vou explicar por quê — sem evangelismo, com os tradeoffs reais.
O critério que definiu tudo: triggers reativos no banco
O OverAir funciona assim: o usuário manda uma mensagem no WhatsApp, o webhook da Meta escreve um documento no Firestore, e uma Cloud Function dispara automaticamente via onCreate. Essa function processa a mensagem com Gemini 2.5 Flash, grava o resultado, e outra function reage ao onUpdate pra enviar a resposta via WhatsApp.
Esse pipeline é 100% event-driven. Não tem polling. Não tem cron verificando "tem mensagem nova?". Cada etapa é uma reação a uma escrita no banco.
No Firebase, isso é nativo. Você declara functions.firestore.document('messages/{id}').onCreate(...) e pronto. Sem infraestrutura extra, sem fila, sem worker.
No Supabase, o equivalente seria usar Database Webhooks — que usam pg_net pra chamar uma Edge Function via HTTP quando uma row é inserida. Funciona? Sim. Mas é uma camada extra: o trigger Postgres chama pg_net, que faz um HTTP POST pra Edge Function, que precisa estar deployada e respondendo. No Firebase, o trigger é direto — a function é o handler do evento, sem intermediário HTTP.
Pra um pipeline onde cada mensagem passa por 2-3 estágios reativos (receber → processar → responder → agendar lembrete), a simplicidade do Firestore trigger fez diferença real no tempo de desenvolvimento.
Push notifications: FCM é imbatível no Flutter
O OverAir tem um app Flutter que mostra o histórico de memórias e envia push notifications de lembretes. Firebase Cloud Messaging se integra com Flutter em literalmente 3 linhas de configuração — o plugin firebase_messaging resolve tudo: token management, foreground/background handling, tópicos.
Supabase não tem push notification service próprio. Você precisaria integrar OneSignal, Amazon SNS, ou Pusher Beams — cada um com seu SDK, seu dashboard, sua conta. Não é impossível, mas é mais uma peça móvel num sistema que já tem bastante coisa girando.
Pra um dev solo construindo dois SaaS ao mesmo tempo (OverAir e Studio Kallos), cada integração que eu evito é tempo que ganho.
Custo: Spark free tier segura o jogo
Firebase tem dois planos: Spark (grátis) e Blaze (pay-as-you-go). O Spark inclui:
| Recurso | Limite gratuito/dia |
|---|---|
| Firestore reads | 50.000/dia |
| Firestore writes | 20.000/dia |
| Cloud Functions | 2M invocações/mês |
| Auth | 50.000 MAU |
| Hosting | 10 GB armazenamento |
O OverAir hoje, com zero clientes pagantes e só eu testando, consome uma fração disso. Mas mesmo com 500 clientes ativos, cada um fazendo 20 mensagens/dia, estamos falando de ~10.000 writes/dia e ~30.000 reads/dia. Ainda dentro do free tier.
Supabase também tem free tier generoso: 500 MB de storage, 50.000 MAU, API requests ilimitados. Mas o free tier do Supabase pausa o projeto depois de 7 dias sem atividade e limita a 2 projetos. O Firebase Spark não pausa nada — seu projeto fica no ar indefinidamente.
Quando você está em fase de validação e pode passar uma semana sem mexer no projeto enquanto resolve outra coisa, ter o banco pausado automaticamente é um risco real.
O Pro do Supabase custa US$ 25/mês por projeto. O Blaze do Firebase cobra por uso — e na escala do OverAir, esse uso dá centavos. A diferença é que no Supabase você tem um piso fixo; no Firebase, o piso é zero.
O tradeoff real: pricing por operação
A desvantagem mais concreta do Firebase é o modelo de cobrança do Firestore: por read/write/delete, não por query ou por GB transferido. Uma query que retorna 500 documentos conta como 500 reads. Se você não estruturar seus dados pensando nisso, a conta surpreende.
No Supabase (Postgres), você paga por storage e egress — não por quantidade de queries. Pra aplicações com queries complexas, joins pesados, ou dashboards analíticos, Postgres é objetivamente mais barato em escala.
Mas o OverAir não é uma aplicação analítica. Cada mensagem gera 3-5 writes e 5-10 reads. O padrão é previsível, o volume é baixo por operação. Firestore funciona bem pra esse perfil.
Se eu estivesse construindo um dashboard de métricas ou um CRM com relatórios complexos, Supabase seria a escolha óbvia.
Quando eu escolheria Supabase
Não é que Supabase seja ruim — é que ele resolve problemas diferentes melhor:
- Projeto Postgres-first com queries SQL complexas, joins, views materializadas
- Stack web moderno (Next.js, Nuxt, SvelteKit) onde o Supabase client brilha
- Dados relacionais densos onde denormalizar pro Firestore seria dor de cabeça
- Controle total sobre o banco — self-host, migrations, pg_dump
O Supabase em 2026 tem mais de 1.2 milhão de desenvolvedores ativos e empresas como Mozilla e Vercel usando em produção. Não é underdog — é uma plataforma madura.
A decisão resumida
| Critério | Firebase | Supabase |
|---|---|---|
| Triggers reativos no banco | Nativo (onCreate/onUpdate) | Via Database Webhooks + HTTP |
| Push notifications (Flutter) | FCM integrado | Precisa de serviço externo |
| Free tier sem pausa | Sim | Pausa após 7 dias de inatividade |
| Pricing em baixa escala | Por operação (centavos) | US$ 0 free / US$ 25/mês Pro |
| Queries complexas/SQL | Limitado (NoSQL) | Postgres completo |
| Open source / self-host | Não | Sim |
| Lock-in | Alto (vendor Google) | Baixo (Postgres portável) |
Pro OverAir — event-driven, mobile-first, Flutter, baixa escala — Firebase foi a escolha pragmática. Se o produto escalar pra milhares de clientes e as reads do Firestore começarem a pesar, migrar será trabalho. Mas esse é problema bom de ter.
Próximo post
Quarta sai o post pesado: "Quanto tempo leva pra construir um SaaS WhatsApp com IA do zero" — com timeline real do OverAir, fase por fase, incluindo os 40% do tempo que gastei em edge cases de áudio que ninguém avisa. Feed RSS pra não perder.
Fontes:
Quer um app assim pro seu negócio?
A Hens constrói apps Flutter, bots WhatsApp com IA e backoffices sob medida — com o mesmo rigor dos nossos produtos próprios. Do MVP ao app em produção. Primeira conversa é direta, sem formulário.
Falar no WhatsApp →