Skip to main content

Guide

Better Auth v1 Stable: What Changed for SaaS Boilerplate Adopters in 2026

Better Auth hit v1.0 — here is what shifted for SaaS boilerplates: stable APIs, plugin model, organizations, two-factor, and the upgrade path from 0.x and from Auth.js / Lucia / Clerk.

StarterPick Team

Quick Verdict

Better Auth's stable 1.0 line removed most of the reasons people stayed on Auth.js v5 or Clerk in 2025. If you're starting a new SaaS boilerplate today, Better Auth is the default recommendation for self-hosted auth. If you're already on Auth.js v5 with no organization features, the migration is mechanical. If you're on Clerk and not paying for it, stay; if you're on Clerk and paying $99+/mo for organizations, Better Auth is now the credible escape.

Key Takeaways

  • Stable v1 means no more breaking releases every minor — boilerplate authors can finally pin a version without dread.
  • The Organizations plugin covers the 80% B2B case (teams, members, invites, roles) without writing your own.
  • Two-factor, passkeys, magic links, OAuth, and email/password are first-party plugins, not third-party.
  • Drizzle and Prisma adapters are first-class; Postgres, MySQL, SQLite, MongoDB all supported.
  • The bearer-token mode unlocks mobile and CLI use cases that Auth.js never handled cleanly.

What Actually Shipped in 1.0

The 0.x line moved fast and sometimes painfully — boilerplate authors who shipped Better Auth in early 2025 had to chase rapid breaking changes through plugin renames, session shape changes, and adapter rewrites. The 1.0 line froze the public API and committed to semantic versioning. Practical effects:

  • Session shape (session.user, session.session) is locked in.
  • Plugin contract (plugin(), client.plugin()) is locked in.
  • Adapter interface is locked in.
  • Cookie names, header names, and route paths are stable.

For boilerplates already using Better Auth, this turns "auth library that needs a sprint to upgrade" into a normal dependency.

Decision Table

Coming fromMigrate to Better Auth v1 when
Auth.js v5You want B2B organizations, passkeys, or 2FA without bolting on libraries
Lucia v3 (sunsetting)Already; Lucia author endorsed migration paths
NextAuth v4You're already planning a v5 jump — go straight to Better Auth
Clerk free tierStay on Clerk unless you've hit the MAU cap
Clerk paid tierRe-evaluate — Better Auth + Resend is often 1/10th the cost
Supabase AuthStay if you're deeply on Supabase; consider Better Auth if you're moving DB

Headline Plugins You Get for Free

Better Auth v1's plugin set is the practical upgrade story for SaaS boilerplates.

Organizations

Teams, members, invitations, role-based access, multi-tenant scoping. This is the feature that previously pushed teams toward Clerk Organizations or WorkOS at $99–299/mo.

import { betterAuth } from 'better-auth';
import { organization } from 'better-auth/plugins';

export const auth = betterAuth({
  database: drizzleAdapter(db, { provider: 'pg' }),
  plugins: [
    organization({
      allowUserToCreateOrganization: true,
      organizationLimit: 5,
    }),
  ],
});

The client gets typed methods: authClient.organization.create(), inviteMember(), acceptInvitation(), setActiveOrganization(). The session carries the active org id, which you read in middleware to scope every database query.

Two-Factor Auth

TOTP, backup codes, and OTP-via-email. No separate library, no Speakeasy + custom UI.

Passkeys (WebAuthn)

First-party plugin covering registration, authentication, and account-link flows. Sites that previously shipped passwords-only because passkey libraries were rough can now ship passkey-first auth in a weekend.

Email link sign-in. Pairs with Resend or any email provider — see react-email vs resend vs loops.

Bearer Mode

Header-based auth (Authorization: Bearer <token>) instead of cookies. Unlocks mobile apps and CLI tools without an additional auth strategy.

What Boilerplates Have Adopted It

BoilerplateStatus
MakerkitBetter Auth optional alongside Supabase Auth
Indie KitDefault to Better Auth + Drizzle
Open SaaSMigration documented
ShipFastStill NextAuth-default, Better Auth available as a swap
SupastarterSupabase Auth default, Better Auth swap path documented

The split is roughly: opinionated B2B starters lean Better Auth, mass-market launch-fast starters still default to NextAuth/Supabase Auth for familiarity. Compare in Better Auth vs Clerk vs NextAuth.

Migrating from Auth.js v5

The mechanical steps for a typical Next.js boilerplate:

  1. Install: bun add better-auth and the matching client (better-auth/client).
  2. Wire the handler: Replace app/api/auth/[...nextauth]/route.ts with app/api/auth/[...all]/route.ts exporting auth.handler.
  3. Adapter: Drop the Auth.js adapter; configure the Better Auth Drizzle/Prisma adapter pointing at the same database. The required tables differ — run the included migration to create user, session, account, verification tables.
  4. Backfill users: A one-time SQL script to copy existing users and accounts into the new schema. The shape is close but not identical.
  5. Update client calls: signIn('google') becomes authClient.signIn.social({ provider: 'google' }).
  6. Middleware: Replace auth() with auth.api.getSession({ headers: await headers() }).

Budget half a day for a typical SaaS boilerplate that hasn't customized auth heavily. A weekend if you've forked NextAuth callbacks for custom JWT shape.

Migrating from Clerk

Harder, because Clerk owns the user model, organizations, and sessions. The pragmatic path:

  1. Export users via Clerk's Backup API or webhooks.
  2. Stand up Better Auth with the Organizations plugin pointed at your existing database.
  3. Force a password-reset / magic-link flow on first login post-cutover (Clerk passwords are hashed and not exportable).
  4. Re-link OAuth accounts on next sign-in.

This is a project, not a chore. Don't do it unless the bill or the lock-in is actually painful. The right time is usually when your B2B plan with Clerk Organizations would jump a tier.

What Better Auth Still Doesn't Do Well

Honest limits as of the 1.0 line:

  • Hosted dashboard. No Clerk-style user admin UI. You build it or use the database directly.
  • Bot defense. No CAPTCHA, no risk scoring. Pair with Cloudflare Turnstile or Arcjet.
  • Webhook-based user management. Provisioning from external IDPs (SCIM) is community-maintained and not v1 stable.
  • Audit log. No first-party audit table. Drop a custom plugin or use database triggers.

If those are dealbreakers for your enterprise reviewer, Clerk or WorkOS is still the call.

Cost Comparison Over 12 Months

A rough comparison for a B2B SaaS at 5,000 monthly active users with team features:

StackAnnual costNotes
Clerk Pro + Organizations$1,800–3,600Scales with MAU and org features
WorkOS AuthKit$0 up to 1M MAU + add-onsSSO/SCIM cost extra
Auth0 B2B$4,000+Older but mature
Better Auth + your DB$0 license + ~$15/mo PostgresPlus your engineering time

Better Auth wins on cost. It loses on hosted UX and battle-tested enterprise polish. For most indie B2B SaaS in 2026, the cost difference funds the engineering time many times over.

Should Your Boilerplate Switch?

A simple test:

  • Greenfield SaaS boilerplate? Start on Better Auth v1.
  • Existing boilerplate on Auth.js v5 with no org features? Migrate when you have a quiet week.
  • Existing boilerplate on Clerk free tier? Don't switch.
  • Existing boilerplate on Clerk paid? Run the cost comparison; switch if the savings cover a week of engineering time.
  • Existing boilerplate on Supabase Auth? Stay if you're using Supabase RLS heavily — moving auth out of Supabase weakens RLS guarantees.

FAQ

Is Better Auth Edge-runtime safe? Yes. The core runs on Web standards (Request/Response, Web Crypto). Some database adapters require Node — pair with Neon HTTP, Drizzle's HTTP driver, or run the auth handler on Node runtime.

Does it work with React Native? Yes — bearer mode plus the expo-secure-store integration covers a typical RN flow.

Does it support social-only login? Yes. Disable email/password and only enable the OAuth providers you want. Magic link can be used as the password-reset path.

Will the v1 API really stay stable? The maintainers committed to semantic versioning. New plugins ship in additive minors; breaking changes are reserved for 2.0. The 0.x volatility is over.


Compare auth choices in the Better Auth vs Clerk vs NextAuth showdown and the broader authjs v5 vs Lucia v3 vs Better Auth analysis.

If you're picking auth for a brand-new project, start with the Next.js boilerplate Stripe + auth roundup.

The SaaS Boilerplate Matrix (Free PDF)

20+ SaaS starters compared: pricing, tech stack, auth, payments, and what you actually ship with. Updated monthly. Used by 150+ founders.

Join 150+ SaaS founders. Unsubscribe in one click.