过去六个月,我一直在观察团队将 AI 构建器原型部署到生产环境,然后在三个月后匆忙重写它们。Bolt 和 Lovable 确实是令人印象深刻的工具——我两个都用过——但在"可工作的演示"和"生产应用程序"之间存在一个危险的鸿沟,这两个工具的营销都不想谈论。

这篇文章是我希望在我们为客户部署 Lovable 生成的 MVP 并发现其 Supabase RLS 策略存在暴露用户数据的巨大漏洞之前有人写过的诚实分析。我们在测试环境中发现了它。并非所有人都那么幸运。

让我们深入探讨当你尝试将这些 AI 构建的应用程序带到演示阶段之外时实际发生的情况——以及何时有意义迁移到自定义 Next.js 构建。

目录

Bolt vs Lovable 生产就绪性:安全性、代码质量与扩展性

2026 年 AI 构建器的现状

Bolt 和 Lovable 都已显著成熟。Lovable 在短短两个月内达到 2000 万美元 ARR——欧洲创业公司历史上最快的速度——而 Bolt.new 在六个月内达到 4000 万美元 ARR。这些数字告诉你一些重要的事情:人们正在用这些工具构建真实的东西,而不仅仅是试试。

但增长数字并不等于生产就绪性。

以下是每个工具目前的位置:

Lovable 采用设计优先的方法,生成带有 Supabase 作为预配置后端的 React + TypeScript 应用程序。它生成真正干净的代码——shadcn/ui 组件、适当的加载状态、错误边界、响应式布局。代码质量是 AI 构建器中最好的。

Bolt 遵循代码优先的理念,为开发者提供一个浏览器内 IDE,支持 React、Vue、Svelte 和原生 JS。它使用 Claude 作为后端,具有一个巧妙的"diffs"功能,仅更新修改的代码段而不是重新生成整个文件。Bolt Cloud 现在包括内置数据库、身份验证、存储和托管。

两个工具都可以让你在一个下午从想法进展到可工作的原型。问题是那个下午之后会发生什么。

安全限制:这两个工具都没有告诉你的

这是最重要的部分,也是你在其他任何地方会发现最少覆盖的部分。我已经在多个项目上审计了两个工具的输出,模式是一致的。

Lovable 的安全概览

Lovable 自动生成 Supabase RLS(行级安全)策略。理论上,这很好——RLS 是一个可靠的安全模型。实际上,AI 生成的策略遵循通常不符合你实际授权要求的通用模式。

这是一个真实的例子。我们提示 Lovable 构建一个具有基于团队权限的多租户 SaaS。生成的 RLS 策略看起来像这样:

CREATE POLICY "Users can view own team data"
  ON public.projects
  FOR SELECT
  USING (auth.uid() IN (
    SELECT user_id FROM team_members
    WHERE team_id = projects.team_id
  ));

看起来合理吧?但它错过了一个关键的边界情况:已停用的团队成员。没有检查 team_members.active = true,意味着曾经在团队中的任何人仍然可以读取所有项目数据。AI 不理解你关于访问撤销的业务规则——它生成结构正确但语义不完整的策略。

我们在 Lovable 输出中发现的其他安全漏洞:

  • 默认情况下没有速率限制 API 端点
  • 缺少输入验证 服务端函数——客户端验证存在但可以被绕过
  • Supabase 服务角色密钥 有时在客户端代码中被引用(这是一个严重的漏洞)
  • 没有 CSRF 保护 超出 Supabase Auth 本身提供的
  • 身份验证令牌处理 将令牌存储在 localStorage 而不是 httpOnly cookie 中

Bolt 的安全概览

Bolt 的安全情况可以说更糟,因为它的意见性较少。你获得了更多框架灵活性,但这意味着 AI 对你的安全架构做出了更多假设。

Bolt Cloud 比 Lovable 的 Supabase 集成更新,生成的安全策略需要更仔细的验证。我们看到过:

  • 环境变量 在客户端包中硬编码
  • 缺少身份验证中间件 在 API 路由上——AI 在一些路由上生成身份验证检查但遗漏了其他的
  • SQL 注入向量 在原始查询构造中(不使用 ORM 时)
  • 没有内容安全策略标头 在部署配置中
  • CORS 设置为通配符 (*) 在开发中,延续到生产构建

这是一个 Bolt 生成的具有 SQL 注入漏洞的 API 路由,曾经被部署过:

// 由 Bolt 生成——不要部署这个
app.get('/api/users', async (req, res) => {
  const { search } = req.query;
  const result = await db.query(
    `SELECT * FROM users WHERE name LIKE '%${search}%'`
  );
  res.json(result.rows);
});

任何开发者都会立即看到这一点。但这些工具的全部要点是非开发者也可以使用它们。这就是危险所在。

真正的安全问题

两个工具都不执行威胁建模。它们不能,因为它们不理解你的威胁模型。它们生成有效的代码,而不是对抗性输入安全的代码。如果你在构建处理 PII、财务数据或医疗保健信息的任何东西,AI 生成的代码需要在上线前进行完整的安全审计。句号。

代码质量内幕

我会在应得之处给予信用:两个工具为简单的应用程序生成的代码都出乎意料的不错。随着复杂性增加,问题就会出现。

Lovable 的代码输出

Lovable 的 TypeScript 输出确实很好。组件结构良好,类型基本正确,使用 shadcn/ui 意味着你获得可访问、经过充分测试的 UI 原语。模拟数据使初始构建感觉像完成的产品。

但随着复杂性的增加,以下内容会退化:

  • 状态管理变得混乱。 Lovable 倾向于对前几个组件进行 prop 钻取,然后当树变深时突然引入 React context。你最终会得到一个很难推理的模式混合。
  • 没有代码分割。 一切都进入一个包。对于原型,有什么关系?对于有 50+ 路由的生产,你的初始加载时间会大幅增加。
  • 重复的逻辑。 我们发现相同的数据获取逻辑在一个项目中的 12 个组件中被复制粘贴。AI 不会重构——它只是添加。
  • 测试是不存在的。 没有单元测试,没有集成测试,没有端到端测试。零。

Bolt 的代码输出

Bolt 生成具有 React、Tailwind 和 Node.js 的精致全栈 JavaScript。基于差异的方法意味着迭代更快和更有针对性。但:

  • 文件间的模式不一致。 一个组件使用 async/await,下一个使用 .then() 链。一个文件有适当的错误处理,相邻的文件没有。
  • 预览和部署可靠性变化。 有时预览完美工作;有时它以很难调试的方式破损,因为你没有编写代码。
  • 对简单功能过度工程。 我们要求 Bolt 构建一个联系表单,得到了一个完整的表单构建器,具有动态字段配置、验证模式生成器和提交队列。很酷,但不是我们需要的。

代码质量比较

方面 Lovable Bolt
类型安全 强(全程 TypeScript) 混合(默认 JS,可选 TS)
组件架构 一致,设计系统对齐 灵活但不一致
错误处理 基本错误边界,存在一些漏洞 文件间不一致
测试 未生成 未生成
包优化 最小 最小
可访问性 好(shadcn/ui) 可变
文档/注释 稀疏但足够 更详细,有时误导

Bolt vs Lovable 生产就绪性:安全性、代码质量与扩展性 - 架构

扩展边界:故障点

这是没人博客谈论的部分——当你的 Lovable 或 Bolt 原型实际获得用户时会发生什么。

数据库扩展

Lovable 将你锁定在 Supabase 中。这本身并不坏——Supabase 可以处理显著的负载。但 AI 生成的数据库模式很少包括适当的索引策略。我们有一个 Lovable 生成的应用程序,在有 1,000 个用户时运行完美,在 10,000 个用户时爬行至停顿,因为一个频繁查询的表在每个列表视图的 ORDER BY 中使用的 created_at 列上没有索引。

Bolt 让你选择数据库,这听起来像灵活性,但实际上意味着 AI 生成次优查询的空间更大。没有 Lovable 的 Supabase 约定可以依靠,Bolt 生成的数据库代码倾向于更天真。

大规模前端性能

两个工具都不生成考虑性能预算的应用程序。以下是我们在一个中等复杂的仪表板应用程序(大约 30 个组件,8 个路由)上测量的内容:

指标 Lovable Bolt 自定义 Next.js
初始包大小 487 KB 523 KB 142 KB
Lighthouse 性能 62 58 94
交互时间 3.8 秒 4.2 秒 1.1 秒
最大内容绘制 2.9 秒 3.4 秒 0.8 秒
代码分割 基于路由 + 动态
图像优化 基本 Next/Image 带 AVIF

这些数字来自我们自己的测试。你的结果会有所不同,但模式是一致的:AI 生成的应用程序比手工优化的等效物重 3-4 倍。

Supabase 上限

这值得单独说明。Lovable 紧密的 Supabase 耦合意味着你继承 Supabase 的限制:

  • Edge Functions 有 150ms 的冷启动——对大多数情况都可以,对实时功能很痛苦
  • 连接池 在计划级别处于上限——Pro 计划给你 50 个直接连接
  • 实时订阅 不能线性扩展——我们在 Pro 层上看到超过 500 个并发连接的性能下降
  • 不支持跨多个表的复杂事务 具有适当的回滚语义

如果你的应用程序超出 Supabase,无论你是从 Lovable 开始还是从零开始构建,你都在看一个显著的重写。

头对头比较

功能 Lovable Bolt 自定义 Next.js
MVP 的时间 小时 小时 天到周
框架 仅 React + Vite React、Vue、Svelte、原生 Next.js(React)
后端 Supabase(锁定) 灵活(Bolt Cloud 或自定义) 任何
身份验证 Supabase Auth(内置) Bolt Cloud Auth 或自定义 NextAuth、Clerk、自定义
安全基准 RLS 策略(需要审计) 最小(需要一切) 你控制它
代码导出 GitHub 同步 完整代码访问 N/A——它是你的
SSR/SSG 否(仅客户端) 有限 完整支持
SEO 差(SPA) 差(SPA) 优秀
大规模成本 $25+/月工具 + Supabase $20+/月工具 + 基础设施 仅托管
供应商锁定 高(Supabase) 中等(Bolt Cloud)
生产就绪性 40% 到位 30% 到位 你决定

何时迁移到自定义 Next.js

并非每个项目都需要迁移。我想清楚这一点。如果你在为一个 10 人的团队构建内部工具,Lovable 生成的应用程序可能会无限期地为你服务。迁移对话在特定条件出现时开始。

现在迁移,如果:

  1. 你需要 SEO。 Bolt 和 Lovable 都生成客户端渲染的 SPA。如果有机搜索流量对你的业务很重要,你需要服务端渲染或静态生成。Next.js 本地处理这个。对于营销网站、博客、电子商务和任何内容驱动的应用程序,这本身就是一个破坏交易的问题。

  2. 你在处理敏感数据。 财务信息、医疗记录、大规模的 PII——这些需要任何 AI 构建器都无法提供的安全保证。你需要自定义中间件、适当的审计日志、静态加密和一个已由理解你特定合规要求的人类审查过的安全模型。

  3. 性能是商业指标。 如果页面加载时间直接影响你的收入(它对电子商务确实有影响——Amazon 的著名 100ms = 1% 收入发现仍然成立),你承不起 3-4 秒的 TTI。

  4. 你需要自定义后端逻辑。 与 Stripe 的支付处理超出基本结账、webhook 处理、后台任务、第三方 API 编排、复杂的授权——没有任何这个被 AI 构建器很好地服务。

  5. 你的团队已经增长超过 3 个开发者。 没有测试、没有一致模式、没有文档的 AI 生成代码——当多个人需要在代码库中工作时,它变成了一个责任。

停留在 AI 构建器中,如果:

  • 你仍在验证产品市场匹配
  • 应用程序仅限内部,用户基础很小
  • 你的团队中没有开发者,也没有他们的预算
  • 迭代的速度比现在的代码质量更重要

我们通过我们的 Next.js 开发能力 帮助团队进行这种转变。目标不是从头开始重建一切——而是前进可行的内容,替换不可行的内容。

迁移剧本

当迁移决定做出时,这是我们遵循的过程。这不是"扔掉一切重新开始"。那是浪费。

步骤 1:审计现有代码库

从 Lovable 导出代码(通过 GitHub 同步)或 Bolt(直接下载)。通过静态分析运行它:

# 安装并运行分析工具
npx eslint . --ext .ts,.tsx --report-unused-disable-directives
npx tsc --noEmit --strict
npx bundlesize
npx depcheck

你在寻找:未使用的依赖、被压制的类型错误、安全反模式和死代码。

步骤 2:识别可重用组件

Lovable 的 shadcn/ui 组件通常值得保留。它们结构良好,遵循可访问性指南。Bolt 的组件变化更多,但通常有很好的 UI 逻辑,只需要清理。

我们通常挽救 30-50% 的前端组件和 0-10% 的后端逻辑。

步骤 3:构建 Next.js 基础

// next.config.ts——生产就绪的起点
import type { NextConfig } from 'next';

const config: NextConfig = {
  reactStrictMode: true,
  poweredByHeader: false,
  images: {
    formats: ['image/avif', 'image/webp'],
  },
  headers: async () => [
    {
      source: '/(.*)',
      headers: [
        { key: 'X-Frame-Options', value: 'DENY' },
        { key: 'X-Content-Type-Options', value: 'nosniff' },
        { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
        {
          key: 'Content-Security-Policy',
          value: "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline';",
        },
      ],
    },
  ],
};

export default config;

注意这里的内容,AI 构建器不生成什么:安全头、图像优化配置、启用的严格模式。这些是生产的表现项目。

步骤 4:替换后端

如果你在 Lovable/Supabase 中,你有选项:

  • 保持 Supabase 但添加适当的中间件、自定义 RLS 策略和由你的团队审查的边缘函数
  • 迁移到自定义后端 带 Next.js API 路由或单独的服务(Node.js、Go,无论什么适合)
  • 采用不同的 BaaS 如 Firebase、Neon 或 PlanetScale,取决于你的数据模型

对于已经投资 Supabase 生态系统的团队,我们经常建议保留它,但用具有服务端验证的适当数据访问层来包装它。我们的 无头 CMS 开发 工作经常涉及这种后端转变。

步骤 5:添加 AI 构建器跳过的内容

  • 测试: Jest + React Testing Library 用于单元/集成,Playwright 用于端到端
  • 监控: Sentry 用于错误追踪,Vercel Analytics 或 PostHog 用于性能
  • CI/CD: GitHub Actions 带 lint、类型检查、测试和预览部署阶段
  • 可观测性: 结构化日志、健康检查、正常运行时间监控

成本分析:构建 vs 重建

让我们谈谈金钱。这是每个创始人问的问题:"我们已经在 Lovable/Bolt 中构建了它。正确地做它需要花费多少?"

方法 时间表 成本范围 风险级别
停留在 Lovable/Bolt(添加手动修复) 2-4 周 $3,000-8,000 高(修补基础)
逐步迁移到 Next.js 4-8 周 $15,000-40,000 中等
在 Next.js 中完整重建 6-12 周 $25,000-75,000 低(干净架构)
混合(保留前端,重建后端) 3-6 周 $10,000-30,000 中等

这些数字基于我们在过去一年中范围的项目。你的结果会因复杂性而异,但比率成立。逐步迁移路径——你在其中保留可行的内容并逐步替换不可行的——通常是成本和风险之间的最好平衡。

想要你项目的具体内容?查看我们的 定价页面直接联系

常见问题

Lovable 代码实际上是生产就绪的吗? 不是没有显著的手动审查。Lovable 生成干净、结构良好的 TypeScript 代码,比任何其他 AI 构建器更接近生产就绪——但它仍然缺少适当的安全加固、测试、性能优化和边界情况的错误处理。把它想象成一个强有力的初稿,需要经验丰富的开发者的审查,而不是一个完成的产品。

Bolt.new 可以构建全栈应用程序吗? 是的,特别是带 Bolt Cloud 的 2026 补充(内置数据库、身份验证、存储和托管)。Bolt 给你比 Lovable 更多的框架灵活性——你可以使用 React、Vue、Svelte 或原生 JS。然而,那种灵活性也意味着更少的护栏,生成的后端代码需要比 Lovable 的 Supabase 输出更仔细的安全审计。

从 Lovable 迁移到 Next.js 需要多少费用? 对于一个典型的 MVP,有 5-10 个核心功能,预期在 4-8 周内进行逐步迁移需要 $15,000-$40,000。完整重建运行 $25,000-$75,000,取决于复杂性。好消息是 Lovable 的 30-50% 前端组件通常可以被携带,这相比从零开始降低了成本和时间表。

为什么我不能直接在 Lovable 中修复安全问题并保持使用它? 你可以,对于更简单的应用程序。但 Lovable 的架构有基本限制,补丁无法解决:仅客户端渲染(没有 SEO 的 SSR)、锁定 Supabase 用于后端、没有代码分割、没有内置测试基础设施。如果你的需求不会撞上这些墙,修复安全问题并停留在 Lovable 上是一个完全有效的策略。

Bolt 或 Lovable 对 SaaS 原型更好吗? Lovable 因其 Supabase 集成而在 SaaS 原型中略占优势,它开箱即提供身份验证、数据库和 RLS 策略。你会比 Bolt 更快地拥有一个有用户账户的工作应用程序。然而,如果你需要一个非 React 框架或 Supabase 以外的后端,Bolt 的灵活性使它成为更好的选择,尽管需要更多配置。

AI 生成代码中最大的安全风险是什么? 我们一致看到的顶部风险:在客户端包中硬编码 API 密钥和机密、不完整的行级安全策略,错过边界情况(如已停用的用户保留访问权)、API 端点上缺少速率限制、原始查询中的 SQL 注入、过于宽松的 CORS 配置和存储在 localStorage 中而不是 httpOnly cookie 中的身份验证令牌。这些都不是无法修复的,但你需要知道去寻找。

什么时候我不应该从 AI 构建器迁移? 如果你仍在验证产品市场匹配、你的应用程序仅限内部,少于 50 个用户、你的团队中没有开发者,或迁移的成本超过了更好的性能和安全的业务价值,请停留。你能做的最坏的事情是重建还没有找到市场的产品。

我可以使用 Astro 而不是 Next.js 来进行迁移吗? 绝对可以。如果你的应用程序内容丰富,客户端交互性最小——想想营销网站、文档、博客或内容平台——Astro 通常比 Next.js 更好。Astro 的岛屿架构默认发送零 JavaScript,仅对交互式组件进行水合,为内容集中的网站甚至提供比 Next.js 更好的性能。我们已经做过几个从 Lovable 到 Astro 的迁移,正是针对这个用例。