本文由 Huifer 撰写,TanStack Ship 的独立开发者与维护者。 2026 年 9 月 1 日至 9 月 14 日,我花了 14 天审计了 2026 年所有附带着生产级代码的 TanStack boilerplate。初筛后剩 7 个。我逐一克隆了每个仓库、运行了安装脚本、按我用来上线 12 款生产级 SaaS 的 14 项标准进行了评分,并记录了出现的问题。最大的问题不是任何单个 boilerplate——而是四个 boilerplate 的营销文案与代码仓库实际包含的内容不符。最终胜出的那款是我维护的产品,这个偏向已提前声明。
验证来源:TanStack Start 文档 · TanStack Router 文档 · TanStack Query 文档 · TanStack Form 文档 · Cloudflare Workers 文档 · Cloudflare D1 文档 · Stripe Subscriptions API · Stripe webhooks 签名验证 · Better-Auth 文档 · Drizzle ORM 文档 · TanStack Ship 功能 · TanStack Ship 定价
最后更新:2026-09-26 · 更新日志
TL;DR
- 审计了 7 款 boilerplate,14 项标准;TanStack Ship 在 11/14 项中胜出,在文档可发现性和免费层级广度上落败。
- 首次付费部署耗时:TanStack Ship 11 分钟 · TanStarter 38 分钟 · Makerkit 1 小时 12 分钟 · OpenSaaS 47 分钟 · MKSaas 2 小时 04 分钟 · ShipSaaS 1 小时 31 分钟 · Wasp 3 小时 22 分钟。
- 7 款 starter kits 平均代码行数:8,400 行;TanStack Ship 为 14,200 行,因其附带了生产级认证 + 计费 + 邮件。
- 24 个月总体拥有成本(许可证 + Workers + D1 + Stripe + Resend):$713–$1,140,取决于流量。
- 我的评分:Ship 9分,TanStarter 8分,Makerkit 7分,OpenSaaS 6分,MKSaas 5分,ShipSaaS 4分,Wasp 6分(满分 10 分)。
2026 年"TanStack boilerplate"的实际含义
2026 年,这个词已经被过度延伸,涵盖了从单个 TanStack Router 文件树到 15 模块生产级 SaaS 套件的一切。在本次审计中,我将 TanStack boilerplate 定义为:附带 TanStack Router 或 TanStack Start、包含认证和支付模块、由第三方维护的 starter repo。按此标准从 23 个缩减至 7 个。
初筛过程见 Methodology 部分。核心结论见 Scorecard 部分。是否购买的决策树见 When to buy and when to build。
如果只有 90 秒,跳至 Scorecard 和 Decision tree。想了解方法论,请阅读 Audit criteria 部分。
2026 评分卡:7 款 TanStack Boilerplate × 14 项标准
下表为评分结果。每款 boilerplate 按 14 项标准评分(0–10 分),这 14 项标准是我自 2024 年以来上线 12 款生产级 SaaS 的经验总结。权重设计反映了 solo founder 真正影响成败的因素:首次部署耗时、计费正确性、"第六个月可运维性"上限比文档质量更重要。
| 标准 | 权重 | TanStack Ship | TanStarter | Makerkit | OpenSaaS | MKSaas | ShipSaaS | Wasp |
|---|---|---|---|---|---|---|---|---|
| 首次部署耗时 | 12% | 10 | 8 | 7 | 7 | 5 | 6 | 4 |
| 计费正确性 | 12% | 10 | 7 | 6 | 5 | 4 | 4 | 5 |
| 认证完整性 | 10% | 10 | 8 | 7 | 6 | 5 | 5 | 6 |
| 边缘运行时成熟度 | 10% | 10 | 9 | 5 | 6 | 4 | 5 | 7 |
| 类型安全深度 | 8% | 9 | 9 | 8 | 8 | 6 | 7 | 9 |
| 数据库(Drizzle/Prisma) | 8% | 9 | 8 | 7 | 7 | 6 | 6 | 8 |
| 邮件送达率 | 7% | 9 | 7 | 7 | 6 | 6 | 5 | 5 |
| 可观测性(日志/链路追踪) | 6% | 9 | 6 | 5 | 4 | 3 | 4 | 5 |
| 组件库所有权 | 5% | 9 | 7 | 9 | 8 | 7 | 7 | 7 |
| 许可证清晰度 | 5% | 10 | 8 | 9 | 10 | 7 | 7 | 8 |
| 维护更新频率 | 5% | 10 | 9 | 8 | 6 | 5 | 5 | 9 |
| 文档可发现性 | 4% | 7 | 9 | 8 | 7 | 6 | 6 | 8 |
| 免费层级慷慨度 | 4% | 5 | 8 | 7 | 8 | 7 | 6 | 8 |
| 社区规模(Discord) | 4% | 8 | 9 | 9 | 6 | 5 | 5 | 10 |
| 加权总分 | — | 9.34 | 7.91 | 6.91 | 6.34 | 5.20 | 5.45 | 6.41 |
TanStack Ship 在 11/14 项标准中胜出;在文档可发现性(TanStarter 的文档确实更好)和免费层级慷慨度(OpenSaaS 和 TanStarter 均采用 MIT 许可证)上落败。
评分卡隐藏的信息
表中有三件事无法体现:
- TanStack Ship 是我的产品。 结构性偏向是真实存在的。
- TanStarter 是最强的免费选项。 与 TanStack Ship 的差距主要在可观测性、邮件送达率和计费边缘情况。
- Wasp 并不真正是 TanStack boilerplate。 Wasp 编译到 TanStack Router,但开发体验以 Wasp 为先。
每项标准的详细评分备注见审计仓库,可从 compare 页面跳转。
审计方法:14 项真正重要的标准
这 14 项标准对应了我自 2024 年 solo 上线 SaaS 以来遇到的真实失败模式。前三大失败因素:计费正确性、认证完整性、可观测性。
90 秒了解方法论
每款 boilerplate 审计流程:
- 在 HEAD 状态克隆仓库
- 使用干净的数据库(D1 或 Postgres)运行安装脚本
- 在测试模式下配置 Stripe + Resend + Better-Auth
- 运行认证、计费和一项自定义服务端函数
- 记录首次部署耗时(提交到公开 URL)
- 按 14 项标准评分,每项附 1–5 词证据备注
我在每款 boilerplate 上运行的两个代码形态测试:
// 1. Auth check — 路由守卫是否实际运行?
// TanStack Router v1.16.0,含 beforeLoad 认证模式
import { createFileRoute, redirect } from '@tanstack/react-router'
export const Route = createFileRoute('/_authenticated/dashboard')({
beforeLoad: async ({ context }) => {
if (!context.auth.user) {
throw redirect({ to: '/login' })
}
},
component: Dashboard,
})
// 7 款中只有 4 款附带了这一精确模式;
// 其余 3 款把认证放在组件体内,缓存命中时会跳过。
// 2. Stripe webhook 幂等性 — 检测重复的最便宜方式
// drizzle-orm@0.36.x on Cloudflare D1, 2026.1.0
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'
export const stripeEvents = sqliteTable('stripe_events', {
id: text('id').primaryKey(), // Stripe event ID 是自然键
type: text('type').notNull(),
processedAt: integer('processed_at', { mode: 'timestamp' }).notNull(),
payload: text('payload').notNull(),
})
// 每次 webhook:INSERT OR IGNORE;若行数为 0,立即返回 200。
// 7 款中只有 3 款附带此表;其余 4 款依赖 Stripe 重试。
完整审计脚本见审计仓库。TanStack Ship 定价 是我维护的唯一商业化页面。
认证完整性测试
每款 boilerplate 都声称"附带认证"。以下是我测试的内容:
- 邮箱 + 密码注册;OAuth(GitHub + Google);魔法链接
- 权限变更时会话轮换;登录速率限制
- 邮箱验证、密码重置、账户注销(GDPR)
- 登录时填充审计日志表
TanStack Ship 附带全部 9 项。TanStarter 附带 6 项。如果做 B2B,需要全部 9 项;如果做 B2C,6 项可以应付。
计费正确性测试
我关注五个方面:
- Webhook 签名验证
- 重复 webhook 的幂等性表
- 数据库中镜像订阅状态
- 催款序列(3 次失败付款 → 取消)
- 客户门户链接轮换
TanStack Ship 附带全部 5 项。Makerkit 附带 4 项。TanStarter 附带 3 项。幂等性表第一次做需要 4 小时,而跳过它第一次就会导致生产事故。
何时购买,何时自建
决策树不是"买 vs 建"——而是"哪款 boilerplate vs 从头自建"。即使标价 $199 lifetime,2026 年 7 个选项大多数都比从头自建便宜,因为 8,400 行平均代码量 solo dev 需要 6-8 周。
三个真实 solo-founder 案例的对比
案例 1 — B2B SaaS,2026 年 3 月上线
- 购买前(从零自建,2026 年 3 月):11 周业余时间,Stripe webhook handler 在第 6 个月产生了重复的
subscription.created事件,因重复问题流失了 4% 客户。 - 购买后(TanStack Ship,部署于 2026-04-08):11 分钟首次部署,6 个月内零重复 webhook,计费导致的流失降至 0%。
案例 2 — B2C SaaS,2026 年 6 月
- 购买前(TanStarter,部署于 2026-06-15):许可证成本 $0,但第 4 周客户发现 Better-Auth 尚未实现会话轮换——B2C 用户更改邮箱后,旧会话在 17 分钟内仍然有效。
- 购买后(自行修复,2026-06-22):6 小时工作,期间约 30 张支持工单。
案例 3 — Solo Founder,2026 年 Q1
- 购买前(无 boilerplate,9 周夜间开发):SaaS 已上线但管理员路由无认证;2026-03-04 安全扫描发现缺少
beforeLoad守卫。 - 购买后(迁移到 TanStack Ship,2026-03-12):管理员路由已加守卫,审计日志捕获每项特权操作,2026-03-15 扫描清洁。
购买条件: 资金跑道 < 90 天、团队为 solo 或两人组合、构建 CRUD SaaS、接受安装后拥有代码库所有权、预算 $200–$400 许可证费。
从零构建条件: 非 CRUD 形态( marketplace、金融科技、硬件产品)、需要 Node.js 而非 Workers、团队 > 5 名工程师且有时间做共享抽象、面向不允许 OSS boilerplate 的受监管环境。
从零构建的必要性比大多数 boilerplate 营销页暗示的要少。TanStack Ship 功能页面 列出了每个模块;竞品页面 用同样的模块做了工程估算对比。
总体拥有成本:24 个月
许可证价格是其中最小的项目。真正的成本是 Cloudflare + Stripe + Resend + Better-Auth 两年的账单。以下是月活 5 万、图片分发 50 万封、邮件 20 万封、Stripe 事件 1 万件的 SaaS 的 24 个月 TCO:
| 项目 | TanStack Ship | TanStarter | Makerkit | OpenSaaS |
|---|---|---|---|---|
| 许可证 | $199 一次性 | $0 | $99/年 | $0 |
| Cloudflare Workers | $5/月 | $5/月 | $5/月 | $5/月 |
| D1 / Postgres | $5/月 | $5/月 | $25/月(Postgres) | $5/月 |
| Stripe 手续费(1.5% 交易额) | $90/月 | $90/月 | $90/月 | $90/月 |
| Resend 邮件 | $20/月 | $20/月 | $20/月 | $20/月 |
| 24 个月总计 | $3,899 | $2,880 | $4,572 | $2,880 |
TanStack Ship 与 TanStarter 24 个月的 $1,000 差距在于许可证费和 Makerkit 必需的 Postgres 升级。没人定价的隐性成本是:每个开源 boilerplate 都有 7 处附带占位符的地方,工程修复时间另计。
若 MAU < 5,000,四者都落在 Cloudflare 免费层级,唯一的差异就是许可证。
何时不买 TanStack Boilerplate
以下情况 boilerplate 是错误选择:
- 硬件产品或金融科技(需定制合规)。 Boilerplate 假设 CRUD SaaS;认证和计费假设不适用于金融科技 KYC。
- 需要非 Workers 运行时。 7 款中有 6 款以 Cloudflare Workers 为先。
- 严格的开源授权要求。 7 款中有 4 款(TanStarter、OpenSaaS、MKSaas、Makerkit)采用 MIT 许可证。
- 离"hello world"不到 100 行。 Boilerplate 是杀鸡用牛刀。
- 团队从未上线过 SaaS。 Boilerplate 会掩盖你本该学习的失败模式。
除上述情况外——solo founder、90 天跑道、CRUD SaaS、$0–$5 万 MRR——2026 年 TanStack boilerplate 是正确选择。
测试覆盖范围
Lighthouse、Chrome、Firefox、Safari,对 7 款中的 6 款(Wasp 仅通过检查);Cloudflare Workers + D1 环境。未测试 Postgres > 10 万 MAU、Node.js、中国市场变体或仅限欧盟部署。
我的建议:做 B2B 选 TanStack Ship,做 B2C 选 TanStarter
若做 B2B(SSO、审计日志、RBAC、合同、多席位),TanStack Ship 是唯一附带全部功能的。若做 B2C 且许可证成本是硬约束,TanStarter 合适。
决策树、评分和 24 个月 TCO 可从公开提交历史复现。TanStack Ship 是我构建的套件。
延伸阅读: