用 Hydrogen 快速开发:构建商品页
Shopify 更新了 Hydrogen 0.26.0 兼容的教程,演示如何用这款 React 框架快速搭建商品页。开发者可通过 StackBlitz 的 Hello World 模板起步,用 useShopQuery 调 Storefront API 取数据,配合 ProductOptionsProvider 管理变体状态,再用 BuyNowButton 直达结账。
Shopify 更新了 Hydrogen 0.26.0 兼容的教程,演示如何用这款 React 框架快速搭建商品页。开发者可通过 StackBlitz 的 Hello World 模板起步,用 useShopQuery 调 Storefront API 取数据,配合 ProductOptionsProvider 管理变体状态,再用 BuyNowButton 直达结账。
Shopify Data 团队为 Shopify Inbox 构建了一条基于 Apache Beam 的实时买家信号数据管道,向正在与客户聊天的商家推送购物车动作和订单完成两类信号。
Shopify 为 Shop app 构建了基于 React Native 的 App Clip,用于承接“Thank you”页面到打开应用之间流失的买家,用户扫码或点击即可直接查看订单追踪,无需经过 App Store 和 onboarding。
Shopify 详解 Hydrogen 高性能店面的构建模块:基于 React 18 alpha 的流式 SSR 配合 Suspense,实现快速 TTFB 与渐进式 hydration,避免 CSR 的客户端瀑布式请求。
Shopify YJIT 团队用 GitHub Pages、Jekyll 和 GitHub Actions 搭出一套自动运行的基准测试站点,数据每天更新两次,无需人工运维。公开结果显示 YJIT 整体比解释执行的 CRuby 快 20.6%,比 MJIT 快 17.4%;在 Railsbench 上分别快 18.5% 和 21.0%。基准测试代码已开源,接受 pull request。
Shopify Engineering 分享金融软件中处理舍入误差(hanging pennies)的 8 条建议,包括向利益相关者说明舍入发生位置、使用银行家舍入法、选用精度更高的数据类型(如用 double 而非 float)、保持全代码舍入方式一致、显式标注舍入变量、参考政府舍入标准,以及只在必须时才舍入。
Shopify 用 WebAssembly 在自家基础设施上执行第三方 Partner 代码,以解决 App 模式下的扩展与网络延迟问题。其代码执行服务基于 Fastly 开源的 Lucet(Wasm 运行时兼编译器),模块经 Wasm 校验后编译为接近裸机性能的可执行产物,并支持提前编译。Shopify 称 Wasm 满足安全、性能、灵活三项要求,并会持续向所依赖的开源工具回馈。
Shopify 工程团队讲解如何用 Chrome 版 Shopify Theme Inspector 扩展生成火焰图,定位 Liquid 代码的渲染瓶颈。示例中,10 件商品的分页集合渲染耗时 13 ms,循环内访问商品属性后升至 162 ms,商品增至 50 件时达 800 ms;两层嵌套循环为 55 ms,三层为 72 ms。
Shopify 的 AR 团队用 Hack Days 做出了免费工具 Size.link,让消费者用手机摄像头在周围空间里查看商品实际大小,无需安装 App,iOS 和 Android 都能用。
Shopify 的虚拟员工 Kit 从基于启发式规则的系统演进为机器学习驱动的营销助手,通过回归预测商家愿花的预算区间、分类预测出单概率,直接生成一步式广告推荐。早期版本把 Facebook 广告流程简化为选产品和选预算两步,但预算区间硬编码、所有商家选项相同;第二版在 Google Cloud Platform 上实现主动推荐,例如建议商家 Cheryl 为新商品营销花约 $40。
Shopify 新的 Payment Service 通过 API 幂等性避免重复扣款和漏收款,该服务由 Money Infrastructure 团队打造,为 Shopify 与 Billing 系统提供 GraphQL 接口。
Shopify 自研 Shipit Mobile,用于创建、查看和管理移动 App 发布,把 Google Play 和 App Store 的上架流程从多步手动操作改为平台化管理。
Shopify 用协同过滤(CF)为商家推荐商业洞察、App、主题和博客等内容,把用户-物品交互(如 App Store 安装记为 1、未观测记为 0)作为偏好向量,并常采用 LRec 等线性模型学习物品-物品相似度矩阵来预测相关性。由于每个物品单独训练一个模型,训练可任务并行,兼顾可扩展性与可解释性。
Shopify 加入 W3C Web Payments 工作组后,在部分商户上做了一次 A/B 实验,测试 Payment Request API 对结账的影响,核心指标是结账完成率(CCR)保持不变或提升。
Shopify 数据团队提出用 BG/NBD(Beta Geometric / Negative Binomial Distribution)模型衡量非合约型业务的客户留存,替代“N 天无购买即流失”的二元判定。该模型只需每位客户的 Age、Recency、Frequency 三项统计量,即可估算其仍活跃的概率,帮助商家做定向广告、折扣码和客户生命周期价值预测。
Shopify Mobile 采用原生 iOS、Android 加 GraphQL 的混合架构,核心高频功能用原生实现,设置页和报表等次要功能用 Web View 承载。团队通过 JavaScript 中间件拦截 EASDK 调用,把第三方嵌入式应用的导航栏折叠进原生导航栏,无需应用改代码就多回收了 40% 以上的垂直空间。
Shopify 发布首款 VR 应用 Thread Studio,把用户带入虚拟摄影棚,在人体模型上摆放 T 恤设计并调整尺寸与位置,成品可输出为可印刷文件交给 Printful 按需印刷,或直接开设 Shopify 商店。Shopify 认为 VR 不只是虚拟商场,更能呈现沙发、帐篷等产品的真实尺寸与场景,其 VR 团队目前有 5 人,专注面向商家及其顾客的实验与研究。
Shopify 宣布参与 Google 主导的开源项目 AMP,并已开发出一款应用,商家安装后可为所有商品提供 AMP 版本,顾客从 Google 搜索结果到结账页只需两次点击。Google 从今天起在头条轮播之外的一般搜索结果中展示 AMP 内容,Shopify 将在接下来几周向部分商家逐步推出 AMP alpha。该 alpha 应用目前已不再提供,Shopify 称将用其数据指导后续改进。
Shopify 把内部用于缓存 ActiveRecord 模型的库 IdentityCache 从代码库中抽出并开源。它通过 Memcached 做读穿透缓存,用 after_commit 钩子显式过期,并支持缓存 has_one、has_many、belongs_to 关联。
Shopify 为 Webhook 订阅设置了 10 秒超时和 48 小时内的多次重试,若应用响应过慢导致超时,Webhook 可能被从应用中移除。Shopify 建议应用先快速响应、再延迟处理,并给出了宕机超过 48 小时后重新注册订阅、用抓取程序补回缺失数据的恢复方案。
Shopify 工程团队在博客中复盘了 churn rate(流失率)的定义难题:用「期初客户数」作分母会被新增客户扭曲,同一行为在 7 月算出 6.25%、8 月算出 5.87%,相差 38 个基点。改用期初加新增作分母后,单月稳定在 5.1%,但季度值会跳到 15.5%,除以 3 又因流失并非均匀分布而失真。团队最终给出的定义可直接跳读原文答案。
Shopify API 新增 Application Proxies 功能,允许应用让店铺页面从外部位置拉取内容,并通过 Liquid 模板引擎渲染后输出,无需 iframe 即可生成动态原生页面。
Shopify 宣布其 Python 适配器已可在 Django 框架和 Google App Engine 上运行,并在 App Engine 上提供了在线示例,源码托管于 GitHub。
Shopify 工程师推荐用 PostCatcher 和 LocalTunnel 在开发阶段测试 Webhook。
Shopify 开发者博客“Developing Shopify Apps”系列第 4 篇讲解如何通过 API 修改已有数据:向 /admin/customers/{id} 或 /admin/products/{id} 发送 PUT 请求,XML 与 JSON 格式均可,请求体放入要更新的字段即可。
Shopify 工程博客发布《Developing Shopify Apps》系列第三篇,继续探索 Shopify API。
Shopify 工程团队发布系列教程第二部分,讲解如何通过 Shopify API 以编程方式读写店铺数据。Shopify API 是 RESTful 风格,暴露 Shop、Products、Images、Customers、Orders 等资源,配合 HTTP 的 GET、POST、PUT、DELETE 四个动词操作;其中 Shop 资源不可编程修改,只响应 GET。
Shopify 研究科学家 Ben Doyle 提出用「状态与事件」两种基本元素来厘清客户数、churn(流失率)、LTV(用户生命周期价值)等电商指标的计算方式:状态是带起止时间戳的区间,事件是带时间戳的点,前者对应资产负债表式的快照计数,后者对应利润表式的区间计数。
Shopify 发布应用开发系列教程第一篇,介绍如何注册成为 Shopify Partner、创建测试商店并添加应用。开发者可为单个店主构建私有应用,或通过 App Store 触达约 16,000 名 Shopify 店主。
Shopify 将其支付网关代码抽离成的开源 Ruby 库 ActiveMerchant 发布 1.9 版本,新增 7 个支付网关,支持网关总数达 63 个。新增网关包括面向印度的 DirecPay、法国的 Paybox、美国的 Inspire Commerce 与 SecureNet,以及支持英国和爱尔兰 3D Secure 的 SagePay Form。