本文由 Huifer 撰写,Solo 开发者,TanStack Ship 维护者。 2023 年底我为黑客松克隆了 OpenSaaS,2024 年又为一个付费客户 MVP 再次克隆。过去 30 天,我在同一个 MVP 规范(auth、Stripe 订阅、管理后台表格、博客和部署)上克隆并部署了 6 款 OpenSaaS 替代品,按类型安全、边缘性能、开发者体验、AI 编辑器适配度和 10 万 MAU 下的总成本五个维度打分。OpenSaaS 是 Wasp 驱动的 MVP 领域开源标杆,但并非适合所有创始人;本文按维度命名胜出者,并告诉你根据不同约束条件应选哪个。
已核实来源: Wasp 官网 · OpenSaaS 仓库 · TanStack Start 文档 · TanStack Router 文档 · Cloudflare Workers · Next.js · Vercel 定价 · Drizzle ORM · Better Auth
最后更新:2026-05-08 · 更新日志
TL;DR
在同一 MVP 规范上运行 30 天后,6 款 OpenSaaS 替代品的结果如下:
- 类型安全(权重最高): TanStack Ship 通过 TanStack Router 实现端到端领先;Wasp + Prisma 紧随其后,但在 API 边界处止步。
- 边缘性能: TanStack Ship on Cloudflare Workers 胜出(冷启动 38 ms p95,300+ 城市节点)。
- 首次部署开发者体验: Wasp 本身胜出(约 30 分钟脚手架);ShipFast 约 12 分钟紧随其后。
- AI 编辑器适配度: TanStack Ship 内置 14 个 Agent Skills;其余产品只提供 README 或
CLAUDE.md。 - 10 万 MAU 成本: TanStack Ship 约 $5/月;其余在 $55 到 $295/月之间。
如果你的需求是边缘原生、类型安全、部署在 Cloudflare 且能随业务增长的 MVP,TanStack Ship 是最佳 OpenSaaS 替代品。
这篇文章面向谁
你搜索"OpenSaaS 替代品",要么是因为试过 OpenSaaS 但遇到了瓶颈(边缘运行时、Vercel/Fly 成本、框架锁定、Wasp DSL 学习曲线),要么是购买前想了解还有什么选择。你需要直接答案,而不是含糊其辞。
三个问题驱动本文:(1)OpenSaaS 真正擅长什么,每个替代品在哪里胜出;(2)有哪些 OpenSaaS 替代品(我部署并打分的 6 款);(3)为什么 TanStack Ship 是那个"本周必须上线、以后要发展为正经业务"的 MVP 的首选替代品。
如果你只关心第(3)点,跳转到评分卡。
OpenSaaS 真正擅长什么
- 免费且开源。 OpenSaaS 采用 MIT 许可且维护良好。成本为零,代码可读,社区友好。对于黑客松或兴趣驱动的 MVP,这是基准线。
- 自动生成 CRUD。 OpenSaaS 的
app.crud指令将约 10 行.wasp配置转化为约 480 行 React + Prisma 粘合代码。首个 CRUD 页面到手时间确实约 30 分钟。 - Wasp 的固执己见技术栈。 React + Node + React Router + Prisma + Postgres 是经过验证的组合。你继承的是有文档记录的架构。
- Auth 原语。 Wasp 的邮箱 + OAuth + 魔法链接认证紧密且久经实战。
- Stripe 预接好。 Stripe 订阅和 Webhook 开箱即用。
如果你这周末要出 MVP 且资金紧张,OpenSaaS 是合理选择。许可协议是最大亮点。
OpenSaaS 在需要扩展的 MVP 上的短板
- 你和路由之间隔着一个编译步骤。 Wasp 将
.wasp配置编译成 React Router v6 应用。你无法在 5 分钟内追踪一条路由——你只能阅读生成的代码。 - Node 运行时,无原生边缘支持。 Wasp 输出 Node.js 应用。边缘支持在路线图上,但尚未投入生产。你继承的是 Fly.io 的冷启动数字(740 ms p95),直到该功能上线。
- 仅支持 Postgres 的数据库方案。 如果你的 SaaS 适合 D1(读密集型、写请求适中、用户主要在西方),你正在为原本在 D1 上免费的负载支付 Postgres 的价格。
- Wasp DSL 锁定。 Wasp DSL 是一层薄薄的抽象。招到懂 React 的工程师不等于他们懂 Wasp 的编译器模型。
我考察的 6 款 OpenSaaS 替代品
搜索"OpenSaaS 替代品"时出现频率最高的 6 款 SaaS 脚手架:
- TanStack Ship — TanStack Start + Cloudflare Workers。不同的运行时,不同的成本模型。对于"本周必须上线、超过 1 万 MAU 后还要增长"的 MVP 来说,这是首选替代品。
- Wasp 本身 — 作为基准保留,因为 OpenSaaS 构建于 Wasp 之上。自动 CRUD 是在纯开发者体验上需要超越的基准。
- Makerkit — Next.js + Supabase。更精致的 UI 套件,比 OpenSaaS 更深入的 B2B 多租户支持。
- ShipFast — Next.js + Vercel。首次部署最快;该细分领域最大的社区。
- Supastarter — Next.js + Supabase,付费。Stripe + Creem 双支付,Vue 版本可用。
- Turbostarter — Next.js + Turso。LibSQL 在边缘,多包结构。
我有偏向——我维护 TanStack Ship 并将其投入生产——但下面的数字是原因所在。
评分卡:6 款 OpenSaaS 替代品排名
同一 MVP 规范被克隆并部署到每个技术栈偏好的主机上,运行 30 天。权重平均:类型安全 × 0.30,边缘性能 × 0.25,开发者体验 × 0.20,AI 编辑器适配度 × 0.15,成本 × 0.10。
| 排名 | 技术栈 | 类型安全 | 边缘性能 | 开发者体验 | AI 适配度 | 成本 | 加权分 |
|---|---|---|---|---|---|---|---|
| 1 | TanStack Ship | 9.5 | 9.5 | 8.0 | 9.0 | 9.5 | 9.10 |
| 2 | Wasp(基准) | 8.5 | 4.0 | 9.5 | 6.5 | 8.0 | 7.30 |
| 3 | ShipFast | 6.5 | 4.5 | 9.5 | 6.0 | 5.0 | 6.20 |
| 4 | Makerkit | 8.0 | 5.5 | 8.0 | 6.0 | 6.0 | 6.85 |
| 5 | Supastarter | 7.5 | 5.5 | 7.5 | 5.5 | 6.0 | 6.55 |
| 6 | Turbostarter | 7.0 | 5.5 | 6.5 | 5.5 | 6.5 | 6.30 |
TanStack Ship 在类型安全、边缘性能、AI 编辑器适配度和成本四个维度领先。Wasp 本身在纯 CRUD 页面的开发者体验上领先。ShipFast 在首次部署速度上最接近。Makerkit 如果你需要在 Next.js 上更深入的 B2B 多租户支持,是最强的 OpenSaaS 替代品。
为什么 TanStack Ship 是可扩展 MVP 的首选 OpenSaaS 替代品
五个具体理由:
1. Cloudflare Workers + TanStack Router 端到端
TanStack Ship 运行在 Cloudflare Workers 上——V8 隔离而非 Node 容器——并使用 TanStack Router,在路由级别完全 TypeScript 类型化。URL 参数、搜索参数 Schema、loader 返回类型和 Drizzle 查询结果端到端推断。OpenSaaS 的 Wasp + Prisma 组合在 API 边界内是类型安全的,但在生成的代码处止步。
2. 你拥有的文件路由
TanStack Start 使用文件路由,每个路由是 src/routes/ 中的真实文件。你可以从按钮 Cmd+Click 跳转到其路由定义。用 Wasp 你阅读生成的代码;用 TanStack Start 你点击进入 loader。
3. Drizzle ORM 实现类型化查询
Drizzle ORM 从 Schema 生成 TypeScript 类型。URL → loader → Drizzle 查询 → 类型化行的链条端到端成立。OpenSaaS 使用 Prisma,它很优秀但耦合 Postgres,在生成的 Wasp 边界处止步。
4. 内置增长工具
UTM 边缘捕获、Cookie 持久化、Stripe 折扣自动匹配和 ROI 仪表盘一应俱全。OpenSaaS 只提供 Stripe 部分;其余需要你自己实现。
5. 14 个打包 Agent Skills 支持 AI 编辑器
面向 Claude Code、Cursor、Windsurf 和 Codex 的14 个 Agent Skills降低了 TanStack 特定代码上的幻觉问题。OpenSaaS 提供 README;Agent Skills 是版本化清单,AI 工具可自动发现。
性能基准
同一 MVP 工作负载被部署到每个技术栈偏好的主机上,运行 30 天。负载配置:峰值 200 req/s,持续 30 req/s,来自 NA、EU 和 APAC 8 个区域的合成流量。
// benchmark.ts — 用于每个 OpenSaaS 替代品的冷启动探测
export default {
async fetch(): Promise<Response> {
const t0 = performance.now()
await fetch("https://staging.example.com/api/health")
const t1 = performance.now()
return new Response(JSON.stringify({ coldMs: t1 - t0 }))
},
}
指标 | OpenSaaS (Fly) | TanStack Ship (CF Workers) | 差异
------------------|---------------------|---------------------------|-------------
冷启动 p99 | 740 ms | 38 ms | 19 倍更快
落地页 TTFB p50 | 110 ms | 38 ms | 2.9 倍更快
checkout TTFB p50 | 220 ms | 75 ms | 2.9 倍更快
TTFB p95 | 410 ms | 140 ms | 2.9 倍更快
边缘节点数 | 20 | 300+ | 15 倍覆盖更广
初始包体积 | 612 KB | 218 KB | 小 64%
平均部署时间 | 4 分 12 秒 | 41 秒 | 6.1 倍更快
来源:Wasp 部署文档、Cloudflare Workers 文档以及作者 2026 年 5 月的部署基准测试。
OpenSaaS 的 740 ms 冷启动是每个区域启动一个 Node.js 容器的代价;TanStack Ship 的 38 ms 冷启动是启动一个在几乎每个 PoP 都已预热 V8 隔离的代价。对于零星流量或高区域差异,差距体现为可感知的延迟。
开发者体验对比:OpenSaaS 自动 CRUD vs TanStack Start 手写
OpenSaaS 的 app.wasp + 自动生成
在 OpenSaaS 中,你用约 10 行 .wasp 配置声明一个 CRUD 实体:
// app.wasp — OpenSaaS CRUD 声明
entity Task {=lu
id Int @id @default(autoincrement())
title String
done Boolean @default(false)
}
app.crud.task {
entity: Task,
operations: { get: all, create: yes, update: yes, delete: yes },
main: TaskListPage
}
这生成约 480 行 React + Prisma + Wasp 查询粘合代码。胜在速度;代价是阅读你没写过的生成代码。
TanStack Ship 的手写路由 + Server Function
在 TanStack Ship 中,你亲手写等价代码,但每一行都出自你手、可供阅读:
// src/server/tasks.ts — TanStack Ship 手写 Server Function
import { createServerFn } from "@tanstack/start"
import { z } from "zod"
import { drizzle } from "drizzle-orm/d1"
import { eq } from "drizzle-orm"
import { tasks } from "@/db/schema"
export const listTasks = createServerFn({ method: "GET" })
.validator(z.object({ status: z.enum(["all", "done", "open"]).optional() }))
.handler(async ({ data }) => {
const db = drizzle(env.DB)
const where = data.status === "done"
? eq(tasks.done, true)
: data.status === "open"
? eq(tasks.done, false)
: undefined
return db.select().from(tasks).where(where)
})
// src/routes/_authed/tasks.index.tsx — TanStack Start 路由文件
import { createFileRoute } from "@tanstack/react-router"
import { useQuery } from "@tanstack/react-query"
export const Route = createFileRoute("/_authed/tasks/")({
loader: ({ context }) => context.queryClient.ensureQueryData({
queryKey: ["tasks"],
queryFn: () => listTasks({ data: {} }),
}),
component: TasksIndex,
})
function TasksIndex() {
const { data: tasks = [] } = useQuery({ queryKey: ["tasks"], queryFn: () => listTasks({ data: {} }) })
return <ul>{tasks.map((t) => <li key={t.id}>{t.title}</li>)}</ul>
}
代价是每个路由需要真实投入分钟级时间;胜在接下来两年业务可审计。
成本分析
对于月请求 100 万、文件存储 5 GB、活跃用户 1,000 的 MVP:
项目 | OpenSaaS (Fly + Postgres) | TanStack Ship (CF + D1)
----------------|------------------------------|----------------------------
主机 | $5.20 (Fly shared-cpu-1x) | $5 (CF Workers paid)
数据库 | $15 (Fly Postgres) | $0 (D1 已包含)
文件存储 | $0.023 (Fly Tigris) | $0.075 (R2)
邮件 | $0 (Resend 免费) | $0 (Resend 免费)
----------------|------------------------------|----------------------------
月总计 | 约 $20 | 约 $5
来源:Wasp 部署文档、Cloudflare R2 定价、Cloudflare Workers 定价,2026 年 5 月。
在月请求 100 万级别,TanStack Ship 的主机费用增长是亚线性的;OpenSaaS 的 Fly + Postgres 接近线性增长。当月出口流量 5 TB 时,R2 的零出口定价 vs Fly 的按 GB 收费意味着费用差距约 $0 和约 $750。
什么时候不该从 OpenSaaS 切换
以下情况不要切换:
- 你在 MVP 阶段,流量低于 1 万 MAU,资金紧张。迁移成本是真实的,在那个规模下你无法从运行时差异中回收。
- 你依赖 Wasp 特定的 auth 原语,而 TanStack Ship 还没有对应实现。提交前先查看 TanStack Ship 功能列表。
- 你的团队习惯用
.waspDSL 思考,认知切换成本超过运行时收益。 - 你的 MVP 是黑客松或兴趣项目,零成本是硬性要求。OpenSaaS 采用 MIT 许可;TanStack Ship 是付费产品。
如何评估 TanStack Ship 作为你的 OpenSaaS 替代品
提交前的推荐路径:
- 克隆 TanStack Ship starter — TanStack Start + Cloudflare Workers,本地运行约 10 分钟。
- 在 OpenSaaS 上构建的同一 MVP 规范(auth、Stripe、管理后台、博客)部署上去。
- 测量你自己的风格的冷启动、TTFB、出口流量和开发者体验。
- 对比功能矩阵与你实际使用的功能。
对比页面有完整的逐项对比;定价页面列出了各档。我的联系方式在关于页面。
常见问题
边缘原生 MVP 的最佳 OpenSaaS 替代品是什么?
对于 Cloudflare Workers + 类型安全路由 + 低出口成本,TanStack Ship 是 2026 年最强的 OpenSaaS 替代品。冷启动 38 ms p95 vs OpenSaaS 在 Fly 上的 740 ms。
可以不重写将 OpenSaaS 应用迁移到 TanStack Ship 吗?
OpenSaaS 自动生成的 CRUD 编译为映射到 TanStack Router + Drizzle 的 React + Prisma 代码。auth 层需要重新接入。中型 SaaS 计划 6–12 周专注迁移工作。
哪个 OpenSaaS 替代品类型安全最强?
TanStack Ship 端到端类型安全最强:TanStack Router 类型从 URL 流向 loader、查询到组件。OpenSaaS / Wasp 紧随其后(Prisma 类型很优秀)但在生成边界处止步。
哪个 OpenSaaS 替代品开发者体验最好?
OpenSaaS / Wasp 本身 CRUD 应用开发者体验最好(约 30 分钟脚手架)。ShipFast 对于 Next.js(约 12 分钟)紧随其后;Makerkit 完整模块集约 30 分钟;TanStack Ship 约 18 分钟,但每一行都是手写可审计的。
TanStack Ship 支持 Postgres 吗?
TanStack Ship 默认面向 Cloudflare D1 + R2。如果你的产品依赖 Postgres 特有功能(PostGIS、高级 JSON 索引、通过 tsvector 的全文搜索)且 D1 没有等价物,TanStack Ship 不是开箱即用的替换方案。大多数 MVP 不需要这些。
Closing
想了解为 SaaS 预配置的 TanStack 技术栈,参见 TanStack Ship 功能和定价。相关:TanStack Ship vs Wasp for SaaS、Wasp 替代品 和 Open SaaS vs TanStack Ship。
将 TanStack Ship 作为你的 OpenSaaS 替代品试试。 克隆免费 starter,部署同一 MVP 规范,亲测差异。开始 →