The article maps to the already-present (untracked) file, but that file's footer uses a wrong source URL (`changelog.shopify.com/...`) instead of the given `shopify.dev` changelog URL. Per the task's output contract, I'll generate fresh, correct HTML. Here it is:
API version 2026-07 から ProductVariant が Publishable になり、publication(チャネルまたはカタログ)単位でバリエーションごとに公開状態を制御できる。バリエーションを削除する・商品を複製する・ストアフロントのコードで隠す、といった回避策が不要に。
「このバリエーションだけ隠す」には削除・商品複製・ストアフロント側で非表示にするなどの回避策しかなく、データが歪んだり保守が増えたりしていた。
バリエーションを削除も複製もせず、チャネル/カタログごとに「どのバリエーションを見せるか」を細かく決められる(API version 2026-07)。
バリエーションが表示されるかは、① 商品レベルの公開を通過し、さらに② バリエーションレベルの公開を通過したものだけ。①が閉じていれば②に関係なく表示されない(商品レベルが優先)。
resourcePublicationsv2 / publishedOnPublication でバリエーションの公開状態を読めるようになった。記事は明確に「non-breaking, additive change(破壊的でない加算的変更)」と述べている。既存実装を壊さないための前提が3つある。
商品レベルの公開挙動は変わらない。商品が active かつチャネルに公開 されていなければ、その配下のどのバリエーションもそのチャネルに表示されない。
バリエーションは既定で公開。商品レベルで公開している既存アプリは 無改修 でそのまま動く。
バリエーションを非公開の状態で作成でき、購入者への 早期露出を防げる。
publishablePublish と publishableUnpublish が ProductVariant の ID を受け付けるようになった。
ProductVariant が Product / Collection と同様に Publishable インターフェースに準拠。resourcePublicationsv2 と publishedOnPublication を含む。
バリエーションがフィードのチャネルに公開/削除されると、product update として(variant added / deleted を伴って)product feed webhook が発火する。
variant_publication/create・update・delete webhook は まだ開発中で、近日中(imminently)に提供予定。
variant_publication/* webhook の正確な提供時期や、Storefront GraphQL API 側の具体的な読み取り仕様は記載なし。現時点で確実なイベント源は product feed webhook と、Admin API での resourcePublicationsv2 読み取り。| アプリの種類 | 必要な対応 | ポイント |
|---|---|---|
| product feed を使うチャネルアプリ | 改修不要 | フィードが商品にバリエーションを追加/削除し、増分同期 webhook が発火する。 |
| feed を使わず Admin API で公開状態を読むチャネル/疑似チャネル | 対応推奨 | ProductVariant.resourcePublicationsv2 で各バリエーションの公開状態を読む実装を追加すべき。 |
| 商品公開後にバリエーションを作るアプリ | 要確認 | 新バリエーションは親商品の全 publication で公開がデフォルト。非公開で作るなら productSet / productVariantBulkCreate の variant.published: false を使う。 |
| 商品を公開するアプリ | 改修不要 | 従来通り商品に publishablePublish を呼べばよい。バリエーション非公開がワークフローに関わるなら対応を検討。 |
商品レベル公開が常に優先。商品が active+チャネル公開でないと、バリエーションをいくら公開しても表示されない。デバッグ時はまず商品レベルを疑う。
Product / Collection と同じ Publishable の作法で、ProductVariant.resourcePublicationsv2 から各 publication の公開状態を取得する。既存の Publishable 実装を流用しやすい。
何もしなければバリエーションは公開。「非公開で作る」は明示が必要 = variant.published: false を productSet / productVariantBulkCreate で指定する。
専用の variant_publication/* webhook は開発中。リアルタイムに変化を検知したいなら、まずは product feed の product update(variant added/deleted)に乗る設計が現実的。
本機能は API version 2026-07 で利用可能。タグには Storefront GraphQL API も含まれるが、本文で説明されているのは Admin API の変更のみで、Storefront 側の具体的な読み取り方法は記載なし。ストアフロント表示の検証は別途必要。
publishableUnpublish。チャネル/カタログ単位に公開状態を持たせる。resourcePublicationsv2。productSet / productVariantBulkCreate の variant.published: false で非公開のまま作成 → ローンチ時に publishablePublish で一斉公開。ProductVariant.resourcePublicationsv2 を読んで、バリエーションごとの公開状態を同期処理に組み込む。