Shopify App Bridgeのパフォーマンス改善と予期せぬ変更への対応
1. 技術的課題の定義と現状分析
Shopifyでは、スクリプトタグを介したApp Bridgeを使用する組み込みShopifyアプリのロード時間を半分にする機能のテストを行っています。しかしながら、アプリがドキュメント化されていないname="app-iframe"プロパティに依存してiframeにアクセスする場合、アプリが正常に動作しないケースが報告されています。
2. 具体的な技術的ソリューションの提案
あなたのアプリがname="app-iframe"プロパティを使用して組み込みアプリのiframeを見つけている場合、以下のスニペットを参照するか、App Bridge React v4へのアップグレードを検討してみてください。
3. 実装手順とコード例
以下のスニペットを参考に、name="app-iframe"プロパティの使用をやめ、新しいフレーム名を使用するようにコードを修正します。この修正により、パフォーマンス改善が適用される2024年5月以降もアプリが正常に動作し続けます。
const APP_ID = ''; // accessible via window.shopify.config.apiKey
interface FrameList extends Window {
[index: number]: Window;
}
function findAppFrameSafely(frameName: string) {
if (window.parent) {
const frames = window.parent.frames as FrameList;
for (let i = 0; i < frames.length; i++) {
const frame = frames[i];
try {
if (frame.name === frameName) {
return frame;
}
} catch (_) {
// noOp
}
}
}
}
const legacyFrameName_doNotUse = 'app-iframe';
const futureProofFrameName = `frame:${APP_ID}/main`;
const appFrame = findAppFrameSafely(legacyFrameName_doNotUse) || findAppFrameSafely(futureProofFrameName);
// continue doing whatever you were doing with the app's main frame
appFrame?.postMessage({}, window.location.origin);
4. パフォーマンス・コスト分析
この変更により、埋め込みShopifyアプリのロード時間が半分になる可能性があります。ただし、アプリのiframeへのアクセス方法を変更するため、コードの修正が必要となります。これにより短期的に開発コストが発生する可能性がありますが、ロード時間の短縮によるUXの向上を考慮すると、長期的な視点で見れば十分な価値があると言えるでしょう。
5. 実装時の注意点・ベストプラクティス
この変更により、name="app-iframe"プロパティは一意でなくなります。そのため、新しいフレーム名を使用してアプリのiframeを見つけることが必要となります。さらに、今後の変更に備えて、フレーム名にAPP_IDを含む新しいパターンを採用することを推奨します。
6. 次のステップ・発展案
Shopifyは、アプリのパフォーマンスを向上させるために、新しい機能のテストとロールアウトを続けています。開発者としては、これらの変更に迅速に対応することで、アプリのパフォーマンスとユーザーエクスペリエンスを最適化することが可能です。最新の情報に常に目を光らせ、適切な対応を行うことをお勧めします。
参考記事: App Bridge Performance Enhancements & Potentially Breaking Changes






Share:
更新情報:ギフトカードの新たな最大値について
Shopify CLIがアプリ、テーマ、Hydrogen開発を統合しました