Shopify
Shopify GraphQL vs REST: which one to use for a new app in 2026
Most tutorials still show REST. Shopify's docs now nudge you at GraphQL. Here's the actual decision framework, with rate-limit math and a migration path from someone who shipped both.
By Mr. Gill ·
Every time I start a new Shopify app the same question comes up within the first hour. Do I use the GraphQL Admin API or the old REST one?
The official Shopify docs point you at GraphQL. Most of the tutorials online still show REST. And if you ask three senior devs in a Slack channel, you'll get four opinions. So I want to write down the actual answer, based on shipping Chapters LMS on both and running the numbers.
Spoiler: it's GraphQL, almost always. But the why matters.
The rate-limit math nobody teaches you
This is the single most important reason, and almost no article about the Shopify API explains it well.
REST calls are counted as one request each. You get 40 per app per store, refilled at 2 per second on standard plans. Need to fetch 200 products, each with their variants and metafields? That's minimum 200 calls, probably 400 with the extra round-trips, and you'll be throttled halfway through.
GraphQL uses a cost budget instead. Every query you run returns a cost score. You have 1000 cost points per app per store, refilled at 50 per second. A well-structured query fetching 200 products with their variants and metafields usually costs around 200–300 points and completes in a single call.
Shape the response to what you actually need
With REST, every call returns the entire resource. You ask for a product, you get every field on every variant, including the ones you're ignoring. With GraphQL, you shape the response to exactly what you're rendering. For a product card that shows image, title, price, and inventory:
query ProductCards($first: Int!) {
products(first: $first) {
edges {
node {
id
title
featuredImage { url(transform: {maxWidth: 400}) }
priceRangeV2 { minVariantPrice { amount currencyCode } }
totalInventory
}
}
}
}
That query weighs in at around 12 cost points for 10 products. The equivalent REST approach pulls 10 full product objects (~350 KB of JSON you mostly throw away) and still needs separate calls for inventory. GraphQL wins on both bytes over the wire and cost budget.
Mutations are where it gets interesting
Here's the less-obvious GraphQL win: mutations return you the updated object in the same call. With REST you update something, then you fetch it back to see the new state. With GraphQL you do this:
mutation UpdateProduct($input: ProductInput!) {
productUpdate(input: $input) {
product {
id
title
updatedAt
status
}
userErrors { field message }
}
}
One call instead of two. Errors come back in a structured userErrors array instead of parsing an error message out of the HTTP response body. This is the kind of quiet improvement you don't notice until you've written a few hundred mutations and realized you've saved about 30% of your server code.
When REST still makes sense
REST also has a place when you're integrating with a third-party library (analytics SDK, ERP connector, some older middleware tool) that speaks REST natively and doesn't have a GraphQL version. In 2026 this is getting rarer, but it still happens. Don't rewrite the world just to be pure.
Finally: webhooks. Webhook payloads are effectively REST-shaped JSON, and there's no GraphQL equivalent. You'll always have some REST in your app even if you use GraphQL for every Admin call.
The migration path I'd pick
Don't rewrite everything. Identify your two or three highest-volume endpoints — usually product list, order list, or inventory sync. Port just those to GraphQL. Leave the rest. Run hybrid for months if you need to. Nothing wrong with that.
Start GraphQL-only. Set up a single typed client (I use the official @shopify/shopify-api package with its GraphQL helpers). Build your first read and write. Don't touch the REST SDK unless a webhook handler needs it.
What I'd watch for next
The Shopify REST Admin API is quietly being feature-frozen. New resources ship on GraphQL first, sometimes GraphQL-only. The 2025 cart and checkout APIs, the new bulk operations, the expanded metaobject system — all of these are GraphQL-first. If you bet on REST in 2026 for new work, you're betting against Shopify's own platform direction.
None of this should feel dramatic. It's a sensible, quiet migration. But if you're about to start a new Shopify app and you're reading an old Medium article that tells you to use REST because it's simpler, know that the trade-off has moved.
- New Shopify apps in 2026: GraphQL by default. The rate-limit economics alone justify it.
- GraphQL's cost-budget gives you roughly 5× the effective throughput of REST at the same request volume.
- Hybrid is fine. Migrate hot paths first. Don't rewrite the world to feel pure.
- Keep a REST path open for webhooks and the occasional third-party SDK. You'll always have some.