How to Gracefully Update the GQL API Version?

During the backend development of my application, I encountered some issues.

Currently, my app uses GQL to interact with the Shopify Admin API, and I am currently on API version 2024-10. However, when developing new features recently, I noticed that this version is no longer listed in the official documentation. I am concerned that Shopify will deprecate for the 2024-10 version in the future, so I have decided to update my API version.

Nevertheless, if I attempt to upgrade from 2024-10 to 2025-10, I need to review all my GQL files to verify their compatibility with the target API version. This has resulted in a massive amount of comparison work. I want to know if there is an elegant method to quickly compare files during a bulk API upgrade, allowing me to only identify fields that are inconsistent with the latest API or have been deprecated.

In fact, AI suggested that I implement the comparison myself: download the complete schema from the official documentation and then perform code comparison. I don’t think this is the optimal solution, as it requires me to take on additional development work to build a comparison tool. I wonder if the official team has an existing tool that can uniformly validate my customized GQL against the new version.

BTW, my app is build on Python

I noticed that this version is no longer listed in the official documentation. I am concerned that Shopify will deprecate for the 2024-10 version in the future

Shopify’s APIs follow a versioning cadence (docs) where every 3 months a new version is released. Each stable version is supported for at least 12 months, sometimes a bit longer depending on circumstances.

2024-10 started to be phased out as of 2025-10-23 15:00:00 UTC and clients who had not made a change would have been served the next oldest version (2025-01) regardless of if you requested it or not.

There is an API health report that may be available for your app that tries to provide advance warning if we can detect on our side your app may break.

Not sure how you are making your requests, but some client libraries have tooling that lets you validate your graphql client operations against a schema fetched via introspection.

Thanks for your reply.

Since there is no relevant Python library available, we currently make GQL requests to the Shopify Admin API by constructing the requests directly. This is similar to sending a pre-assembled curl request to the URL: https://{my shop domain}/admin/api/{api version}/graphql.json.

Here, “my shop domain” and “api version” are preconfigured environment variables. I checked with my colleague yesterday, and they mentioned that developers are categorized into two types: Partner and Private. Supposedly, only Partner accounts can access the API Health Report. However, I am not certain if this is accurate, as my permission level does not allow me to log into the backend to verify. In practice, we manage different stores using separate accounts, and I believe our stores might all be of the Private type.

The solution I am currently using involves the following steps:

  1. Install GraphQL Code Generator via npm.

  2. Set up the necessary configurations.

  3. Attempt to generate code by running the command npx graphql-codegen --config codegen.yml.

During this process, the corresponding library scans my custom GQL files and uses the latest schema to validate whether these files are correct.

Through testing, I found that this method can indeed detect issues such as deprecated fields and anomalies in the GQL structure.

However, it seems ineffective in handling input parameter problems. This is because many GQL queries or mutations accept dynamic dictionary objects as inputs; the fields within these objects are not defined by GQL, so issues can only be identified during actual requests.

At present, besides validating the schema of custom GQL files, I have not found a good way to enhance the validation of input parameters. Given the large number of interfaces involved, implementing dynamic input validation in Python—an untyped language—is challenging unless we send actual requests for each interface one by one. It seems the only alternative is to subscribe to RSS feeds and check for updates regularly.

Do you have any suggestions for this?

Dev Dashboard is new and seeks to replace Partner Dashboard by providing this information regardless of your app type. In the new dashboard under the app’s Monitoring page there is a API health tab.

Yes, to your point, this is provided at runtime and not statically analyzed. From my reading of the GQL Python library docs, I thought there might be a runtime option within the Python ecosystem:

If a GraphQL schema is provided, gql will validate the queries locally before sending them to the backend

1 Like

Thank you for your help! I will try out your solution.:heart: