A collection of modular plugins extending Better Auth with specialized authentication features for modern TypeScript applications. Each plugin is designed to be lightweight, type-safe, and production-ready.
better-auth-feature-flags
- Feature flags and gradual roll-outs with user targeting, A/B testing, and admin controls
๐ง The following plugins are currently under development:
- Security & Compliance:
abuse-detection
,fraud-detection
,compliance
,backup-codes
- User Management:
impersonation
,onboarding
,session-management
,subscription
- Integrations:
analytics
,audit-log
,connect
,storage
,webhooks
,notifications
- Access Control:
rate-limit
,consent
- Development Tools:
mcp
Install Better Auth and the plugins you need:
# Using Bun (recommended)
bun add better-auth better-call better-auth-feature-flags
# Using npm
npm install better-auth better-call better-auth-feature-flags
# Using pnpm
pnpm add better-auth better-call better-auth-feature-flags
better-auth
andbetter-call
are peer dependencies.better-call
provides the API/middleware foundation used by Better Auth and this plugin. Better Auth depends on it and re-exports related types.- Installing both ensures version alignment and avoids resolution issues with strict package managers (e.g., pnpm).
import { betterAuth } from "better-auth";
import { featureFlags } from "better-auth-feature-flags";
export const auth = betterAuth({
database: {
provider: "postgresql",
url: process.env.DATABASE_URL,
},
plugins: [
// Feature flags and access control
featureFlags({
// Optional static flags (server defaults)
flags: {
"premium-features": {
default: false,
enabled: false,
},
"beta-ui": {
default: false,
enabled: false,
},
},
}),
],
});
import { createAuthClient } from "better-auth/client";
import { featureFlagsClient } from "better-auth-feature-flags/client";
const authClient = createAuthClient({
plugins: [featureFlagsClient()],
});
// Check feature flags (simple boolean checks)
const hasPremiumFeatures =
await authClient.featureFlags.isEnabled("premium-features");
const canUseBetaUI = await authClient.featureFlags.isEnabled("beta-ui");
// Evaluate multiple flags efficiently
const flags = await authClient.featureFlags.evaluateMany([
"premium-features",
"beta-ui",
"new-dashboard",
]);
// Get all flags for current user
const allFlags = await authClient.featureFlags.bootstrap();
// Track flag usage for analytics
await authClient.featureFlags.track("premium-features", "viewed");
// Admin operations (requires proper permissions)
const adminFlags = await authClient.featureFlags.admin.flags.list();
await authClient.featureFlags.admin.flags.create({
key: "new-feature",
name: "New Feature",
type: "boolean",
defaultValue: false,
});
if (hasPremiumFeatures) {
// Show premium features
}
This monorepo uses Bun's built-in workspace support for managing all plugins.
- Bun >= 1.0.0
- Node.js >= 20.0.0 (for compatibility)
- PostgreSQL or compatible database
# Clone the repository
git clone https://github.com/kriasoft/better-auth.git
cd better-auth-plugins
# Install dependencies
bun install
# Migrate the database
bun run db:push
# Build all packages
bun run build
# Run development mode
bun run dev
# Type check all packages
bun run typecheck
bun run db:studio # Open Drizzle Studio (database GUI)
bun run db:generate # Generate migrations from schema changes
bun run db:push # Push schema changes (development)
bun run db:migrate # Run migrations (production)
better-auth-plugins/
โโโ plugins/ # 18 standalone plugins
โ โโโ abuse-detection/ โโโ analytics/ โโโ audit-log/
โ โโโ backup-codes/ โโโ compliance/ โโโ connect/
โ โโโ consent/ โโโ feature-flags/ โโโ fraud-detection/
โ โโโ impersonation/ โโโ mcp/ โโโ notifications/
โ โโโ onboarding/ โโโ rate-limit/ โโโ session-management/
โ โโโ storage/ โโโ subscription/ โโโ webhooks/
โโโ apps/playground/ # Dev environment
โโโ docs/ # Documentation site
โโโ test/ # Test suites
Plugin structure: src/{index,client,plugin,schema,types}.ts โ tsup โ dist/
This project includes reference implementations as Git submodules in the vendor/
directory. See vendor/README.md for details and license information.
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Run tests (
bun test
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to your branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- ๐ฎ Discord: Join our community
- ๐ฌ Discussions: GitHub Discussions
- ๐ Issues: GitHub Issues
- ๐ Sponsor: GitHub Sponsors
Open source and free to use! This project is licensed under the MIT License - feel free to use it in your personal and commercial projects.