Shopify 结账体验

Checkout UI 扩展装错包版本导致结账区块空白

现象#

依赖升级后 shopify app deploy 显示成功,结账页该区块却渲染成空白,Console 里 shopify.extension 是 undefined,编辑器里只剩应用名。

原因#

  • 包版本与 API 版本编号不同,2025-07 对应 npm 的 2025.7.x,装 latest 会跨版本
  • 两个 ui-extensions 包的版本必须一致,混装时 hook 取不到宿主 API
  • toml 根级 api_version 决定宿主注入哪版 API,与 package.json 里的版本无关
  • React 要停在 18,19 的调度会让扩展在远程 DOM 里挂载失败

处理步骤#

  1. 执行 npm ls 查两个 ui-extensions 包,确认版本完全一致
  2. 按 toml 里的版本装依赖:npm i @shopify/ui-extensions-react@2025-07
  3. import 路径统一写 @shopify/ui-extensions-react/checkout
  4. 在区块里打印 shopify.extension.apiVersion,与 toml 里的值逐字比对
  5. 重新 shopify app deploy 后到结账编辑器移除旧块,再添加一次

验收标准#

区块正常渲染,Console 里 shopify.extension.apiVersion 与 toml 的版本一致,编辑器里可以把该块拖到其他位置。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。