停止中の商品に対する`productSet`変異エラーコードの変更

これまでShopify開発者の皆さんが経験してきた一つの技術的課題について考えてみましょう。GraphQL Admin APIの特定バージョン(2025-07)を使用して、停止中の商品をproductSet変異で更新しようとすると、エラーコードINVALID_PRODUCTが返される問題です。これは、商品が停止中のために更新できないという事実を適切に反映していません。より詳細なエラーコードがあれば、問題の特定と対応が容易になります。

技術的ソリューションの提案

この問題を解決するために、Shopifyは新たな変更を導入しました。具体的には、GraphQL Admin APIの2025-07バージョンでは、停止中の商品に対するproductSet変異が行われた場合、新たにPRODUCT_SUSPENDEDエラーコードが返されます。

実装手順とコード例

これはAPIの変更なので、あなたのコードを変更する必要があります。具体的には、エラーハンドリング部分でPRODUCT_SUSPENDEDを適切に処理するように変更する必要があります。次のようなコードスニペットを参考にしてください。


mutation {
  productSet(input: { id: "gid://shopify/Product/1" }) {
    userErrors {
      code
      field
      message
    }
  }
}

// エラーハンドリング部分
if (error.code === "PRODUCT_SUSPENDED") {
  console.error("商品が停止中のため、更新できません");
}

パフォーマンス・コスト分析

この変更により、エラーの特定と対応が容易になり、開発者のデバッグ時間が短縮されます。これにより、パフォーマンスが改善され、コストも削減されます。

実装時の注意点・ベストプラクティス

この変更を取り入れる際、既存のエラーハンドリングコードがINVALID_PRODUCTに依存していないことを確認してください。新たなエラーコードPRODUCT_SUSPENDEDを適切にハンドリングするよう、エラーハンドリング部分を更新することが必要です。

次のステップ・発展案

次に取り組むべきは、この新たなエラーコードを正確に反映させるためのテストコードの作成です。テストコードにより、コードの品質を保つことができます。

参考記事: Change in `productSet` mutation error code for suspended product