终于受够了 Clerk 的账单
如果你这两年做过 Web 应用或者独立开发,你大概率用过 Clerk。
必须承认,刚接触 Clerk 时确实觉得很爽:文档极其漂亮,React 组件几行代码粘进去,登录注册框、GitHub / Google OAuth、验证码全齐,10 分钟就能跑起来。
但爽过之后,只要你的小产品真的一点点有了起色,噩梦就开始了:
- 按 MAU(月活跃用户)收钱的无底洞:免费额度一过,每个月固定按活跃用户人头计费。对于很多轻量工具、低客单价的小 SaaS,一个只登录过一次查了条数据的用户,也要算进你的成本里;
- 数据被锁死在别人家:用户表在 Clerk 的云端数据库里。想做点复杂的本地连表查询、做个冷热数据分离、或者按自己的业务逻辑做权限扩展,处处受制于它的 Webhook 和 API 延迟;
- 国内与特定网络下的加载抽风:它的登录组件和 JS 依赖外部 CDN,网络稍微抖动一下,页面上的登录框直接白屏打不开。
直到最近,开源圈杀出了一个叫 Better Auth 的项目,几乎在一夜之间席卷了独立开发者社区。
我也把手头新项目的鉴权模块从头到尾换成了它。今天聊聊换完之后的真实感受,以及这两个方案到底该怎么选。
什么是 Better Auth?
一句话讲清楚:它是 NextAuth(Auth.js)死掉、Clerk 太贵之后的终极解药。
它是一个纯粹用 TypeScript 编写、完全开源且**自托管(Self-Hosted)**的现代鉴权框架。
它的核心理念极其契合一人公司:
- 你的数据,留在你的数据库里:支持直接连接 SQLite、PostgreSQL、MySQL。用户信息直接存在你自己的业务表里,关联查询零网络开销;
- 全栈框架无关:原生兼容 Next.js、Astro、Nuxt、SvelteKit、甚至纯 Node/Hono 后端;
- 插件化开箱即用:两步验证(2FA)、组织多租户(Organizations)、Magic Link、Passkey 全部以官方插件形式提供,不需要像以前写 NextAuth 那样人肉啃几百行类型报错。
实操:极简配置体验
初始化一个完整的 GitHub + 邮箱登录有多简单?看下我的真实后端配置:
import { betterAuth } from "better-auth";
import Database from "better-sqlite3";
export const auth = betterAuth({
database: new Database("./app.db"),
emailAndPassword: {
enabled: true,
},
socialProviders: {
github: {
clientId: process.env.GITHUB_CLIENT_ID!,
clientSecret: process.env.GITHUB_CLIENT_SECRET!,
},
},
});
前端调用的体验也极度丝滑:
import { createAuthClient } from "better-auth/client";
export const authClient = createAuthClient();
// 登录调用
await authClient.signIn.social({
provider: "github",
});
TypeScript 类型推导一气呵成,完全不需要去外部第三方平台配置复杂的 Webhook 密钥、也不用担心第三方平台宕机导致我的用户全进不来。
核心维度硬碰硬对比
| 评估维度 | Clerk (SaaS 托管) | Better Auth (自托管开源) |
|---|---|---|
| 费用成本 | 贵。超标后按 MAU 持续收费,账单刺客 | ¥0 免费。完全开源,跑在自己已有数据库上 |
| 数据掌控度 | 数据在 Clerk 云端,跨库连表极其别扭 | 100% 绝对掌控。用户表就在自己的库里 |
| 网络依赖 | 强依赖外网及 Clerk 全球节点连通率 | 随你自己的服务部署,毫无额外外部依赖 |
| 多租户/高级功能 | Pro 版才开放高级多租户或功能受限 | 官方插件开箱即用,组织权限完全自定义 |
| 上手速度 | 极快(直接复制官方 UI 组件) | 很快(需自己写一两套简单的表单 UI) |
| 适合场景 | 融了资的大中型团队、不想碰数据库的纯前端 | 独立开发者、一人公司、注重成本与数据主权的项目 |
我的建议
别再给第三方托管鉴权平台交冤枉钱了。
在 2026 年,对于任何一个精打细算的独立开发者:
- 如果你手头做的是一个长期盈利的严肃项目,坚定切到 Better Auth。你的数据库本来就在那里,让用户表老老实实呆在自己的库里,不仅省下一大笔月租,而且随时备份、随时迁移;
- 只有一种情况值得用 Clerk:给客户做交付型外包,客户愿意付账单,且你一分钟都不想多花在写表单 UI 上。
把核心资产抓在自己手里,每省下一笔按人头扣费的 SaaS 月租,你离独立养活自己就更近了一步。