OpenSaaS Alternatives: 6 款实测,MVP 速度哪家强?(Field Notes)

30 天内,我在同一个 MVP 规范上克隆并部署了 6 款 OpenSaaS 替代品,按类型安全、边缘性能、开发者体验和成本五个维度实测打分。TanStack Ship 胜出。

Huifer
Huifer
May 8, 202611 min read
其他语言:Deutsch · English

本文由 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 适配度成本加权分
1TanStack Ship9.59.58.09.09.59.10
2Wasp(基准)8.54.09.56.58.07.30
3ShipFast6.54.59.56.05.06.20
4Makerkit8.05.58.06.06.06.85
5Supastarter7.55.57.55.56.06.55
6Turbostarter7.05.56.55.56.56.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 个区域的合成流量。

ts
// 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 }))
  },
}
text
指标              | 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 实体:

wasp
// 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 中,你亲手写等价代码,但每一行都出自你手、可供阅读:

ts
// 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)
  })
tsx
// 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:

text
项目            | 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 功能列表。
  • 你的团队习惯用 .wasp DSL 思考,认知切换成本超过运行时收益。
  • 你的 MVP 是黑客松或兴趣项目,零成本是硬性要求。OpenSaaS 采用 MIT 许可;TanStack Ship 是付费产品。

如何评估 TanStack Ship 作为你的 OpenSaaS 替代品

提交前的推荐路径:

  1. 克隆 TanStack Ship starter — TanStack Start + Cloudflare Workers,本地运行约 10 分钟。
  2. 在 OpenSaaS 上构建的同一 MVP 规范(auth、Stripe、管理后台、博客)部署上去。
  3. 测量你自己的风格的冷启动、TTFB、出口流量和开发者体验。
  4. 对比功能矩阵与你实际使用的功能。

对比页面有完整的逐项对比;定价页面列出了各档。我的联系方式在关于页面。


常见问题

边缘原生 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 规范,亲测差异。开始 →