Preskočiť na obsah

Better Auth vs Clerk: prečo sme si vybrali Better Auth

Pre CTO a vývojárovRozhodnutia CTO · Aktualizované

Filip PapranecZakladateľ, Digitaliko

Better Auth vs Clerk. Ilustrácia: vľavo tabuľka používateľov vo vašej vlastnej databáze, vpravo hostovaný adresár používateľov za API a otázka, kde žijú vaše session.Better Auth vs Clerk. Ilustrácia: vľavo tabuľka používateľov vo vašej vlastnej databáze, vpravo hostovaný adresár používateľov za API a otázka, kde žijú vaše session.

Better Auth vs Clerk sa rozhoduje jednou otázkou: kde žijú vaši používatelia a session? Clerk ich drží vo svojej hostovanej službe. Better Auth ich zapisuje do vašej vlastnej databázy ako obyčajné tabuľky vedľa zvyšku aplikácie.

Z NextAuth sme v každej novej aplikácii prešli na Better Auth a Clerk sme si nevybrali. Hneď úprimne: Clerk sme v produkcii neprevádzkovali. Toto nie je benchmark. Je to vysvetlenie, prečo sme ho nezvolili, s konfiguráciou, ktorá u nás naozaj beží.

Aký je rozdiel medzi Better Auth a Clerkom?

Better Auth je knižnica. Sama sa opisuje ako „a framework-agnostic, universal authentication and authorization framework for TypeScript“ (dokumentácia Better Auth, stav k 24. 10. 2026). Má licenciu MIT. Clerk je hostovaná služba s hotovými prihlasovacími komponentmi a správou používateľov.

Better AuthClerk
Čo to jeKnižnica pre TypeScript vo vašom repozitáriHostovaná služba s UI komponentmi
Kde sú používatelia a sessionTabuľky vo vašej databázeInfraštruktúra Clerku
CenaMIT, platíte vlastnú databázu a e-maily0 USD do 50 000 MRU na aplikáciu, potom platené (cenník, stav k 24. 10. 2026)
Prihlasovacie UIPostavíte si hoHotové komponenty
Bezpečnostné opravyAktualizujete balík a vydáte verziuRieši Clerk
Overovacie e-maily a magic linkyVaša e-mailová službaPosiela Clerk
OdchodNiet od čoho odchádzať, schéma je vašaExport používateľov s hashmi hesiel, potom prepojiť UI a kontroly session

Rozhodli za nás druhý a tretí riadok. Kód, dáta aj infraštruktúra patria klientovi od prvého dňa. Tabuľka používateľov na cudzích serveroch, platená za každého používateľa, do toho nesedí.

Prečo sme z NextAuth prešli na Better Auth?

Staršie klientske aplikácie bežia na NextAuth v4 s Prisma adaptérom. Fungujú a necháme ich tak. Prihlásenie, ktoré funguje, neprepisujeme kvôli článku.

Pri nových aplikáciách sa rozhodnutie v septembri 2025 zjednodušilo. Auth.js, projekt kedysi známy ako NextAuth.js, prešiel pod tím Better Auth. Ich oznámenie to hovorí priamo:

We strongly recommend new projects to start with Better Auth unless there are some very specific feature gaps.

Bereket Engida
Better Auth, Auth.js is now part of Better Auth (22. 9. 2025)

Medzerou, ktorú spomínajú, sú bezstavové session bez databázy. Databázu chceme tak či tak, takže sa nás netýka.

Ako vyzerá Better Auth v reálnej aplikácii?

Toto je auth balík z našej štartovacej šablóny, mierne skrátený. TanStack Start na Cloudflare Workers, Drizzle na D1:

import { betterAuth } from 'better-auth'
import { drizzleAdapter } from 'better-auth/adapters/drizzle'
import { tanstackStartCookies } from 'better-auth/tanstack-start'
import { checkout, polar, portal } from '@polar-sh/better-auth'

export function createAuth() {
  const db = createDb()
  const plugins = [tanstackStartCookies()]

  // Platby iba vtedy, keď má aplikácia platobný token.
  if (env.POLAR_ACCESS_TOKEN) {
    plugins.push(polar({ client: polarClient, createCustomerOnSignUp: true, use: [checkout({ /* produkty */ }), portal()] }))
  }

  return betterAuth({
    database: drizzleAdapter(db, { provider: 'sqlite', schema }),
    trustedOrigins: [env.CORS_ORIGIN],
    emailAndPassword: { enabled: true },
    socialProviders: { /* Google a GitHub, iba keď sú nastavené kľúče */ },
    secret: env.BETTER_AUTH_SECRET,
    baseURL: env.BETTER_AUTH_URL,
    plugins,
  })
}

Aj schéma je naša. Používatelia a session sú Drizzle tabuľky ako každé iné:

const user = sqliteTable('user', {
  id: text('id').primaryKey(),
  name: text('name').notNull(),
  email: text('email').notNull().unique(),
  emailVerified: integer('email_verified', { mode: 'boolean' }).default(false).notNull(),
})

const session = sqliteTable('session', {
  id: text('id').primaryKey(),
  token: text('token').notNull().unique(),
  expiresAt: integer('expires_at', { mode: 'timestamp_ms' }).notNull(),
  userId: text('user_id').notNull().references(() => user.id, { onDelete: 'cascade' }),
})
Better Auth vs Clerk ako dve okná. Vľavo Better Auth: tabuľky user, session a account sú vo vašej vlastnej databáze vedľa tabuliek aplikácie a pluginy ako passkeys, dvojfaktorové prihlásenie a organizácie bežia ako kód vo vašom repozitári. Vpravo Clerk: hostovaný adresár používateľov s hotovým prihlasovacím UI, účtovaný za MRU (monthly retained user), aplikácia s ním hovorí cez API.Better Auth vs Clerk ako dve okná. Vľavo Better Auth: tabuľky user, session a account sú vo vašej vlastnej databáze vedľa tabuliek aplikácie a pluginy ako passkeys, dvojfaktorové prihlásenie a organizácie bežia ako kód vo vašom repozitári. Vpravo Clerk: hostovaný adresár používateľov s hotovým prihlasovacím UI, účtovaný za MRU (monthly retained user), aplikácia s ním hovorí cez API.

V tom je praktický rozdiel. Záznam, ktorý vytvoril používateľ, je cudzí kľúč na user.id v tej istej databáze. Prehľad „kto čo urobil“ je jeden SQL join, nie volanie externého API a synchronizačný job.

Ako sa z prihlásenia stane váš vlastný kód?

Ukazuje to naša interná aplikácia na riadenie práce. Zaregistrovať sa smie len krátky zoznam ľudí a iba cez GitHub. Žiadne nastavenie u dodávateľa to nerobí. Je to pár riadkov v databázovom hooku:

return betterAuth({
  database: drizzleAdapter(db, { provider: 'sqlite', schema }),
  emailAndPassword: { enabled: false },
  databaseHooks: {
    user: {
      create: {
        before: async (user) => {
          if (allowedEmails.length > 0 && !allowedEmails.includes(user.email.toLowerCase())) return false
        },
      },
    },
  },
  socialProviders: { github: { clientId, clientSecret, scope: ['repo', 'read:user', 'user:email'] } },
})

Čo sa stane pri registrácii:

  1. Prihlásenie cez GitHub

    Človek sa prihlási cez GitHub. Aplikácia žiada prístup k repozitárom, lebo číta issues a pull requesty.

  2. Hook beží pred zápisom

    databaseHooks.user.create.before dostane nového používateľa skôr, než sa zapíše.

  3. Nie je na zozname: žiadny používateľ

    Návrat false zastaví zápis. Nevznikne riadok používateľa ani session.

  4. Je na zozname: riadok session

    Používateľ aj session skončia vo vlastnej D1 databáze aplikácie, čitateľné akýmkoľvek SQL klientom.

Zoznam povolených e-mailov je premenná prostredia. Jeho zmena je deploy, ktorý prejde review ako každá iná zmena. Pri hostovanej službe by to isté pravidlo žilo v dashboarde alebo vo webhooku mimo repozitára.

Ktoré pluginy Better Auth máme v produkcii?

Každý plugin je kód v repozitári, takže zoznam sa ľahko overí:

  • Naša štartovacia šablóna: tanstackStartCookies a platobný plugin Polar (checkout a zákaznícky portál, zákazník vznikne pri registrácii). Polar sa pridá, iba keď existuje token.
  • Webová aplikácia pre klienta: Better Auth vnútri Payload CMS s pluginmi admin, organization, twoFactor, emailOTP, magicLink, multiSession a passkey.
  • Klient s online marketplace: samostatná auth služba na MongoDB s magicLink a oidcProvider. Ostatné aplikácie marketplace sa cez ňu prihlasujú ako cez akéhokoľvek OpenID Connect poskytovateľa.

Tri databázy, tri nastavenia, jedna knižnica. To si ceníme najviac: tá istá knižnica sedí na SQLite na edge, na Postgrese za CMS aj na MongoDB v samostatnej službe.

Kedy je lepšia voľba Clerk?

Clerk dáva zmysel, keď chcete prihlásenie hotové tento týždeň a nikto v tíme nemá vlastniť kód okolo autentifikácie. Hotové komponenty ušetria obrazovky. E-maily posiela a službu opravuje Clerk. Na prototyp je bezplatný plán štedrý: 50 000 MRU (monthly retained users) na aplikáciu, Pro za 25 USD mesačne a 0,02 USD za používateľa od 50 001 do 100 000 (cenník Clerku, stav k 24. 10. 2026).

Lock-in je menší, než sa zdá. Admin si v Clerku vyexportuje používateľov aj s hashmi hesiel do CSV (dokumentácia Clerku, stav k 24. 10. 2026). Dáta nie sú rukojemníkom. Prácu dá všetko, čo je na ne napojené: prihlasovacie UI, kontroly session na serveri a údaje, ktoré ste si skopírovali do vlastných tabuliek.

Ešte jeden fakt na zváženie. Better Auth sa 7. júla 2026 pridal k Vercelu. Ich príspevok hovorí: „Vercel shares our commitment to keeping auth open source, framework and platform agnostic.“ (blog Better Auth). Licencia MIT ostáva taká, aká je. Berieme to na vedomie, ako pri každej zmene vlastníka závislosti, na ktorej staviame.

Čo na seba beriete, keď prihlásenie vlastníte?

Vlastné prihlásenie nie je bez práce. Prácu len presunie na váš tím. Skôr než zvolíte Better Auth, prejdite si tento zoznam:

Posledný bod je najlacnejšia poistka. Naša šablóna na to púšťa Playwright testy: prihlasovací formulár sa vykreslí, registrácia funguje a dashboard bez session presmeruje na login.

Ako nad takýmto prihlásením sprístupňujeme dáta aplikácie AI agentom, rozoberáme v článku Ako postaviť MCP server a kedy to nerobiť.

Chcete prihlásenie, ktoré ostane vo vašej databáze?

Webové aplikácie, kde používatelia, session aj oprávnenia žijú vo vlastnej databáze klienta, staviame v službe vývoj webových aplikácií na mieru. Kód, dáta aj infraštruktúra patria klientovi od prvého dňa. AI dnes píše všetok náš kód a za výsledok ručí senior. Od roku 2023 sme dodali 15+ produkčných projektov.

Ozveme sa do dvoch pracovných dní a spolu vyberieme, čo vyriešime ako prvé.

Ak sa chcete najprv porozprávať, dohodnite si meeting na 15 minút s Filipom.

Kde dnes žijú vaši používatelia a dostanete sa k nim jedným SQL joinom?

V skratke

  • Better Auth ukladá používateľov a session do vašej databázy. Clerk ich drží vo svojej hostovanej službe.
  • Pri nových aplikáciách sme z NextAuth prešli na Better Auth, fungujúce NextAuth aplikácie necháme tak.
  • S Better Auth je pravidlo ako zoznam povolených e-mailov pár riadkov vo vašom repozitári.
  • Clerk sedí, keď nikto nemá vlastniť kód prihlásenia. Používateľov neskôr vyexportujete, ale prepojenie dá prácu.

Časté otázky

Aký je rozdiel medzi Better Auth a Clerkom?

Better Auth je open source knižnica pre TypeScript, ktorá ukladá používateľov a session do vašej databázy. Clerk je hostovaná služba, ktorá ich ukladá za vás a dá vám hotové prihlasovacie UI. Vyberáte medzi kontrolou bez platby za používateľa a menším množstvom vlastného kódu.

Koľko stojí Better Auth?

Better Auth má licenciu MIT, za knižnicu neplatíte. Platíte to, na čom beží: databázu, hosting a e-mailovú službu, ktorá posiela overovacie odkazy a magic linky.

Koľko stojí Clerk?

K 24. 10. 2026 stojí plán Hobby 0 USD s limitom 50 000 MRU (monthly retained users) na aplikáciu, Pro stojí 25 USD mesačne (20 USD pri ročnej platbe) a používatelia 50 001 až 100 000 po 0,02 USD mesačne. Aktuálne čísla sú na clerk.com/pricing.

Oplatí sa prejsť z NextAuth na Better Auth?

Pri novom projekte áno: Auth.js dnes spravuje tím Better Auth a pre novú prácu odporúča Better Auth. Fungujúcu aplikáciu na NextAuth len kvôli tomu neprepisujeme. Prechádzame, keď aplikácia potrebuje funkciu, ktorú NextAuth nemá.

Dá sa od Clerku neskôr odísť?

Áno. Admin si v Clerku vyexportuje používateľov aj s hashmi hesiel do CSV. Prácu dá zvyšok: prihlasovacie UI, kontroly session na serveri a údaje o používateľoch, ktoré ste si skopírovali do vlastných tabuliek.

Opýtajte sa AI na tento článok

AI pri odpovedi využije aj naše ďalšie články a skúsenosti z reálnych projektov.

ChatGPTClaudePerplexity
Engineering

Ostatné články

Rozhodnutia CTO

Claude Code pricing: cena pre tím, API a agentov

Claude Code pricing podľa verejného cenníka Anthropicu (október 2026): Pro, Max, miesta v Team pláne, Enterprise a API tokeny. Čo sedí vývojárom, na čom beží AI agent a reviewer v CI a aké poistky zastavia agenta na pozadí, aby neminul rozpočet.

Rozhodnutia CTO

Alternatívy k Vercelu: prečo máme Vercel aj Cloudflare

Vercel sme nenahradili, prácu sme rozdelili. Next.js weby ostávajú na Verceli, nové aplikácie bežia na Cloudflare Workers a D1, deklarované v TypeScripte cez Alchemy. Ceny so zdrojmi, naša konfigurácia a blokovaný deploy od AI agenta.

Rozhodnutia CTO

Drizzle vs Prisma: prečo v produkcii používame obe ORM

Drizzle vs Prisma z dvoch ORM, ktoré máme v produkcii: Prisma na Postgres v starších klientskych aplikáciách, Drizzle na Cloudflare D1 vo všetkom novom. Skutočná konfigurácia, cesta migrácie, čo zmenila Prisma 7 a kedy by sme nemenili.

Čas prestať plánovať a začať riešiť.

Kontakt

  • Digitaliko s.r.o.
    Šípková 377/17
    958 03 Malé Uherce, Slovensko
  • Ozvite sa nám
    info@digitaliko.com
    +421 950 595 506
    WhatsApp