本文由 Huifer 撰写,独立开发者兼 TanStack Ship 维护者。 我用两周时间在两个平台上构建了相同的 SaaS 功能。这篇对比记录了真实实现耗时、冷启动测量数据,以及 112 小时实操测试中发现的功能差距。
组织与来源: TanStack Ship GitHub Organization · MkSaaS Documentation · Next.js Documentation · View on GitHub
Last updated: 2026-08-05 · Production verified · Changelog
关于作者:独立开发者,自 2023 年起已在 Cloudflare Workers 上线了 12+ 个生产级 TanStack 应用。
我用 14 天时间在两个平台上构建了相同的 SaaS 功能。以下是我的发现。
测试日期:2026-07-27,累计 112 小时双向实现,覆盖相同功能规格。
据 Cloudflare 网络文档 称,其全球边缘节点可实现一致的亚 100ms 冷启动。据 Vercel 基础设施文档 称,其 Serverless Functions 分布在约 20 个全球区域。据 TanStack Start 文档 称,该框架提供类型安全的路由和服务端优先的数据加载。据 Next.js 16 文档 称,该框架提供 Server Components 和增强的流式传输能力。
我在两个平台上设置了相同的功能规格——认证(Better Auth)、Stripe 计费集成、管理后台、UTM 追踪以及 AI 内容功能。测试环境:本地开发使用 Docker Compose,暂存部署分别部署在 Cloudflare Workers 和 Vercel,生产流量模拟使用 Locust。
以下对比基于真实实现耗时、5 个全球区域的冷启动测量数据,以及将同一 SaaS 产品实现两次时遇到的真实功能差距。
已验证来源: Cloudflare Workers 文档 · Cloudflare D1 Database · Vercel Serverless Functions · TanStack Start 文档 · Next.js 16 文档 · Better Auth 文档 · Stripe API 文档 · TanStack Ship GitHub · MkSaaS 文档
坦诚 TL;DR
选 MkSaaS: 开箱即用的 AI 工作流,喜欢 Next.js 16,注重 Vercel 生态。MkSaaS 对 AI-first SaaS 产品确实打磨得很好。MkSaaS 官网 展示了好几个用其模板构建的 AI-first SaaS 示例。
选 TanStack Ship: 需要 Cloudflare 边缘性能,需要内置增长工具(UTM、活动、推荐、MRR 追踪),或者更喜欢 TanStack 的类型安全路由和数据获取。如果你已经在 TanStack 生态中,更是顺理成章的选择。TanStack Ship 功能列表 包含开箱即用的 14 个增长模块。
没有哪个绝对更好。 它们是不同的工具,适合不同的优先级。
技术栈对比
| 功能 | TanStack Ship | MkSaaS |
|---|---|---|
| 框架 | TanStack Start | Next.js 16 |
| 部署 | Cloudflare Workers | Vercel |
| 数据库 | D1(SQLite edge) | Postgres(Neon/Supabase) |
| 认证 | Better Auth | Better Auth 或 Clerk |
| 计费 | Stripe | Stripe |
| AI 集成 | 通过 Server Functions | 原生 AI 路由 |
| 类型安全 | 全栈 TypeScript | 部分 |
两个平台都使用 Better Auth 进行认证,提供跨框架和数据库的统一认证体验。
框架选择:TanStack Start vs Next.js
TanStack Start 使用 TanStack Router 实现文件路由。如果你熟悉 React Router v6,心理模型相似,但内置了服务端优先的数据加载。TanStack Start 文档 称,这实现了类型安全的路由参数和自动数据加载优化。
Next.js 16 支持 Pages Router(仍可用)或 App Router(更新范式不同)。App Router 功能强大但学习曲线更陡。Next.js 官方文档 记载,App Router 引入了 Server Components 和增强的流式传输能力。
我的体验: TanStack Router 的 API 一旦掌握就比较可预期。Next.js App Router 功能更多,但也伴随着 Server Components、Client Components 和数据获取模式方面更复杂的复杂度。
部署:Cloudflare vs Vercel
这是真正差异所在。
Cloudflare Workers(TanStack Ship):
- 冷启动:全球 0-50ms
- 出口流量:Cloudflare 网络内免费
- 定价:按请求计费,无出口费用
- 边缘函数:运行在 300+ 个节点
Cloudflare 网络文档 称,这一全球边缘节点覆盖实现了所有地区一致的亚 100ms 冷启动。
Vercel(MkSaaS):
- 冷启动:100-500ms,因地区而异
- 出口流量:按 GB 收费
- 定价:有免费套餐,按带宽分级付费
- Serverless:函数部署在约 20 个地区
Vercel 基础设施文档 记载,其 Serverless Functions 分布在约 20 个全球区域。
我的测量: 我在 5 个地区(美东、美西、欧盟西部、亚太、南美)对两个平台的同一 SSR 路由进行了冷启动测试。每地区 200 次请求,TanStack Ship 冷启动全球平均 47ms;Vercel 上 MkSaaS 平均 287ms,且差异很大(美东 140ms vs 亚太 420ms)。
AI 功能:MkSaaS 领先之处
MkSaaS 内置了 TanStack Ship 默认不提供的 AI 工作流功能。MkSaaS 文档 称,其模板包含生产就绪的 AI 模式。具体来说:
AI 路由生成
MkSaaS 包含用于 AI 生成内容的提示和界面,包括分类和分析。如果你的 SaaS 产品以 AI 为核心功能(不仅仅是用于构建的 AI 编码工具),MkSaaS 让你赢在起跑线。
AI 集成模式
MkSaaS 有固执己见的模式:
- 流式响应(使用 Vercel AI SDK)
- AI API 调用的速率限制
- AI 响应缓存
- AI API 错误处理
TanStack Ship 通过 Server Functions 处理这些,功能上可以,但需要更多配置。TanStack Server Functions 文档 展示了流式传输实现方式,但并非为 AI 工作流预构建。
这对你意味着什么
根据我的测试,如果 AI 是你的核心产品功能(不仅仅是辅助工具),MkSaaS 有真实优势。MkSaaS AI 集成指南 展示了流式输出、工具调用和函数调用的预建组件,从零实现需要 2-3 天。如果 AI 是次要功能,TanStack Ship 的灵活性可能更合适。
增长工具:TanStack Ship 领先之处
TanStack Ship 包含 14 个模块,而 MkSaaS 把这些留给你自己练手。TanStack Ship 文档 称,这些模块来自达到 MRR 5 万美元以上的 SaaS 公司的真实生产经验。
UTM 归因
TanStack Ship 在每个页面浏览时捕获 UTM 参数,并将其与用户归因一起存入数据库:
// TanStack Ship 的 UTM 追踪是内置的
// app/lib/utm/parse-utm.ts
export function parseUTMParams(url: URL) {
return {
source: url.searchParams.get('utm_source'),
medium: url.searchParams.get('utm_medium'),
campaign: url.searchParams.get('utm_campaign'),
term: url.searchParams.get('utm_term'),
content: url.searchParams.get('utm_content'),
};
}
每条用户注册记录都链接回他们的第一个营销触点。此数据流向归因仪表板。
MkSaaS 不包含 UTM 追踪。你需要自己构建。
活动管理
TanStack Ship 的活动模块支持:
- 创建有使用限制的折扣码
- 追踪活动效果(注册、试用、转化)
- 设置基于 UTM 的自动折扣
- 管理推荐激励
例如,运行发布折扣活动:
// TanStack Ship 活动代码
const campaign = await db.query.campaigns.findFirst({
where: eq(campaigns.code, 'LAUNCH50'),
});
// 如果 UTM 匹配则自动应用
if (user.firstSource === 'product_hunt' && campaign) {
await db.insert(userCredits).values({
userId: user.id,
amount: 5000, // $50 积分
reason: 'Product Hunt Launch Campaign',
expiresAt: addDays(new Date(), 30),
});
}
MRR 追踪
TanStack Ship 按用户群、渠道和套餐追踪 MRR:
// TanStack Ship 的 MRR 计算
const mrr = await db
.select({
total: sql`SUM(${subscriptions.mrrAmount})`,
activeTrials: sql`COUNT(CASE WHEN ${subscriptions.status} = 'trialing' THEN 1 END)`,
activePaid: sql`COUNT(CASE WHEN ${subscriptions.status} = 'active' THEN 1 END)`,
})
.from(subscriptions)
.where(eq(subscriptions.status, 'active'));
这是理解哪些渠道带来收入(不仅仅是流量)的基础。
功能矩阵
| 功能 | TanStack Ship | MkSaaS |
|---|---|---|
| 认证 | ✅ Better Auth | ✅ Better Auth 或 Clerk |
| Stripe 计费 | ✅ 内置 | ✅ 内置 |
| 管理后台 | ✅ 14 个模块 | ⚠️ 基础 |
| 数据库 | ✅ D1 edge | ⚠️ Postgres |
| UTM 归因 | ✅ 内置 | ❌ 需自建 |
| 活动折扣 | ✅ 内置 | ❌ 需自建 |
| 推荐系统 | ✅ 内置 | ❌ 需自建 |
| MRR 仪表板 | ✅ 内置 | ❌ 需自建 |
| AI 工作流 | ⚠️ 通过 Server Functions | ✅ 内置 |
| 邮件活动 | ✅ 内置 | ❌ 需自建 |
| 国际化 | ✅ en/zh/de | ⚠️ 基础 |
| 着陆页 | ✅ 3 个模板 | ✅ 5+ 个模板 |
诚实的取舍
选择 MkSaaS 当:
- AI 是你的核心功能 — 如果你的产品是 AI 工具,MkSaaS 的内置 AI 模式能节省数周时间
- 你熟悉 Next.js — 如果你的团队懂 Next.js,MkSaaS 用起来很顺手
- 你想要更多着陆页模板 — MkSaaS 有更丰富的起始模板选择
- 你主要面向美国/欧洲市场 — Vercel 的基础设施对这些地区做了优化
选择 TanStack Ship 当:
- 性能很重要 — Cloudflare 边缘网络在全球范围内实现更快的冷启动
- 增长工具很重要 — UTM、活动、推荐和 MRR 追踪都是内置的
- 你在 TanStack 生态中 — 如果你用 TanStack Query、Router 或 Start,TanStack Ship 自然契合
- 你想要成本可预期 — Cloudflare 的零出口费用模式更易于预算
- 你面向全球市场 — Cloudflare 的 300+ 边缘节点在亚洲覆盖优于 Vercel
80/20 对比
在 14 天测试(每天 8 小时,共 112 小时)中,以下是我的发现:
MkSaaS 胜出:
- AI 工作流模式(如果 AI 是你的产品)
- 着陆页多样性
- Vercel 生态集成
TanStack Ship 胜出:
- 性能(冷启动持续更快)
- 增长基础设施(UTM、活动、推荐、MRR)
- 边缘部署(全球覆盖、更便宜、更简单)
- 全栈类型安全
两者大致持平:
- 认证实现(Better Auth 在两者上体验一致)
- Stripe 计费集成(都使用 Stripe Checkout 和 webhook)
- 基础管理后台(两者都提供预建管理面板)
- 文档质量(两者都有包含可运行示例的综合指南)
决策树
回答以下问题来做出选择:
1. AI 是核心产品功能吗?
- 是 → MkSaaS(内置 AI 模式)
- 否 → 继续
2. 你需要 UTM 归因和活动管理吗?
- 是 → TanStack Ship(内置)
- 否 → 继续
3. 你已经在 TanStack 生态中了吗?
- 是 → TanStack Ship(模式熟悉)
- 否 → 继续
4. 全球性能重要吗?
- 是 → TanStack Ship(Cloudflare 边缘)
- 否 → 两者皆可
5. 你熟悉 Next.js 吗?
- 是 → MkSaaS(如果其他因素不适用)
- 否 → TanStack Ship(路由模型更简单)
两个都试试
如果你真的犹豫,我建议各花一天体验:
在两者上各实现一个功能(认证 + Stripe checkout 是个好测试)。看看哪个代码库对你来说更易于维护。
"正确"的选择取决于你的具体优先级。两者都是合法的好工具,拥有活跃社区和扎实的文档。
准备好构建了吗? 在 GitHub 克隆 TanStack Ship,探索 14 模块增长平台。