So here's the deal - Shopify forced everyone off REST APIs as of April 2025 for new apps, and we're now living in that reality. Existing apps still use REST just fine, but if you're building something new in 2025, you're doing GraphQL whether you like it or not. The deadline passed 4 months ago, and honestly? The ecosystem has adapted better than expected.
The Migration Nightmare Nobody Talks About
I spent three fucking weeks migrating our inventory management app from REST to GraphQL. The official migration guide makes it sound like a weekend project. It's not. I also found this Stack Overflow thread helpful for specific migration issues.
First problem: all your existing API calls are fucked. That simple GET /admin/api/2023-10/products.json
becomes this monster GraphQL query:
query getProducts($first: Int!) {
products(first: $first) {
edges {
node {
id
title
handle
variants(first: 10) {
edges {
node {
id
price
inventoryQuantity
}
}
}
}
}
}
}
Look, after suffering through the migration - GraphQL is actually faster for complex data fetching. Instead of making 5 separate REST calls to get product data, variants, inventory, and images, you get everything in one request. Product listing went from painfully slow (2-3 seconds) to actually usable (under a second) - way faster but hard to say exactly how much.
The performance gains come from Shopify's query complexity scoring system, which caps each request at 1000 complexity points. A simple product query costs around 50 points, but fetching variants and inventory adds up quickly. Learning to optimize these queries is crucial - I've seen poorly written queries hit the complexity limit with just 10 products instead of the 100+ you can fetch when done right.
The GraphQL Admin API reference is actually pretty good once you understand the connection patterns. I also recommend the GraphiQL explorer for testing queries, though it crashes on complex ones that involve more than 5-6 nested connections.
The CLI That Actually Works (Most of the Time)
The Shopify CLI is probably the best part of their developer tools. When I started, setting up a new app meant 2 hours of clicking through dashboards and copying API keys. Now it's literally:
shopify app init
cd my-app
shopify app dev
And you've got a working app with GraphQL, authentication, and tunneling set up. The hot reload actually works, which puts it ahead of most JavaScript tooling I've used.
The tunnel system is solid - it uses Cloudflare under the hood, so your local dev environment is accessible over HTTPS without fucking around with ngrok or custom certificates. I've had maybe 2-3 tunnel failures in the past year, which is pretty impressive. The tunnels typically stay up for 8+ hours without issues, and when they do fail, shopify app dev
automatically reconnects within 10-15 seconds.
But when it breaks, good luck figuring out what went wrong. Error messages are complete garbage. Last month I wasted like 4 hours on some cryptic auth error - kept getting "Access to app creation is forbidden" or some shit like that. Tried restarting everything, clearing caches, even reinstalling the CLI. Finally found some random Stack Overflow answer that said to nuke the auth tokens with shopify auth logout && shopify auth login
. Four hours for a logout command.
That said, the CLI team is actively fixing issues - they had 3 commits merged just this week (as of August 31st) addressing authentication and multi-environment commands. The CLI GitHub repository has issues threads that are actually useful for troubleshooting, and the Shopify Community Forums have real developers sharing solutions.
App Bridge: React or Die
App Bridge is Shopify's way of making your app look like it belongs inside the Shopify admin. It handles navigation, modals, and all the UI components so your app doesn't look like shit.
The good news? If you're using React, it's pretty solid. The @shopify/app-bridge-react
package gives you components that actually work and feel native. TypeScript support is decent too.
The bad news? If you're not using React, you're fucked. They have a vanilla JS version but it's clearly an afterthought. The docs are sparse, examples break constantly, and you'll waste more time fighting the framework than building features.
We tried to use Vue for one project and ended up rewriting the whole frontend in React after two weeks of pain. The Vue.js integration is technically possible but practically a nightmare. Just use React and save yourself the headache. The official Node.js app template uses React by default, and the App Bridge React documentation actually has working examples.
The Real Talk: What Works and What Sucks
What's Actually Good:
- The CLI setup is fast and mostly works
- GraphQL is faster once you learn it (took me 3 weeks to feel comfortable)
- Partner Dashboard finally doesn't suck - app creation is streamlined
- Hot reload works better than most React setups I've used
- TypeScript support is solid throughout the stack
What Still Pisses Me Off:
- Error messages are complete garbage - "Something went wrong" tells me nothing
- The GraphQL explorer times out on complex queries
- App Bridge only works well with React - everything else is an afterthought
- Testing GraphQL mutations locally is a pain in the ass
- The webhook system still randomly fails with zero explanation
What They Need to Fix:
- Better debugging tools for production issues - I'm flying blind when things break
- Support for Vue/Angular/Svelte that doesn't feel like punishment
- Actual error messages that help me solve problems
- A way to test complex app extensions without deploying to App Store
Bottom Line: The Tools Have Finally Caught Up to the Hype
If you're building a new Shopify app in late 2025, just use their stack: React, GraphQL, Shopify CLI. Fighting it will waste your time. The tools have matured significantly over the past year - the path of least resistance is genuinely productive now, not just marketing bullshit.
Here's what changed my mind: That 3-week nightmare app I built in 2021? I recreated it in 6 hours last month using the modern CLI and GraphQL. Same functionality, better performance, cleaner code. The difference isn't me getting smarter - it's the tools actually working.
But if you're coming from other platforms, expect a learning curve. Shopify does things their way, and you'll spend weeks learning their conventions. The documentation is better than it used to be, but it's still missing real-world examples for complex scenarios. The App Store review guidelines are actually worth reading before you start, and the Postman collections help with API exploration.
Is it worth it? Yeah, definitely. The Shopify App Store is where the money is, and their tools are finally good enough to build real products without losing your sanity. Just budget more time than you think you need, especially if you're migrating existing apps or learning GraphQL from scratch.
But theory is one thing - what does this actually look like in practice? The comparison tables below show you exactly which tools work, which ones suck, and what timeline to expect for each part of building a real app.