記事のサマリー(TL;DR)
- Shopify Functionsを使って新しい割引タイプを作成するアプリは、
shopify/Discountapp intentsを登録できるようになりました。これによりSidekickがアプリの作成・編集フローを起動し、disambiguation picker(選択肢提示画面)でそのフローを案内できます。 - intentの登録先として
admin.app.intent.link(React Routerアプリの既存ページへ遷移)とadmin.app.intent.render(Admin UI extensionをインラインで表示、API version 2026-04以降が必要)の2種類が用意されています。 admin.discount-details.function-settings.renderを使用するDiscounts UI extensionは自動的に優先表示の対象となります。モバイル対応は現時点でSidekick経由のadmin.app.intent.link割引フローには及んでおらず、既存アプリは変更なしで動作し続け、移行作業は不要です。
対象と制約
この変更は、Shopify Functionsを使って新しい割引タイプを作成するアプリに適用されます。Function基盤の割引タイプを作成しないアプリには影響しません。既存アプリはそのまま動作し、移行作業は不要です。
モバイル対応については、admin.app.intent.linkによる割引フローは現時点でWeb版のShopify adminでのみサポートされています。App-link形式の割引はShopifyモバイルアプリの割引一覧に表示されることがありますが、タップしてもアプリの編集フローは開きません。モバイル対応が提供されるまでは、加盟店はこれらの割引を開いて編集する際にWeb版のShopify adminを使用する必要があります。
詳細
何が変更されたか
shopify/Discount intentは、アプリの割引フローにおける作成(create)と編集(edit)の両アクションをサポートするようになりました。登録にはshopify-intent.jsonメタスキーマを使用し、shopify/discount.jsonのベーススキーマを参照します。
functionIdに対するmatchValueにより、各intentを特定のShopify Function実装にマッピングできます。これにより、複数の実装を持つアプリは実装ごとにフローを登録できます。intentのvalueスキーマは編集フロー用に割引のGID(グローバルID)を保持します。
リクエストが特定の割引タイプやFunction実装を識別できない場合、加盟店はdisambiguation pickerから利用可能なフローを選択できます。登録された各intentは、アプリごとのintent上限数にカウントされます。
extension.ui.pathsプロパティは引き続き動作します。ただし、作成・編集両方のフローにわたってSidekickとの連携をより深めるため、アプリにはapp intentsを宣言することが推奨されています。
対象範囲
この変更は、Shopify Functionsを使って新しい割引タイプを作成するアプリに適用されます。既存アプリは変更なく動作を継続し、移行作業は不要です。Function基盤の割引タイプを作成しないアプリは影響を受けません。
この変更が重要な理由
加盟店は、作成・編集しようとしている割引タイプに対応する専用のアプリフローに一貫して到達できるようになり、Shopifyのデフォルト割引UIへ誘導されることがなくなります。アプリ側は、どのShopify Function実装を提供するかを制御でき、既存のReact Routerページまたは専用のインラインUI extensionのいずれかを使用できます。
対応方法
既存アプリについては対応不要です。Sidekickおよびdisambiguation pickerで割引フローを優先表示するには、以下のいずれかを行います。
- Discounts UI extensionを構築する(自動的に優先表示されます)。
- 既存のReact Router割引UIに対して
admin.app.intent.linkを登録する。 - 専用のインラインUI extensionを提供するために
admin.app.intent.renderを登録する。
設定例については「Build app actions with Sidekick」、完全な仕様についてはIntents APIリファレンスを参照してください。