本文由 Huifer 撰写,独立开发者及 TanStack Ship 维护者。2024 年以来,我通过 14 个客户项目,分别以 Lovable(创始人 MVP 路径)和 TanStack Ship(生产目标)构建了真实应用。本文中五个测试均可在两个平台上用同一套规范复现。
已验证来源:Lovable 文档 · TanStack Start 文档 · Cloudflare Workers 文档 · Stripe Webhook 文档 · Better Auth 文档 · Drizzle ORM 文档 · Supabase 文档
最近更新:2026-05-15 · 更新日志
TL;DR: Lovable 和 TanStack Ship 解决的问题不同。Lovable 是从空白画布到可点击 SaaS UI(Supabase 数据支撑)最快的路径。TanStack Ship 是将 SaaS 从可点击推向可收费的样板——内置认证、计费、边缘部署和 14 个管理模块。用同一套规范跑五个真实测试,Lovable 在首屏时间上获胜(8 分钟 vs 47 分钟)。TanStack Ship 在认证正确性、Stripe webhook 幂等性、p99 查询延迟和边缘覆盖上全面胜出。按阶段选择,而非按偏好选择。
Lovable 和 TanStack Ship 实际上在做什么
将这两个工具混为一谈是情有可原的——两者都以想不靠工程团队就能交付 SaaS 的独立创始人为目标。更诚实的说法是,它们针对的是 SaaS 生命周期的不同节点。
Lovable 的定位
Lovable 通过自然语言提示词生成一个完整的 React + Vite + Supabase 应用。你描述想要的 SaaS,AI 搭建路由、组件和 Supabase 表。认证、数据库和存储都通过 Supabase 接入。部署则一键发布到 Lovable 的 CDN。
优势是快速得到一个可用的产品。诚实的局限在于运行时是固定的:Lovable 的 CDN + Supabase + Lovable 模型所支持的模式。Lovable 文档 清楚描述了所支持的技术栈。
TanStack Ship 的定位
TanStack Ship 是基于 Cloudflare Workers 的 TanStack Start 样板,预接入了 D1 + R2 + Better Auth + Stripe。代码归你所有,部署到你自己的 Cloudflare 账户,端到端类型安全,内置 14 个管理模块(MRR 仪表盘、UTM 归因、退款流程、邮件营销、R2 文件浏览器)。
优势是生产级安全保障。诚实的局限在于你需要懂 TypeScript,并且愿意使用 CLI。TanStack Start 文档 是基础参考资料。
用同一套规范跑五个测试
我们用同一套 SaaS 规范——包含认证、Stripe 订阅、多租户数据、公开营销站和管理后台的订阅 SaaS——分别在两个工具上运行。将规范映射为 Lovable 的提示词等价形式。
测试一:从零搭建认证
规范: 邮箱 + 密码认证,刷新页面后会话保持,同时支持 Google OAuth。
Lovable:8 分钟。"添加邮箱认证和 Google 登录"这条提示词生成了路由、Supabase 表和 OAuth 回调。两个流程一次成功,无需触碰代码。
TanStack Ship:47 分钟。样板内置 Better Auth,邮箱和 Google 均已预配置;我们花了 47 分钟连接 Cloudflare KV binding 并验证 Worker 会话查询,两者均在 Better Auth 文档 中有记录。
获胜者:Lovable,毫无悬念。纯认证脚手架这块,AI 生成优于手工连接。
测试二:Stripe 订阅
规范: /pricing 页面,三个计划,Stripe Checkout,客户portal链接,以及更新用户订阅状态的 webhook handler。
Lovable:22 分钟。Stripe Checkout 按钮正常工作。Webhook 是摩擦点——Lovable 的 Stripe 集成文档 覆盖了 UI 流程,但 webhook handler 需要手写 Supabase edge function 代码。经过四轮提示词迭代才写好 幂等性检查。
TanStack Ship:31 分钟。样板内置 Stripe Checkout、客户 portal 和一个幂等的 webhook handler(stripe.processWebhook(event, { idempotent: true }))。我们不需要写 webhook,只需要接入 Stripe 密钥。
// app/routes/api/webhooks/stripe.ts
import { stripe } from '@tanstack-ship/billing'
import { createFileRoute } from '@tanstack/router'
export const Route = createFileRoute('/api/webhooks/stripe')({
server: {
handlers: {
POST: async ({ request }) => {
const event = await stripe.webhooks.constructEventAsync(
await request.text(),
request.headers.get('stripe-signature')!,
process.env.STRIPE_WEBHOOK_SECRET!,
)
return stripe.processWebhook(event, { idempotent: true })
},
},
},
})
获胜者:可靠性方面 TanStack Ship,初次速度方面 Lovable。对于真实的 SaaS,webhook 可靠性差距比速度差距更值得在意。
测试三:多租户数据
规范: 两个租户(Acme、Beta)共用一个应用,但在每张表里看到不同的行。
Lovable:可以实现,但需要手写 Supabase Row-Level Security 策略。我们设置好了,但 AI 没能生成它们。Supabase RLS 文档 写得很清楚;Lovable 的提示词没有涉及这个。
TanStack Ship:Drizzle schema 内置了 D1 多租户模式。每条查询都经过 tenantScoped(),它自动添加 WHERE tenantId = ? 子句。我们不需要写 RLS 策略;样板在查询层强制执行租户边界。
// app/lib/db.server.ts
import { drizzle } from 'drizzle-orm/d1'
import { eq } from 'drizzle-orm'
import { users } from '~/drizzle/schema'
export const getUsersForTenant = tenantScoped(async (tx, tenantId: string) => {
return tx.select().from(users).where(eq(users.tenantId, tenantId))
})
tenantScoped wrapper 从请求上下文中读取当前活跃的租户——由 auth 中间件设置——然后注入到每条查询中。路由 handler 不可能忘记 WHERE tenantId = ? 子句,因为 wrapper 在查询执行前就添加了它。这是 AI 编辑器无法提供的正确性保障。
获胜者:TanStack Ship。多租户正确性是样板问题,不是编辑器问题。
测试四:SEO 和 SSR
规范: 服务端渲染的公开营销页面,含 Open Graph 标签、结构化数据和站点地图。
Lovable:客户端渲染。Lovable CDN 提供 HTML 外壳,内容在客户端 hydrate。这意味着 meta 标签系统在 hydrate 后才运行,不够稳定。我们测得一个新 Lovable 应用在 Google 的索引延迟为 14 天(Measured, single-author)。
TanStack Ship:TanStack Start 默认服务端渲染。Meta 标签在路由 loader 中设置。TanStack Start 文档 覆盖了 SSR 模式。基准应用在 36 小时内完成索引。
获胜者:TanStack Ship。发布时即具备 SEO 能力是 TanStack Start 的优势,不只是 AI 与样板之别,但这个优势算数。
测试五:边缘部署
规范: p99 冷启动时间、热请求 p99 TTFB、每月托管成本(100k 请求量)。
| 指标 | Lovable | TanStack Ship (CF Workers) | |---|---| | 冷启动 p99 | 1,800ms (Measured) | 280ms (Measured) | | TTFB p99(热请求) | 540ms (Measured) | 92ms (Measured) | | 100k 请求量月成本 | $25(Supabase Pro + Lovable 托管) | $5(CF Workers + D1 + R2) | | 边缘覆盖 | 有限(Supabase 区域 + Lovable CDN) | 300+ Cloudflare 城市节点 |
来源:Cloudflare Workers 定价、2026 年 4 月自有基准测试。
获胜者:TanStack Ship 全维度胜出。这并不意外——Lovable 的运行时是固定的,TanStack Ship 直接运行在 Cloudflare Workers 上。
Lovable 胜出的地方
我们明确说:Lovable 在以下几种创始人场景下是正确的工具。
首屏时间
如果你有一个 SaaS 想法,下周就要见人,Lovable 能让你在一个下午得到一个可点击的原型。我们见过创始人在不到三小时内从空白文档到公开演示 URL。市场上没有任何其他工具在这个可点击原型阶段能匹配这个速度。
对设计师友好的 UI
Lovable 的 UI 输出很干净。不会得设计奖,但也不像一个开发者随手做的。对于融资演示或设计合伙人 pitch,那种精致感很重要。
投资人演示的精致度
Lovable 应用看起来像 SaaS 产品,不像练手项目。如果你的目标是给领投人或三个设计合伙人做演示,Lovable 的 UI 质量是实实在在的优势。
TanStack Ship 胜出的地方
端到端类型安全
TanStack Router 的编译时类型检查和 TanStack Start 端到端类型化的 Server Functions 在构建时就能捕获错误。Lovable 输出的是 JavaScript 加 Supabase 类型化查询——部分类型安全。对于要维护两年的 SaaS,完整类型安全是实实在在的成本节省。
边缘性能
Test 5 的数字差距悬殊。Cloudflare 的 300+ 边缘城市节点在每个百分位数上都优于 Supabase 的区域设置。如果你的客户是全球性的,这件事从第一天就很重要。
真实的认证和计费栈
Lovable 的认证是 Supabase Auth。TanStack Ship 的认证是 Better Auth,后者是边缘原生的,支持更复杂的流程(多会话、组织切换、基于角色的访问控制),且不依赖 Supabase。计费同理:TanStack Ship 直接接入 Stripe,Lovable 绕道 Supabase edge function。
这些胜出背后的生产级考量,Cloudflare Workers 文档 是权威参考。
决策矩阵
选择 Lovable 如果:
- 你处于原型到融资阶段,需要在数天内做出可点击的演示
- 你不打算在接下来 60 天内向产品收费
- 你愿意在超出 Lovable 能力时迁移代码库(大多数团队会在用户量达到 1,000 左右时这么做)
- 你想在没有设计师的情况下获得设计师级别的 UI 质量
选择 TanStack Ship 如果:
- 你处于交付给付费客户的阶段,需要生产级认证、计费和边缘部署
- 你想要归你所有的代码,部署到你自己的 Cloudflare 账户
- 你想要 TanStack Router + Server Functions 的端到端类型安全
- 你计划将 SaaS 运营多年,想要一个可扩展的技术栈
基于 2024 年以来我们看到的 14 个客户项目,典型的创始人路径如下:
- 第 1-4 周: 用 Lovable 做原型和设计合伙人 pitch
- 第 5-8 周: 一旦出现付费客户,迁移到 TanStack Ship
- 第 3 个月起: 用 TanStack Ship 进行持续生产
这是我们大多数用户实际走过的路径。两个工具是互补的,不是竞争关系。
更深入的定价细节参见定价页。逐功能对比参见功能概览。更宏观的 AI 编码工具格局参见《2026 年独立 SaaS 开发者 AI 编码工具对比》。
常见问题
Lovable 能用于生产吗?
对于原型和设计合伙人,可以。对于规模化付费客户,差距是真实的:客户端渲染影响 SEO,Supabase 区域设置限制边缘性能,webhook 需要手动处理。我们还没有见过一个 Lovable 应用服务 100 万用户的案例。
TanStack Ship 比 Lovable 难学吗?
是的,显著更难。TanStack Ship 假设你能运行 CLI、编辑 TypeScript 和查看 Cloudflare 日志。权衡在于你拥有代码和运行时。如果你从未部署过 Worker,先用 Lovable 做原型,等有了付费客户再来。
能把 Lovable 应用迁移到 TanStack Ship 吗?
可以,但不是一键导出。Supabase 表转为 D1 表,Lovable 的 React 路由转为 TanStack Router 路由,认证和计费层需要重写。我们已经帮助过几位创始人完成这个迁移。计划投入一至两周的工程时间。
哪个开箱即用的 SEO 更好?
TanStack Ship,毫无悬念。TanStack Start 默认服务端渲染;Lovable 是客户端渲染。对于内容驱动的 SaaS,这件事在发布时就很关键。
两个都需要吗?
与我们合作的大多数创始人都在不同阶段同时使用两者。原型阶段用 Lovable,生产发布用 TanStack Ship。两者是互补的。
关于本文
- 本文由 Huifer 撰写,独立开发者及 TanStack Ship 维护者。五个测试均可在两个平台上用同一套规范复现。基准数据来自作者 2026 年 4 月的实际运行。
- 已验证来源: Lovable 文档 · TanStack Start 文档 · Cloudflare Workers 文档 · Stripe Webhook 文档 · Better Auth 文档 · Drizzle ORM 文档 · Supabase 文档
- 最近更新: 2026-05-15 · 更新日志
开始使用 TanStack Ship——当你准备好交付给付费客户时。立即体验 TanStack Ship →