Shopify 到 Headless 迁移:Next.js、Hydrogen 和 Remix 指南
在过去三年中,我已经将十多个 Shopify 商店迁移到 headless 架构。有些进展顺利,有些则是噩梦。区别几乎总是归结为规划 — 具体来说,是团队在编写第一行代码之前是否理解他们实际上在做什么。
本指南涵盖了我希望在第一次 headless Shopify 迁移之前有人告诉我的一切:选择哪个前端框架、如何保护你的 SEO 排名、如何在切换期间实现零停机、实际成本是多少,以及基于商店复杂性的现实时间表。没有含糊其辞。没有不解释原因的"视情况而定"。
目录
- 为什么要从 Shopify 迁移到 Headless?
- Headless Shopify 架构解析
- 选择你的前端:Next.js 与 Hydrogen 与 Remix
- 分步迁移流程
- 迁移期间的 SEO 保护
- 零停机迁移策略
- 定价和时间表分解
- 常见迁移陷阱
- 何时 Headless 不是正确选择
- 常见问题

为什么要从 Shopify 迁移到 Headless?
让我们先把这个问题搞清楚:标准 Shopify 对大多数商店来说都很好。如果你的年销售额在 200 万美元以下,你的主题能满足你的需求,你可能不需要 headless。说真的。比起劝人们进行这次迁移,我劝阻他们的次数更多。
但有合理的理由去选择 headless:
- 性能瓶颈:Liquid 主题有渲染瓶颈。即使使用 Online Store 2.0 和 Dawn,你也受限于 Shopify 的服务器端渲染管道。Headless 商店一致地实现了低于 1 秒的 LCP 分数。
- 自定义体验:产品配置器、AR 试穿、复杂筛选、个性化引擎 — 这些在 Liquid 中构建会很痛苦。
- 多店铺前端:一个后端为你的 DTC 站点、批发门户、移动应用和国际商店提供支持。
- 内容丰富的品牌:如果你的品牌严重依赖编辑内容、画册和故事讲述,将 headless CMS 与 Shopify 的商务引擎配对会给你两个世界的最佳体验。
- 开发者体验:你的团队想在 React/TypeScript 中工作,而不是 Liquid。这比人们承认的更重要。
性能收益是真实的且可衡量的。在 2026 年,Google 的核心网页活力直接影响你的搜索排名。我迁移到 headless 的商店通常看到 LCP 改善 30-50% 和总阻塞时间改善 40-60%。这转化为可衡量的转化率提高 — Shopify 自己的数据表明页面速度每改善 1%,转化率可能增加 0.7%。
Headless Shopify 架构解析
当人们说"headless Shopify"时,他们指的是将前端(客户看到的)与后端(Shopify 的商务引擎)分离。你保留 Shopify 用于产品、库存、订单、结账和支付。你构建一个通过 Storefront API 与 Shopify 通信的自定义前端。
这是典型的架构:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ 自定义前端 │────▶│ Storefront API │────▶│ Shopify 后端 │
│ (Next.js/H2/Remix)│ │ (GraphQL) │ │ (产品、购物车、 │
│ │ │ │ │ 订单等) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Headless CMS │
│ (Sanity、Contentful、│
│ Storyblok) │
└─────────────────┘
Shopify Plus 商户可以访问 Checkout Extensibility API,这允许你在不重定向到 Shopify 的托管结账的情况下自定义结账。对于非 Plus 商店,客户仍然会被重定向到 checkout.shopify.com 进行实际购买 — 这其实不是一个糟糕的体验,但它是一个用户体验中断。
Storefront API
所有内容都通过 Shopify 的 Storefront API 运行,这是一个 GraphQL 端点,处理:
- 产品查询和集合
- 购物车管理(创建、更新、删除行项目)
- 客户认证
- 内容(元字段、元对象)
- 商店本地化和货币
API 有速率限制 — 单个应用每秒 50 个成本点。在实践中,如果你缓存得当,这很少是个问题,但在你未计划的闪购期间可能会出现问题。
# 示例:获取带有变体的产品
query ProductQuery($handle: String!) {
product(handle: $handle) {
id
title
descriptionHtml
priceRange {
minVariantPrice {
amount
currencyCode
}
}
variants(first: 100) {
edges {
node {
id
title
availableForSale
price {
amount
}
selectedOptions {
name
value
}
}
}
}
images(first: 10) {
edges {
node {
url
altText
width
height
}
}
}
}
}
选择你的前端:Next.js 与 Hydrogen 与 Remix
这是大多数团队卡住的地方。这是我用所有三个平台构建生产商店后的诚实看法。
| 功能 | Next.js 15 | Hydrogen 2026 | Remix (Shopify) |
|---|---|---|---|
| 框架成熟度 | 非常成熟,庞大的生态系统 | 成熟中,Shopify 特定 | 成熟(合并到 React Router 7) |
| Shopify 集成 | 通过 Storefront API 手动集成 | 第一方,内置 hooks | 通过 Hydrogen UI 很好 |
| 托管 | Vercel、Netlify、自托管 | Oxygen (Shopify) 或自托管 | 任何地方,但针对 Oxygen 优化 |
| 学习曲线 | 中等 | 中等-高 | 中等 |
| 社区/招聘 | 庞大 | 小但增长中 | 中等 |
| SSR/SSG 灵活性 | 优秀(App Router) | SSR 重点(流式) | SSR 重点(loaders) |
| 缓存控制 | ISR、按需重新验证 | Oxygen 子请求缓存 | 标准 HTTP 缓存 |
| 最适合 | 有 React 经验的团队,复杂内容需求 | Shopify 原生团队,简单到中等商店 | 想要 Shopify 推荐路径的团队 |
Next.js:安全的选择
Next.js 是我对大多数团队的建议,特别是如果你将 Shopify 与 headless CMS(如 Sanity 或 Contentful)配对。生态系统是巨大的,招聘更容易,你通过 App Router 的服务器组件获得令人难以置信的灵活性。
缺点?你必须自己连接 Shopify 集成。没有针对 Next.js 的官方 Shopify SDK(尽管社区包如 @shopify/hydrogen-react 为你提供购物车 hooks 和实用程序)。你会花更多时间在样板代码上。
我们在 Social Animal 用 Next.js 构建很多 headless Shopify 商店 — 对于电商项目,它是我们最受欢迎的堆栈。
Hydrogen:Shopify 的官方框架
Hydrogen 是 Shopify 的官方 headless 框架,建立在 Remix(现在是 React Router 7)之上。它附带预构建的产品、购物车和 SEO 组件 — 加上与 Oxygen(Shopify 的边缘托管平台)的紧密集成。
吸引力很清楚:更少的样板代码、Shopify 优化的缓存和一个在 Oxygen 上能正常工作的部署故事。最近的版本带来了重大改进,包括更好的 TypeScript 支持和购物车操作的乐观 UI 更新。
缺点?社区更小,当你卡住时资源更少,你在某种程度上被锁定在 Shopify 的生态系统中。如果你曾想交换商务后端,你会重写比使用 Next.js 更多的代码。
Remix / React Router 7
这是令人困惑的部分:Remix 已被合并到 React Router 7。Hydrogen 建立在 Remix 上。所以在大多数情况下,"Shopify 的 Remix"实际上意味着 Hydrogen。
如果你想使用不带 Hydrogen 的 Shopify 特定抽象的 React Router 7,你可以。你会获得相同的 loader/action 模式、相同的流式 SSR 和对 Shopify 集成的完全控制。如果你已经是一个 Remix 团队并希望获得最大灵活性,这就有了意义。
我的建议
对于内容丰富、页面布局复杂的品牌:Next.js + headless CMS。对于想要最快速路上线的直接商店:Oxygen 上的 Hydrogen。对于已经投资 Remix 生态系统的团队:带有 Hydrogen UI 组件的 React Router 7。

分步迁移流程
这是我对每次迁移都遵循的流程。这很无聊。它有效。
第 1 阶段:审计和规划(2-3 周)
- 爬取现有站点 — 使用 Screaming Frog 或 Sitebulb 来目录化每个 URL、重定向、规范标签和结构化数据块。导出这个。你之后会需要它。
- 记录所有集成 — Klaviyo、Yotpo 评论、忠诚度计划、订阅应用(Recharge、Loop)、支付网关。每一个。
- 映射 URL 结构 — 你的新 URL 会与旧的匹配吗?Shopify 使用
/products/product-handle和/collections/collection-handle。如果你改变这些,你需要重定向。 - 识别自定义功能 — 标准浏览和购买之外的任何东西。礼品卡、捆绑、批发定价、多货币、B2B。
- 选择你的堆栈 — 前端框架、CMS、托管、CDN。
第 2 阶段:构建前端(6-12 周)
这是实际开发发生的地方。关键领域:
- 产品页面,带有变体选择、图像库、评论集成
- 集合页面,带有筛选、排序、分页
- 购物车,带有实时库存检查和追加销售
- 搜索 — Shopify 的预测搜索 API 或第三方如 Algolia
- 客户账户 — 登录、订单历史、地址管理
- CMS 驱动的页面 — 主页、关于、登陆页面
- 结账重定向 — 处理到 Shopify 结账的交接
// 示例:带有 ISR 的 Next.js 产品页面
import { getProduct } from '@/lib/shopify'
import { ProductDetails } from '@/components/product-details'
export async function generateStaticParams() {
const products = await getAllProductHandles()
return products.map((handle) => ({ handle }))
}
export default async function ProductPage({
params
}: {
params: { handle: string }
}) {
const product = await getProduct(params.handle)
if (!product) notFound()
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(generateProductJsonLd(product)),
}}
/>
<ProductDetails product={product} />
</>
)
}
export const revalidate = 60 // ISR: 每 60 秒重新验证一次
第 3 阶段:集成和质量保证(2-4 周)
连接所有第三方服务。测试所有内容。我是说所有内容:
- 跨所有支付方法下达测试订单
- 测试折扣代码、礼品卡、自动折扣
- 验证分析跟踪(GA4、Meta Pixel、TikTok Pixel)
- 在预期流量下对 Storefront API 调用进行负载测试
- 在实际设备上测试,而不仅仅是 Chrome DevTools
第 4 阶段:切换(1-2 天)
实际切换。在下面的零停机部分中有更多信息。
迁移期间的 SEO 保护
这是迁移出错的地方。我见过商店因为有人忘记了 URL 重定向而损失 40% 的有机流量。不要成为那个团队。
URL 映射
在编写单个重定向规则之前,创建一个完整的 URL 映射文档。旧网站上的每个 URL 都需要一个目标新网站上的地址。
旧:/collections/summer-2024
新:/collections/summer-2024 ← 相同?好的,不需要重定向。
旧:/blogs/news/our-story
新:/journal/our-story ← 不同?需要 301 重定向。
旧:/pages/about-us
新:/about ← 不同?需要 301 重定向。
结构化数据
Shopify 主题包括基本的结构化数据。当你转向 headless 时,你负责自己实现它。至少:
Product架构,带有offers、aggregateRating- 导航的
BreadcrumbList - 品牌的
Organization - 带有
SearchAction的 sitelinks 搜索的WebSite - 适用时的
FAQPage
元标签和规范
每个页面都需要适当的 <title>、<meta description>、规范 URL 和 Open Graph 标签。在 Next.js 中,使用 Metadata API:
export async function generateMetadata({ params }): Promise<Metadata> {
const product = await getProduct(params.handle)
return {
title: product.seo.title || product.title,
description: product.seo.description || product.description,
openGraph: {
images: [product.featuredImage?.url],
},
alternates: {
canonical: `https://yourstore.com/products/${params.handle}`,
},
}
}
XML 站点地图
从 Shopify 的数据动态生成站点地图。包括产品、集合和 CMS 页面。迁移后立即将其提交到 Google Search Console。
迁移前 SEO 检查清单
- 完整的 URL 映射文档
- 配置和测试的 301 重定向
- 实现并验证的结构化数据
- 从 Shopify SEO 字段提取的元标签
- 动态生成的 XML 站点地图
- 正确配置的 robots.txt
- 通知 Google Search Console 域名更改(如适用)
- 更新的内部链接到新 URL 结构
- 从 Shopify 保留的图像替代文本
零停机迁移策略
零停机不是魔法。这是 DNS 管理和准备。
蓝绿部署方法
- 在临时域上构建和部署新站点(例如,
new.yourstore.com) - 同时运行两个站点至少一周,彻底测试新站点
- 配置你的 CDN/DNS 以支持即时切换(Cloudflare、Vercel 或 Netlify 都支持这一点)
- 切换 DNS 以指向新前端 — TTL 应提前设置为 60 秒
- 监控所有内容:错误率、404、转化率、Core Web Vitals
代理方法(更安全)
对于超过 100 万美元/月的商店,我倾向于基于代理的迁移:
- 在旧网站和新网站前面放置反向代理(Cloudflare Workers、Vercel Edge Middleware)
- 路由流量逐页 — 从低风险页面如
/about开始 - 逐步将页面迁移到新前端,持续 2-4 周
- 在移动下一批之前监控每个页面的性能
- 产品和集合页面最后(最高收入风险)
这种方法增加了复杂性,但允许你在影响整个商店之前捕获问题。
// Vercel Edge Middleware 示例,用于渐进式迁移
import { NextResponse } from 'next/server'
export function middleware(request: NextRequest) {
const { pathname } = request.nextUrl
// 已迁移到新前端的页面
const migratedPaths = ['/about', '/contact', '/journal']
if (migratedPaths.some(path => pathname.startsWith(path))) {
return NextResponse.next() // 从新前端提供
}
// 所有其他内容代理到旧 Shopify 商店
return NextResponse.rewrite(
new URL(pathname, 'https://old-store.myshopify.com')
)
}
定价和时间表分解
让我们谈论真实数字。这些是基于我在 2026 年看到的项目,范围从简单的 DTC 商店到复杂的多市场运营。
| 商店复杂性 | 时间表 | 机构成本 | 自由职业者成本 |
|---|---|---|---|
| 简单(< 50 个产品、基本页面、标准结账) | 8-12 周 | $40,000 - $75,000 | $20,000 - $40,000 |
| 中等(50-500 个产品、CMS、订阅、多货币) | 12-20 周 | $75,000 - $150,000 | $40,000 - $80,000 |
| 复杂(500+ 产品、B2B+DTC、自定义结账、多个集成) | 20-32 周 | $150,000 - $300,000+ | $80,000 - $150,000 |
持续成本
不要忘记经常性费用:
- Shopify Plus:$2,300/月(对于结账可扩展性是必需的,对 headless 是推荐的)
- 托管:$20-500/月(Vercel Pro 是 $20/用户,Oxygen 包含在 Shopify 中)
- Headless CMS:$0-500/月(Sanity、Contentful、Storyblok 都有免费层)
- 搜索:$0-500/月,如果使用 Algolia 或类似的
- 维护:预算初始构建成本的 10-15% 年度费用
对于探索 headless Shopify 迁移对其特定情况成本的团队,我们在这里分解了我们的定价方法。我们也很乐意在快速通话中为事情定范围。
常见迁移陷阱
1. 低估购物车
购物车看起来很简单,直到你考虑:折扣代码、自动折扣、礼品卡、行项目属性、购物车备注、估计运费、税收计算和购物车级元字段。为购物车功能预算两倍的时间。
2. 忘记应用
你依赖的 Shopify 应用生态系统?大多数应用将 JavaScript 注入到你的 Liquid 主题。转向 headless 意味着你需要基于 API 的替代方案或针对评论、愿望列表、忠诚度计划等的自定义实现。
3. 结账自定义
没有 Shopify Plus($2,300/月),你无法自定义结账体验。客户将被重定向到 Shopify 的托管结账,这会造成视觉上的脱节。Plus 商户可以使用 Checkout Extensibility,但它仍然比完全自定义结账更受限制。
4. 不进行早期性能测试
Storefront API 增加了延迟。如果你进行 8 次 API 调用来呈现产品页面,你会感受到它。积极缓存,使用 GraphQL 片段来最小化过度获取,并在可能的情况下实现流式 SSR。
5. 忽视内容团队
你的营销团队在 Shopify 的管理员中管理内容。现在他们需要一个 headless CMS。预算时间用于培训和构建实际上令人愉快的内容编辑体验。这就是headless CMS 开发专业知识真正重要的地方。
何时 Headless 不是正确选择
我会直言不讳:headless Shopify 不适合所有人。如果出现以下情况,请不要迁移:
- 你的商店年销售额在 100 万美元以下,你没有复杂的自定义需求
- 你没有预算用于持续开发和维护
- 你的团队没有 React 开发人员(或没有预算来雇用/聘用他们)
- 你对当前主题的性能和功能感到满意
- 你主要在寻找"酷科技"故事,而不是解决实际业务问题
Shopify 的 Online Store 2.0 与优化良好的主题可以在 Lighthouse 上获得 90+。有时正确的答案是优化你已有的东西,而不是从头开始重建。
如果你在犹豫,考虑从混合方法开始:保留你的 Shopify 主题但将特定的高影响力页面(如你的主页或登陆页面)构建为 headless。你可以在现有主题旁边使用 Shopify 的 Storefront API。这让你在承诺完全迁移之前证明价值。
常见问题
从 Shopify 迁移到 headless 需要多长时间? 对于典型的中等复杂度商店,预计从启动到启动需要 12-20 周。少数产品和基本功能的简单商店可以在 8-12 周内发送。具有自定义结账和广泛集成的复杂多市场商店通常需要 20-32 周。审计和规划阶段本身应该是 2-3 周 — 不要跳过它。
迁移到 headless Shopify 时我会丧失 SEO 排名吗? 如果做得正确,就不会。关键是:保持相同的 URL 结构(或设置适当的 301 重定向)、在每个页面类型上实现结构化数据、保留元标签和规范 URL,以及在启动后立即向 Google Search Console 提交更新的站点地图。我通常看到迁移后排名波动 1-2 周,一旦 Google 识别出更好的 Core Web Vitals 分数,就会改进。
Headless 需要 Shopify Plus 吗? 技术上不需要。Storefront API 在所有 Shopify 计划上都可用。但是,Shopify Plus 为你提供 Checkout Extensibility(自定义结账体验)、更高的 API 速率限制和访问 Oxygen 托管。对于认真的 headless 项目,Plus 每月 $2,300 几乎总是值得的。
Hydrogen 和将 Next.js 与 Shopify 一起使用有什么区别? Hydrogen 是 Shopify 的官方 headless 框架,建立在 Remix/React Router 7 之上。它开箱即用地包括 Shopify 特定的组件、hooks 和实用程序,加上 Oxygen 上优化的部署。Next.js 需要你自己构建 Shopify 集成,但为你提供了更大的生态系统、更多的托管选项和对复杂内容架构的更好支持。大多数机构,包括我们的,基于特定的项目需求在这里有很强的观点。
我可以通过零停机迁移到 headless Shopify 吗? 是的,使用蓝绿部署(DNS 切换)或渐进式代理迁移。蓝绿方法通过 DNS 一次切换所有流量,而代理方法在数周内逐步迁移页面。两者都有效。代理方法对于高收入商店更安全,但增加了复杂性。
Headless Shopify 迁移成本多少? 机构成本通常从简单商店的 $40,000 到复杂多市场运营的 $300,000+ 不等。自由职业者费率大约是机构成本的 50-60%,但可能缺少项目管理结构和专家数量。持续成本包括 Shopify Plus($2,300/月)、托管($20-500/月)、CMS($0-500/月)和维护(初始构建成本的 10-15% 年度)。
对于 headless Shopify,我应该使用 Astro 而不是 Next.js 或 Hydrogen 吗? Astro 是内容丰富的站点(带有可交互的岛屿)的绝佳选择,我们已经构建了几个由 Astro 驱动的店铺。它对于目录式商店运作良好,其中大多数页面是静态的,你只需要 React(或 Svelte、Vue)用于购物车等交互式组件。但是,对于具有大量客户端交互性的商店 — 实时库存、复杂筛选、即时搜索 — Next.js 或 Hydrogen 的完整 React 运行时通常是更好的适配。
迁移到 headless 后我的 Shopify 应用会发生什么? 大多数注入前端代码的 Shopify 应用(弹出窗口、小部件、评论显示)不会开箱即用。你需要直接使用应用的 API、找到 headless 兼容的替代方案,或构建自定义实现。仅在后端运行的应用(库存管理、运费、ERP 集成)通常继续工作而无需更改。始终在规划阶段审计你的应用堆栈。