Better Auth Plugins Goals Add server plugins to extend auth features. Add client plugins for matching client methods. Apply schema changes when plugins add tables. Quick start Import the plugin from better-auth/plugins and add it to plugins. Run migrations (generate or migrate) when required. Add the client plugin from better-auth/client/plugins. Example: Two-factor authentication import { betterAuth } from "better-auth"; import { twoFactor } from "better-auth/plugins";
export const auth = betterAuth({ plugins: [twoFactor()], });
import { createAuthClient } from "better-auth/client"; import { twoFactorClient } from "better-auth/client/plugins";
export const authClient = createAuthClient({ plugins: [twoFactorClient({ twoFactorPage: "/two-factor" })], });
Migration reminder
Run the CLI when a plugin adds tables:
npx @better-auth/cli generate
npx @better-auth/cli migrate
Guardrails Add server and client plugins together to keep APIs aligned. Keep nextCookies (if used) last in the server plugin list. Review plugin docs for required schema and env variables. References toolchains/platforms/auth/better-auth/better-auth-plugins/references/plugins-index.md