Book now

Field notes on the GraphQL-only future, and the apps getting left behind in place.

Every Shopify admin is a museum. Open the Apps page of any store that has been trading for a few years and the icons all look equally alive.

They are not. Some of those apps stopped evolving in 2024, and nothing on the screen tells you which.

Everything got a date stamp

On October 1, 2024, Shopify filed the entire REST Admin API under legacy. In platform speak that means critical updates only, while new features ship to GraphQL first and, increasingly, to GraphQL alone.

The product endpoints had already gone. With API version 2024-04, the REST routes for products and variants were deprecated outright. Public apps had until February 1, 2025 to move to the new GraphQL product APIs; custom apps on the older GraphQL versions got until April 1, 2025.

And from April 1, 2025, every new public app must be built on GraphQL. No REST grandfather clause for newcomers.

When we first mapped this for clients, we treated it as a deadline story. Deadlines are easy; you put them in a calendar and someone panics on schedule. We were wrong about where the risk lived.

The carve-out that reads like mercy

Buried in the timeline is an exemption. Custom apps on REST that never need more than 100 variants per product may keep running on the deprecated endpoints, no sunset date announced, in maintenance mode, with every new feature built only for GraphQL.

It sounds humane. Maintenance mode is not stability; it's a room where the furniture never moves while the house gets rebuilt around it.

Your oldest app still thinks a product has 100 variants illustration 1

A lot of private integrations took the deal, mostly by doing nothing. Doing nothing was free. Then the house moved.

Then the ceiling moved

On October 15, 2025, one changelog entry raised the product variant limit from 100 to 2,048, for every merchant on every plan. The same entry carries Shopify's own warning: apps not on the in-support GraphQL product APIs "may have a downgraded or broken experience" once a product crosses 100 variants.

Read that from the store's side. Nobody touched the apps. Someone in merchandising builds a product past the old 100-variant line, because the admin now allows it, and every integration still speaking 2024-era REST starts seeing a partial product.

The sync exports the first 100 variants and reports success. The feed goes quiet on the rest. No error, because technically nothing failed.

Your oldest app still thinks a product has 100 variants illustration 2

Nerd detail, skip freely: none of this is Shopify being capricious. In the year before the announcement, Shopify cut GraphQL query costs by 75%, and the platform now serves over 1 million GraphQL queries per second. The performance argument is settled; REST lost on the merits.

The clock is published

The strangest part: none of this is hidden.

Shopify maintains a REST resource that lists every deprecated API call your custom apps made in the past 30 days. Each row carries the endpoint, the last time you called it, and a migration deadline.

The clock ticks in public. On most stores, reading it is nobody's job.

That is what infrastructure debt looks like in catalog operations. Across the catalogs we open (642,000+ SKUs processed so far), the app stack is never one generation. There is the app installed last quarter, GraphQL-first because it had no choice, and the connector installed years ago by an employee who has since left, still asking for a product shape that stopped being the whole product.

What we tell every store we open

  • "Legacy" on an API your apps depend on is a store problem, not a developer problem. The developer shipped and moved on; you carry the risk.
  • Inventory your apps by API generation, not by icon. Anything writing products over REST is in maintenance mode by definition.
  • The ceiling is 2,048 now. Assume someone on your team will merchandise past 100 variants before your oldest app is ready for it.
  • Pull the deprecated-calls report and put a name next to it. A published clock only helps if someone reads it.

The museum keeps its lights on either way. Walk the room. Check the plaques.

If you'd rather learn which of your apps are on the clock before a big product does it for you, OKART's Infrastructure Stress-Test maps your app stack against the current API timeline, read-only, delivered in 48-72 hours.

Sources

  1. Shopify REST Admin API reference: REST Admin API legacy status as of October 1, 2024, and the GraphQL-only rule for new public apps from April 1, 2025.
  2. Deprecation timelines related to new GraphQL product APIs: 2024-04 deprecation of REST product and variant endpoints, the February 1 and April 1, 2025 deadlines, and the 100-variant carve-out for custom apps.
  3. The product variant limit is now 2048 for all merchants: October 15, 2025 changelog raising the limit from 100 to 2,048, with the "downgraded or broken experience" warning for apps on out-of-support product APIs.
  4. Migrate from REST to GraphQL: legacy status, critical-updates-only policy for REST, and GraphQL-first feature releases.
  5. Deprecated API calls resource: the per-app report of deprecated calls made in the past 30 days, each with a migration deadline.
  6. GraphQL vs. REST for enterprise commerce: the October 2024 all-in-on-GraphQL decision, the 75% query cost reduction, and GraphQL query throughput at Shopify.

Latest Stories

View all

Wholesale is a second catalog. Nobody staffs it.

Wholesale is a second catalog. Nobody staffs it.

Turn on Shopify B2B and nothing looks different. Same products, same admin, same dashboard. But behind the login there is now a second catalog, with its own prices and its own rules, and nobody's name on it.

Read moreabout Wholesale is a second catalog. Nobody staffs it.

The search box became a chatbot, and it has never heard of you

The search box became a chatbot, and it has never heard of you

Ask ChatGPT to recommend the kind of product you sell. It names three brands, none of them yours. The store ranks on Google, the reviews are real, and the machine cannot read you. Notes on what answer engines actually eat.

Read moreabout The search box became a chatbot, and it has never heard of you

642,000 SKUs later, every catalog has the same seven problems

642,000 SKUs later, every catalog has the same seven problems

Every store believes its catalog is a unique mess. We believed it too, for the first few projects. Then the field notes started photocopying themselves: the same seven problems, in every catalog we opened.

Read moreabout 642,000 SKUs later, every catalog has the same seven problems