Lovable vs TanStack Ship: 5 个真实应用测试

Lovable vs TanStack Ship: 5 个真实应用测试。Lovable Wins 的地方(速度),TanStack Ship Wins 的地方(认证、计费、规模)。含代码。

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

本文由 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 密钥。

typescript
// 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 策略;样板在查询层强制执行租户边界。

typescript
// 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. 第 1-4 周: 用 Lovable 做原型和设计合伙人 pitch
  2. 第 5-8 周: 一旦出现付费客户,迁移到 TanStack Ship
  3. 第 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。两者是互补的。


关于本文

开始使用 TanStack Ship——当你准备好交付给付费客户时。立即体验 TanStack Ship →