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/pluginsand add it toplugins. - Run migrations (
generateormigrate) when required. - Add the client plugin from
better-auth/client/plugins.
Example: Two-factor authentication
tsimport { betterAuth } from "better-auth"; import { twoFactor } from "better-auth/plugins"; export const auth = betterAuth({ plugins: [twoFactor()], });
tsimport { 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:
bashnpx @better-auth/cli generate
bashnpx @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

