Authentication în Next.js: 4 abordări comparate (Better-Auth, Lucia, Clerk, Supabase Auth)
Auth e prima decizie tehnică serioasă a oricărui proiect. Comparativ onest: ce alegi când contează preț, simplitate, control sau scalare.
Dacă faci un proiect Next.js, auth e prima decizie tehnică serioasă pe care o iei. Și e una care te urmărește mult timp — schimbarea după ce ai 1000 de useri e dureroasă. Am folosit toate cele 4 opțiuni populare în 2026, fiecare cu compromisurile ei. Iată comparația onestă.
1. Better-Auth — alegerea mea pentru proiecte noi
Better-Auth e o librărie open-source apărută în 2024 care a luat fast adopția pieței mici-mijlocii. E ce folosim noi pe aihost.md.
Pro
- Open source, free, fără limite arbitrare pe useri
- Schema DB-ul e a ta — userii sunt în Postgres-ul tău, nu în ceva extern
- Plugins curate: magic link, OTP, OAuth (Google/GitHub/etc), 2FA, organizations
- API-ul e direct, nu trebuie să înveți concepte abstracte
- TypeScript-first — autocomplete bun
Contra
- Tu rulezi DB-ul, tu faci backup, tu securizezi (asta poate fi pro sau contra)
- Comunitate mai mică decât NextAuth (deși crește repede)
- Documentație bună, dar uneori "happy path only" — edge cases trebuie săpate
Cost
Zero. Plătești doar serverul / DB-ul tău.
2. Lucia — pentru când vrei control absolut
Lucia e o librărie minimalistă (~5KB). Practic primești sesiunile + cookies + helpers, restul e treaba ta.
Pro
- Cea mai mică amprentă — perfect pentru proiecte simple
- Zero magie — vezi exact ce face
- Schema DB completă în controlul tău
- Excelent pentru learning — înțelegi cum funcționează auth în profunzime
Contra
- "Batteries excluded" — magic link, OTP, OAuth tu le scrii
- Pentru un signup flow standard ai nevoie de mult cod boilerplate
- Maintainerul a anunțat în 2024 că nu mai dezvoltă activ — librăria rămâne, dar updates lente
Cost
Zero, dar timpul tău nu.
3. Clerk — pentru când nu vrei să te gândești
Clerk e SaaS — auth ca serviciu. Adaugi 3 linii în middleware.ts și ești bun.
Pro
- Setup în 5 minute, sincer
- UI components polish-uite gratis (login, signup, profile)
- Integrări Stripe / billing built-in (la planurile mai scumpe)
- Securitate la nivel enterprise — nu trebuie să te gândești la 2FA, recovery, etc
- Webhook-uri pentru toate event-urile importante
Contra
- Userii sunt la Clerk, nu la tine — vendor lock-in real
- Free tier: 10k MAU. La 10k+ devine $25/luna și crește repede
- Migration spre alt provider e dureroasă (export limited)
- Latență extra — fiecare request lovește serverul Clerk
Cost
Free până la 10k MAU. După: $25/luna pentru 10k-20k, scalare după aia.
4. Supabase Auth — dacă deja folosești Supabase
Dacă DB-ul tău e Supabase, auth-ul vine la pachet. Tabelul auth.users e separat de public.users și se sincronizează prin foreign keys.
Pro
- Zero setup dacă deja folosești Supabase
- Row-Level Security (RLS) pe baza userului logat — extrem de elegant
- Magic link, OAuth, phone, OTP — toate built-in
- Liber în free tier-ul Supabase (50k MAU)
Contra
- Sesiunile sunt JWT-bazate — nu pot fi revocate instant (workarounds există dar nu sunt implicite)
- Customization avansat (multi-tenant, organizations) e DIY
- Lock-in la Supabase — dacă pleci de acolo, scrii migration la auth
Cost
Inclus în planurile Supabase. Free tier 50k MAU.
Decision matrix
| Scenariu | Alegerea mea |
|---|---|
| Proiect serios, vrei control + free | Better-Auth |
| Vrei să livrezi în 1 weekend | Clerk |
| Folosești Supabase și vrei zero cod extra | Supabase Auth |
| Vrei să înțelegi cum funcționează auth la nivel low-level | Lucia |
| Ai 100k+ useri activi | Better-Auth (preț) sau Clerk (Enterprise) |
Ce alegerem noi pe aihost.md
Better-Auth, magic link + OTP. Userii sunt în Postgres-ul nostru. Costul e zero pentru auth, plătim doar serverul. Pentru produsul nostru (PaaS cu plată în MDL), vendor lock-in la un provider străin nu era opțiune.
Nu există "cea mai bună" alegere universală. Există doar "cea mai bună pentru tine acum". Întrebă-te: cât control vrei, cât timp ai, cât plătești.
