Headless Shopify with Hydrogen: When It Pays Off and When It Bites
Hydrogen and Oxygen make headless Shopify look like a default choice in 2026. It isn't. Here's an honest breakdown of when going headless earns its keep — and when it quietly eats your roadmap.
Every quarter or two, a founder pings us with the same question: "Should we go headless on Shopify?" In 2026, with Hydrogen stable, Oxygen mature, and the Storefront API doing most of what Liquid can, the answer is less obvious than the Twitter takes suggest. Headless is a real tool. It's also a real bill.
This is what we tell clients before they commit — the actual mechanics of when Hydrogen earns its cost, and when a well-tuned Liquid theme will outrun it on every metric that matters.
What "headless Shopify" actually means in 2026
When people say headless Shopify today, they usually mean one of three setups:
- Hydrogen + Oxygen — Shopify's React framework (built on Remix) deployed on Shopify's own edge runtime.
- Custom frontend on Storefront API — Next.js, Nuxt, SvelteKit, or Astro talking to Shopify via GraphQL, hosted anywhere (Vercel, Cloudflare, Netlify).
- Composable stack — Shopify for checkout and orders, a separate CMS (Sanity, Contentful, Storyblok), a search vendor (Algolia, Typesense), and a custom frontend gluing it together.
All three keep Shopify's checkout, tax, payments, and admin. All three replace the Liquid storefront with something you own. The tradeoffs differ, but the core bet is the same: you pay engineering cost upfront to escape theme constraints and gain rendering control.
What you actually give up
Leaving Liquid isn't free. You lose:
- The app ecosystem's plug-and-play install flow (most apps inject Liquid or script tags, not React components)
- Shopify's theme editor for merchandiser self-service
- Section-based content editing without a separate CMS
- A large chunk of "just works" behavior around cart, discounts, and gift cards
Hydrogen has closed a lot of these gaps — cart state, customer accounts, and analytics are first-class — but the day your marketing lead wants to A/B test a new hero and can't do it from the admin, someone on your team is writing a ticket.
The performance argument, honestly
The most common reason teams cite for going headless is speed. It's the weakest reason on its own.
A well-built Dawn-based Liquid theme, with images served through Shopify's CDN, lazy-loaded sections, and disciplined app usage, will regularly hit LCP under 2 seconds on 4G. Hydrogen on Oxygen can do the same — sometimes faster on repeat visits, thanks to Remix's data loading — but the delta is often 100–300ms in either direction, not the 2x improvement decks promise.
Where headless genuinely wins on performance:
- Storefronts with heavy personalization (logged-in pricing, B2B catalogs, geo-based inventory) where Liquid's caching model gets in the way
- Content-heavy sites where a CMS-driven page needs to render fast without a dozen app scripts
- Multi-region deployments where you want edge routing logic Shopify's CDN doesn't expose
Where it usually doesn't:
- Small catalogs (< 500 SKUs) with simple merchandising
- Stores whose main performance problem is 14 marketing apps injecting scripts — Hydrogen won't stop your team from adding those back
If your Lighthouse score is bad because of Klaviyo, a review widget, a chat bubble, and three pixel scripts, headless doesn't fix that. Discipline does.
The Hydrogen + Oxygen case
Hydrogen is the most defensible headless choice on Shopify right now, and it's largely because of Oxygen. Deploying to Shopify's own edge runtime means:
- Cart mutations skip a network hop
- Preview environments tie into Shopify admin
- Analytics, consent, and Shop Pay integration are pre-wired
- Billing shows up on your Shopify invoice, not a separate Vercel bill
Here's what a typical Hydrogen product loader looks like in 2026:
import { json, type LoaderFunctionArgs } from '@shopify/remix-oxygen';
import { useLoaderData } from '@remix-run/react';
export async function loader({ params, context }: LoaderFunctionArgs) {
const { handle } = params;
const { product } = await context.storefront.query(PRODUCT_QUERY, {
variables: { handle },
cache: context.storefront.CacheLong(),
});
if (!product) throw new Response('Not found', { status: 404 });
return json({ product });
}
export default function Product() {
const { product } = useLoaderData<typeof loader>();
return <ProductView product={product} />;
}
The CacheLong() primitive is the quiet win here. Storefront API responses cache at the edge, per-request, with sensible defaults. You get a fast page without hand-rolling a Redis layer.
Where Hydrogen still hurts
- App compatibility. Any app that installs via theme injection needs a manual port. Most major apps now ship Hydrogen components, but the long tail doesn't.
- Merchandiser workflow. The theme editor is gone. You need a CMS (Sanity, Contentful) or you're deploying code for every landing page.
- Hiring. Remix + TypeScript + GraphQL is a narrower talent pool than "Shopify developer." Rates reflect it.
When custom frontends beat Hydrogen
Hydrogen is opinionated. If your team already runs Next.js everywhere, has its own edge deployment story, and wants to share components with a marketing site or a mobile web app, going custom on the Storefront API is often cleaner.
We've built custom Next.js storefronts against Shopify when the client needed:
- A single codebase serving both a Shopify storefront and a non-commerce marketing surface
- Deep integration with a third-party PIM or ERP where the frontend orchestrates multiple sources
- Middleware logic (auth, geolocation, feature flags) that fit Vercel's or Cloudflare's model better than Oxygen's
The cost is that you're now responsible for the caching, the checkout redirect flow, cart persistence across devices, and every piece of glue Hydrogen would have given you. Budget for it.
The checkout question
Regardless of frontend, Shopify's checkout is not headless — and in 2026 that's still the right call. Shopify Checkout Extensibility lets you customize checkout with app blocks, functions, and UI extensions without leaving Shopify's hosted flow. You keep Shop Pay, Apple Pay, fraud protection, and the ~10-15% conversion lift Shopify claims from Shop Pay wallet users.
Handing a headless storefront over to Shopify checkout is a hard redirect. Your customer leaves your domain (unless you're on Plus with checkout customization on your domain) and lands on checkout.shopify.com. This bothers stakeholders more than customers. Data suggests customers barely notice; what they notice is a checkout that loads fast and remembers their card.
If you're spending engineering hours trying to keep users on your domain through checkout, ask what conversion metric you expect to move. Usually the honest answer is "none, but it feels better." That's not a business case.
A decision framework we actually use
When a client asks whether to go headless, we walk them through five questions:
- Do you have a dedicated frontend team of at least two engineers? If no, stay on Liquid. Headless is not a solo-maintainer setup.
- Is content velocity a bottleneck? If marketing ships a new landing page every week, a CMS-driven headless setup is genuinely faster. If you launch four campaigns a year, it's overkill.
- Are your performance problems architectural or app-driven? Audit before you rebuild.
- Do you need logic Liquid can't express? Personalized pricing, complex B2B rules, multi-source inventory — these push you toward headless legitimately.
- What's your five-year app budget? Headless swaps app subscription costs for engineering salaries. Do the math for your revenue.
If you answer yes to at least three, headless is likely worth it. Fewer than that, and a well-optimized Liquid theme with disciplined app use will beat a mediocre Hydrogen build on almost every metric — including the ones your CFO cares about.
Where we'd start
If you're leaning toward headless, don't rebuild the whole storefront on day one. Start with one route — usually the product page or a specific landing page template — on Hydrogen or Next.js, proxied in front of your existing Liquid store. Measure LCP, conversion, and dev velocity for a quarter. If the numbers hold up and your team is still shipping, expand. If not, you've spent a small amount to learn a large lesson.
We've helped teams go both directions — headless to Liquid, Liquid to Hydrogen — and the pattern is the same: the winners are the ones who picked the architecture that matched their team, not the one that matched the conference talk. If you want a second opinion on your setup, our e-commerce engineering team does exactly this kind of audit before anyone writes migration code.
Want a team like ours?
72Technologies builds production software for the kind of teams who actually read this blog.
Start a projectKeep reading

Inventory Sync Between Shopify and Your ERP: Why It Breaks and How to Design It Right
Every mid-market Shopify store eventually oversells or ghost-stocks its way into a support crisis. Here's how to design an inventory sync that survives Black Friday, backorders, and a flaky ERP.
Product Page LCP on Shopify: Getting Under 2.0s Without Ripping Out Your Theme
A tactical breakdown of how to cut Largest Contentful Paint on Shopify product pages to under 2.0s — without going headless, rebuilding your theme, or fighting every app you have installed.
WhatsApp Checkout in LATAM and MENA: What Actually Converts
Conversational commerce isn't a novelty in Brazil, Mexico, Egypt or the UAE — it's the default. Here's what we've learned wiring WhatsApp into real Shopify and headless stacks, and where the funnel quietly breaks.
