記事のサマリー(TL;DR)
admin.app.intent.linkターゲットを使う app intent が、オーバーレイ表示からフルページナビゲーションへ変更(全ストア・全APIバージョン即時適用)shopify.extension.tomlの設定変更は不要だが、URL先のルートがフル幅で正しく表示されるかの確認が必要- 未保存変更がある場合のみ従来のモーダル表示にフォールバックする仕様は維持
Shopify Sidekick 連携アプリ開発者が確認すべきレイアウト対応
Shopify Sidekickを使ったアプリ開発において、admin.app.intent.linkターゲットを宣言しているアプリは、今回の変更で実際の影響が生じる可能性があります。これまでオーバーレイ(狭い幅のモーダル)を前提としたレイアウトを実装していた場合、フルページで表示されると崩れるケースがあります。国内でもShopify Plusを活用したB2B業務連携やCRMとのAPI接続にSidekick app extensionを組み込む構成が増えており、admin.app.intent.link経由でキャンペーン管理や受発注画面を開く実装では、ルートのフル幅レンダリング検証が急務です。また、モーダルフォールバック(未保存変更時)も引き続き正常動作することを開発ストアで確認しておくことが推奨されます。
詳細
何が変わったか
Sidekickがアプリの intent を呼び出す際、admin.app.intent.link 拡張ターゲットで宣言された intent は、これまでマーチャントが操作中のページ上にオーバーレイ(インテントモーダル)として表示されていました。このリリース以降、同ターゲットの intent はフルページナビゲーションとして動作します。これは Shopify ネイティブの admin intent(Shopify 標準エディタを起動する intent)がすでに採用していた動作と同じ挙動です。
変更はすべてのストアに即時適用済みで、APIバージョンによるゲーティングもなく、shopify.extension.toml の設定・intent スキーマ・ツール定義の変更も一切不要です。
例外: マーチャントが現在のページに未保存の変更を持っている場合、ページ離脱による作業ロストを防ぐため、intent はモーダルとして開きます。このフォールバック動作はアプリ側での特別な対応を必要とせず、同じルート・ペイロード・ツールが両方のプレゼンテーションで使われます。
影響を受けるアプリと受けないアプリ
影響あり:
admin_link拡張にadmin.app.intent.linkターゲットを含むアプリ(APIバージョン・ストア種別を問わず全件)
影響なし:
admin.app.intent.renderをターゲットとする拡張(引き続きオーバーレイのインライン表示)intents.invoke()で Shopify ネイティブエディタを起動する admin intent(別システムで変更なし)- app intent を宣言していないアプリ
- 両ターゲットを宣言しているアプリの場合、
admin.app.intent.link側のみが変更対象
Sidekickとアプリ間のコントラクト(変更なし)
Sidekick とアプリ間のインターフェースは変わりません。
- ペイロード取得: ルートは引き続き
shopify.intents.request.valueから呼び出しペイロードを読み取ります。intent ワークフロー外ではnullとなり、intent が呼び出されるたびに更新されるライブシグナルです。 - ツール登録: ルートがマウントされた際に
shopify.tools.registerでツールハンドラを登録します。 - intent の解決:
shopify.intents.response.ok()、shopify.intents.response.error()、shopify.intents.response.closed()で intent を解決します。
対応が必要な設定例
以下は典型的な admin.app.intent.link 設定例です。
[[extensions.targeting]]
target = "admin.app.intent.link"
url = "/app/campaigns/{id}/edit"
tools = "./tools.json"
instructions = "./instructions.md"
この設定自体の変更は不要です。ただし、url の先にあるルートについて以下を確認してください。
- フル幅での表示確認: オーバーレイ前提のレイアウト(狭い幅向け)は調整が必要になる場合があります。
- モーダルでも正常動作するか確認: 未保存変更のあるマーチャントにはモーダルで表示されます。
shopify.intents.request.valueの読み取り確認: ライブシグナルのため、変更をsubscribeして反応する実装も有効です。shopify.tools.registerの呼び出し確認: ルートのマウント時に登録することで、ページ滞在中にSidekickがツールを呼び出せます。- intent 解決の呼び出し確認: マーチャントが完了・失敗・キャンセルした際に必ず resolve してください。
動作テスト手順
shopify app dev で開発ストアを起動し、Sidekickにアクションを依頼します。
- 宣言した URL にスキーマの値がパス変数(
{id}ではなく実際の値)として置換されてナビゲートされること - ページが開いている間、ツールが正常に応答すること
- intent 解決後に Sidekick が結果を報告すること
モーダルフォールバックの確認は、管理画面のフォームを編集中(未保存状態)で intent を呼び出すことで再現できます。
関連ドキュメント
- Build Sidekick app extensions
- Intents API reference
- Tools API reference