Saindo do NextAuth? Minha Jornada (e Descoberta) com o Better Auth no Next.js (Building in Public)
Fala Devs! Felipe Barcelos aqui de novo.
Seguindo a vibe do "building in public" que comecei com o post sobre o Igniter.js, hoje quero compartilhar outra peça importante que entrou na stack dos meus projetos quando fiz a construção do meu SaaS Boilerplate, e que tem me feito questionar o status quo da autenticação no Next.js: o Better Auth.
Pra quem viu meu último vídeo (Igniter.js: Criei um Framework Open Source), sabe que um dos meus objetivos é simplificar a vida do dev full stack, especialmente na criação de Micro-SaaS. E uma das partes que sempre gera um certo atrito, ou pelo menos um bom tempo de configuração, é a autenticação.
A Dor Antiga: NextAuth e a Busca por Mais
Não me entendam mal, o NextAuth (agora Auth.js) é uma ferramenta poderosa e ajudou (e ainda ajuda) muita gente. Usei por muito tempo! Mas confesso que, em alguns pontos, eu sentia falta de algo mais... integrado, talvez? Especialmente em relação à type safety ponta-a-ponta (backend <-> frontend) e à flexibilidade para estender funcionalidades sem gambiarras.
Quem já precisou personalizar muito o schema do usuário ou adicionar fluxos como 2FA, gerenciamento de times/organizações ou até integrações diretas com pagamentos (oi, Stripe!) no NextAuth sabe que, embora possível, nem sempre é trivial e a DX pode sofrer um pouco. Além disso, a falta de tipagem forte em alguns callbacks ou na sessão do lado do cliente às vezes me deixava com aquela pulga atrás da orelha.
A Descoberta: Better Auth (https://better-auth.dev/)
Foi nessa busca por uma experiência melhor que esbarrei no Better Auth. A proposta me chamou a atenção de cara: foco total em Type Safety (usando Zod e inferência de tipos) e um sistema de Plugins que parecia resolver muitas das minhas dores.
O que mais curti de primeira:
-
Type Safety Real: Ele realmente se esforça pra garantir que os tipos do seu banco (com Prisma, por exemplo), os dados da sessão e o que você usa no frontend estejam sincronizados. Menos
any
s, menosas
forçados, mais confiança no código. -
Plugins que Facilitam a Vida: Essa pra mim é a virada de chave. Precisa de:
- 2FA (TOTP)? Plugin de 2FA muito completo.
- Admin para gerenciar usuários? Banir, trocar permissão, listar usuários... pronto.
- Sistema de Times/Organizações? Lida com convites, membros, etc.
- Stripe para assinaturas? Cara, isso aqui é animal! Ele configura o banco de dados, te dá o endpoint de webhook pronto e métodos pra gerenciar os planos do cliente. Simplifica absurdamente a integração com pagamentos.
-
DX Focada: A CLI (
@better-auth/cli
) ajuda no setup inicial (better-auth init
), pergunta o que você quer, gera o config e até atualiza seuschema.prisma
com as tabelas dos plugins. Achei isso bem mais direto do que copiar e colar schemas da documentação.
Como Tenho Usado (Exemplo Prático)
No vídeo novo que soltei (aqui o link pra quem quiser ver a demo completa), mostro o processo de setup e um fluxo básico com Magic Link:
Como eu usei no meu SaaS Boilerplate?
A ideia é que o SaaS Boilerplate seja uma base opinada para desenvolvedores que querem lançar os seus produtos de SaaS, são mais de 15 projetos que usei para mim e vários da comunidade.
Integrar o Better Auth (junto com o Igniter.js) nessa linha: oferecer uma solução de autenticação moderna, type-safe e extensível (com os plugins) pra quem adquire o boilerplate poder focar 100% na regra de negócio do seu SaaS, sem perder semanas configurando infra básica.
Você pode ver o resultado aqui:
https://saas-boilerplate.vibedev.com.br
Convite à Conversa (e ao Código!)
Estou explorando o Better Auth desde a sua primeira release publica, mas a experiência até agora tem sido muito positiva. O projeto é open source (aqui o GitHub deles, caso queiram fuçar ou contribuir) e a comunidade parece estar crescendo.
Mas quero saber de vocês:
Alguém já testou o Better Auth? Qual foi a impressão?
Quais as maiores dores que vocês têm hoje com autenticação no ecossistema JS/TS/Next.js?
O que acharam dessa ideia dos plugins para funcionalidades como Stripe e 2FA? Acham que simplifica?
Mandem aí nos comentários! Bora trocar essa ideia. E quem quiser ver a demo completa, o link do vídeo tá lá em cima.
Abraço e bom código pra gente! 🚀