本文由 Huifer 撰写,TanStack Ship 的独立开发者与维护者。 在过去 18 个月里,我用同一支双人团队搭建了两次 SaaS——一次用自定义技术栈,一次用 TanStack Ship。本文从 Linear 时间戳中提取了针对同一五功能规格(auth + Stripe + admin + blog + i18n)的 312 小时自建工时,并与 14 天套件部署进行对比。矩阵与四种自建胜出的情况均来自这次实测,在 TanStack Ship 推荐之前先行命名。
经过验证的来源: TanStack Start 文档 · Cloudflare Workers 定价 · Stripe Subscriptions 概述 · Better Auth 文档 · Vercel 定价 · Wasp Open-SaaS GitHub · GitHub 定价 · MDN Web 文档:HTTP 缓存
最后更新:2026-05-15 · 更新日志
TL;DR: 双人团队计时投入 312 小时从零构建含五项功能的 SaaS(auth、Stripe 订阅、admin、blog、i18n)。同规格的 $299 套件在 14 天内交付上线。决策不是偏好问题,而是由 MRR 驱动的。以下是六象限决策矩阵;四种情况下自定义构建仍胜出,在 TanStack Ship 推荐之前先行命名。盈亏平衡点是上线 30 天内达到 $1k MRR。低于该水平,自建或免费套件胜出;高于 $5k MRR,购买套件永远合算。
SaaS Starter Kit vs Custom Build: 312 小时决策矩阵
为什么 2026 年 SaaS 套件 vs 自建决策变得至关重要
2026 年的 SaaS 市场提供的套件数量超过以往任何时候——TanStack Ship、ShipFast、Makerkit、Turbostarter、Wasp、Open-SaaS,以及大约二十多个其他选项。与此同时,自建工具链也在进化:Drizzle ORM、TanStack Start Server Functions、Better Auth 和 Cloudflare Workers 让手搓 SaaS 比 2024 年更快。
SaaS 套件 vs 自建的问题不再是"哪个更快",而是"哪个符合你的预测"。答案取决于团队 MRR 增长曲线、数据模型的垂直深度,以及未来 18 个月的重心是交付功能还是学习技术栈。
本文提供决策矩阵、四种自建仍胜出的情况,以及回报计算器。
312 小时自定义构建,拆解
312 小时这个数字来自双人团队按照评估 TanStack Ship 时使用的同一五功能规格进行的计时。数据来自 Linear 项目,共 84 个带时间戳的子任务和两个 GitHub 仓库(一个自建,一个基于套件),均于 2026 年 5 月部署。
| 模块 | 小时数(自建) | 小时数(TanStack Ship) | 时间消耗在哪里 |
|---|---|---|---|
| Auth + 会话轮换 | 42 | 6 | Better Auth 边缘缓存 + 每租户作用域 |
| Stripe 订阅 | 84 | 14 | Webhook 幂等性 + 坏账处理 + 重试逻辑 |
| Admin 仪表盘 + RBAC | 68 | 10 | 角色层级 + 每表作用域查询 |
| Blog CMS + i18n | 52 | 8 | MDX + 3 种语言 + Shiki 语法高亮 |
| 客户门户 + 坏账处理 | 28 | 4 | Stripe Smart Retries + 坏账处理文案 |
| 邮件队列 + 序列邮件 | 38 | 8 | Cloudflare Queues + Resend + 序列邮件模板 |
| 总计时 | 312 | 50 |
TanStack Ship 的 50 小时是 git clone 之后的工程时间,不包含与产品数据模型的对接(这部分额外增加了 18 小时)。自定义构建则完全包含在内——每个辅助函数、每个测试、每次合并冲突都计算在内。
Stripe 订阅这一行是最大的时间消耗。自定义构建用了 84 小时;套件用了 14 小时。70 小时的差距几乎全部来自 webhook 幂等性 + 坏账处理的组合。Stripe webhook 文档 写的是"至少一次"投递。这一句话的实现成本,对一对二的工程师来说大约是两周的工作量。
14 天套件部署,拆解
在套件测试中,同一双人团队克隆了 TanStack Ship,并针对同一产品领域运行了同一五功能规格。
| 天数 | 活动 | 小时数 |
|---|---|---|
| 第 1 天 | 克隆、配置 Cloudflare 账号、部署 hello world | 4 |
| 第 2-3 天 | Stripe + webhook 端点 + 客户门户 | 6 |
| 第 4-5 天 | Admin RBAC + 作用域查询 | 8 |
| 第 6-7 天 | Blog CMS + i18n 配置(en/zh/de) | 6 |
| 第 8-9 天 | 通过 Cloudflare Queues + Resend 发送序列邮件 | 6 |
| 第 10-12 天 | 产品特定数据模型 + 迁移 | 18 |
| 第 13-14 天 | QA + 负载测试 + 生产部署 | 8 |
| 合计 | 56 |
第 10-12 天这一行就是集成税。每个套件都内置了假设——表名、Schema 模式、部署形态。当你的领域符合这些假设时,50 小时即可交付;当不符合时,集成税可能超过节省的时间。
六象限决策矩阵
下方的矩阵覆盖了双人团队六种常见情境。对于每一种,答案都会给出——包括四种自定义构建仍胜出的情况。
| # | 情境 | 建议 | 原因 |
|---|---|---|---|
| 1 | 60 天内预测 MRR 达到 $5k+ | 购买付费套件 | 按 $50/小时综合费率,一周内回本 |
| 2 | 90 天内预测 MRR 达到 $1k-$5k | 购买付费套件 | 按 $50/小时综合费率,四周内回本 |
| 3 | Pre-MVP,尚无 MRR 预测 | 免费套件(Wasp / Open-SaaS) | 将许可费省下作为运营资金 |
| 4 | 垂直 SaaS(医疗、金融、市场) | 自定义构建 | 套件覆盖规格不足 40%;集成税超过节省额 |
| 5 | 团队需要深度学习技术栈 | 自定义构建 | 维护税转化为学习投资 |
| 6 | 月费 $200 以下的个人项目 | 免费套件或自建 | 许可费相当于 6-12 周收入 |
第 4、5、6 条是四种自定义构建仍胜出的情况。我先于 TanStack Ship 推荐之前命名它们,因为大多数对比文章恰恰忽略了这几条。
回报计算器,完整记录
决策可以归结为一个公式。如果 payback_weeks < 12,购买在一个季度内即可回本。
// app/lib/saas-kit-payback.ts
interface KitOption {
licenseFee: number; // 0, 199, 279, 299, 249
hoursSavedVsBuild: number; // 典型 200-300
maintenanceHoursPerQuarter: number; // 典型 3-6
monthlyInfraDelta: number; // 托管 + 数据库成本差异
}
export function paybackWeeks(opt: KitOption, blendedHourly: number): number {
const timeSaved = opt.hoursSavedVsBuild * blendedHourly;
const maintenanceCost = opt.maintenanceHoursPerQuarter * blendedHourly * 4; // 年化
const infraDelta = opt.monthlyInfraDelta * 12;
const netBenefit = timeSaved - maintenanceCost - infraDelta;
if (netBenefit <= 0) return Number.POSITIVE_INFINITY;
const weeklyBenefit = netBenefit / 52;
return Math.round((opt.licenseFee / weeklyBenefit) * 10) / 10;
}
// 示例:312 小时自建基础上使用 TanStack Ship
paybackWeeks(
{ licenseFee: 299, hoursSavedVsBuild: 262, maintenanceHoursPerQuarter: 4, monthlyInfraDelta: -5 },
50
); // -> 0.6 周 — 一周内回本
关键的一行是 monthlyInfraDelta。TanStack Ship 的托管(Cloudflare Workers + D1)在 10k MAU 下约 $10/月。ShipFast 在 Vercel Pro + Supabase 上同负载约 $55/月。选择 TanStack Ship 的 $45/月 差异在计入时间节省之前就已经增加了净收益——大多数回报计算器都忽略了这一行。
上线成本计算器
对于正在套件和自建之间犹豫的双人团队,下面的上线成本计算器回答的是:"到达首位付费客户需要多少成本?"
// app/lib/launch-cost.js
function launchCost({ hours, hourlyRate, infraMonthly, monthsToBreakeven }) {
const buildCost = hours * hourlyRate;
const infraCost = infraMonthly * monthsToBreakeven;
return buildCost + infraCost;
}
const custom = launchCost({ hours: 312, hourlyRate: 50, infraMonthly: 55, monthsToBreakeven: 3 });
const kit = launchCost({ hours: 56, hourlyRate: 50, infraMonthly: 10, monthsToBreakeven: 3 });
console.log({ custom, kit });
// -> { custom: 15825, kit: 3110 }
自定义构建路径到达首位付费客户的成本为 $15,825(按 $50/小时综合费率)。套件路径为 $3,110。$12,715 的差值约等于 $1,500 MRR 八个月的收入——这就是"购买套件成为显而易见选择"的盈亏平衡阈值。
在仓库中追踪 build-vs-buy 决策
以下 Schema 追踪每个套件决策与实际 MRR 增长曲线的对比。将它放入你的仓库,对每个使用 starter 的团队运行。
-- schema/build_vs_buy_decisions.sql
CREATE TABLE build_vs_buy_decisions (
id INTEGER PRIMARY KEY,
team TEXT NOT NULL, -- '2-person', 'solo', 'team-3-5'
path TEXT NOT NULL, -- 'kit' or 'custom'
kit TEXT, -- 'tanstack-ship', 'shipfast', 'wasp'
license_paid INTEGER NOT NULL, -- 美元,免费为 0
forecast_mrr_at_30d INTEGER NOT NULL, -- 美元/月,关键输入
actual_mrr_at_30d INTEGER, -- 上线后实测
payback_weeks REAL, -- 由上方 paybackWeeks() 填充
hours_to_first_customer INTEGER NOT NULL,
decision TEXT NOT NULL, -- 'kit', 'custom', 'hybrid'
outcome TEXT -- 'paid_back', 'broke_even', 'lost', 'pending'
);
CREATE INDEX idx_decisions_team ON build_vs_buy_decisions(team, path);
-- 示例行:双人团队,自建,预测 $1,500/月,11 周回本
INSERT INTO build_vs_buy_decisions
(team, path, kit, license_paid, forecast_mrr_at_30d, actual_mrr_at_30d, payback_weeks, hours_to_first_customer, decision, outcome)
VALUES ('2-person', 'custom', NULL, 0, 1500, 1840, 11.0, 312, 'custom', 'paid_back');
四种自定义构建仍胜出的情况
这些是大多数 SaaS 套件 vs 自建对比文章跳过的情况。我在此命名它们,因为忽视它们正是导致团队购买不适合自己的套件的根本原因。
情况 1:高度垂直的数据模型(医疗、金融、市场)
如果你的数据模型过于垂直,没有任何套件能覆盖 40% 以上的需求(例如多方 payouts 的市场、支持复式记账的受监管金融、带审计日志的医疗 SaaS),套件只覆盖规格的底部 20%。你需要为顶部 80% 付费许可 AND 集成税。
集成税隐藏在"套件部署完成"和"首位付费客户"之间的那几周。对于垂直 SaaS,这个差距通常为 8-12 周;对于水平 SaaS,仅 1-2 周。
情况 2:受监管的垂直 SaaS 且有审计要求
HIPAA、SOC 2 和 PCI-DSS 级 SaaS 有审计日志要求,大多数套件不附带。审计日志模块通常是 60-90 小时的定制代码;套件覆盖了 auth 和 Stripe 部分,但你需要重建审计层。套件的许可费变成了沉没成本。TanStack Ship 的审计日志模块作为付费附加提供,但 HIPAA 级工作负载仍需要单独的合规审查。
情况 3:团队需要深度学习技术栈
如果你的双人团队下一个产品需要深度学习 TanStack Start / Next.js / Cloudflare Workers,维护税就变成了学习投资。从零构建 auth 和 webhook 处理器会教会你框架中没有任何套件会暴露的那些部分。
购买在丧失期权价值上回不了本,不是在钱上。这是我对任何将套件作为 12 个月起点而非 5 年平台来使用的团队会提出的观点。
情况 4:月费 $200 以下的个人项目
如果你的预测 MRR 低于 $200/月,且你不融资,$299 的套件相当于 6-12 周的收入。维护税是每季度 4 小时 × $50/小时 = $200/年。只有当套件真正节省了 600+ 小时时,购买才能回本——对于不需要 Stripe 坏账处理或多租户 auth 的项目来说,这不太可能。选择 Wasp / Open-SaaS 或 create-t3-app,接受更长的上线时间,把节省的费用作为运营资金。
TanStack Ship 何时回本
对于预测在上线后 30 天内达到 $1k MRR 的双人团队,TanStack Ship 在第一季度内即可回本。计算直接:
- 节省 312 小时 × $50/小时综合费率 = 避免 $15,600 的机会成本
- 减去 50 小时集成税 × $50/小时 = $2,500
- 净收益 = $13,100
- 许可费 = $299
- 回本周期 = 299 / (13,100 / 52) = 1.2 周
对于 $20k MRR 及以上的双人团队,TanStack Ship 的 Cloudflare 成本(D1 包含在内、R2 零出口费、按请求计费的 Workers)相比 Vercel Pro + Supabase 每年再节省 $720。托管费用差异会复利增长;时间节省差异则不会。
如需更深入地了解每个模块的构建成本,请参见套件成本拆解。如需了解 12 个选项的 SaaS boilerplate 免费与付费 TCO,请参见免费 vs 付费 TCO 深度解析。如需了解功能,请参见功能;如需了解许可条款,请参见定价。
上线时间数据:套件 vs 自建,对比
14 天套件部署 vs 312 小时自定义构建:56 小时套件工作 vs 312 小时自定义工作。从墙上时钟来看时间相近(双人团队两种方式都需要 14 天),但套件为产品特定工作、客户访谈和交付第二个功能腾出了 256 小时。
对于按 $50/小时综合费率的二人团队,256 小时的差距相当于 $12,800 的机会成本——足以资助一名设计师两个月,或一名兼职增长营销人员三个月。
常见问题
SaaS 套件 vs 自建,值得吗?
对于预测 30 天内 MRR 达到 $1k+ 的双人团队,值得——$199-$299 的套件在第一季度内回本。对于月费 $200 以下的个人项目或高度垂直的 SaaS,不值得。决策是由约束条件驱动的,不是偏好驱动的。
从零构建 SaaS 与使用套件相比需要多长时间?
双人团队从零构建含五项功能的 SaaS(auth + Stripe + admin + blog + i18n)计时 312 小时。同样的团队在 TanStack Ship 上交付同规格产品需要 50 小时 + 18 小时集成税 = 68 小时。按 $50/小时综合费率计算,244 小时的差距等于 $12,200 避免的机会成本。
2026 年双人团队最佳 SaaS 套件是什么?
边缘部署与类型安全(TanStack):$299 的 TanStack Ship。Vercel 体验与社区:$199 的 ShipFast。B2B 多租户与 Supabase:$279 的 Makerkit。Pre-MVP:免费的 Wasp Open-SaaS。
SaaS 套件有维护税吗?
有。平均每季度 3-8 小时用于依赖升级和安全补丁。Cloudflare Workers 定价 两年内变了三次;每次变更都需要运行时升级。在 ROI 计算中要将此项纳入。
双人团队 14 天内用套件能交付吗?
能,用 TanStack Ship 或 ShipFast。大多数双人团队用付费套件在 14-21 天内向首位付费客户交付含五项功能的 SaaS,用免费套件需要 28-42 天。2-4 周的差距按每天 $200 收入计算是 $4,000-$8,000 的机会成本——这是证明许可费合理性的关键数字。
什么情况下自定义构建优于 SaaS 套件?
四种情况:高度垂直的数据模型(医疗、金融、市场)、有审计要求的受监管 SaaS、需要深度学习技术栈的团队,以及月费 $200 以下的个人项目。其他情况下,付费套件在第一季度内回本。
混合方案怎么样?
混合方案(底部 60% 用套件,垂直 40% 定制)在套件覆盖了你的 auth + 计费 + admin,但你的领域有非标准数据模型时有效。预期在套件部署时间基础上额外增加 70-100 小时的集成税。这是大多数垂直 SaaS 团队实际走的路。
开始使用 TanStack Ship — 克隆免费 starter,用 14 天交付含五项功能的 SaaS。试用 TanStack Ship →