How We Built Knurle's Headless Shopify Storefront
A case study on building Knurle, a headless Next.js storefront on top of Shopify — why we went headless, what it fixed, and what it cost in build time.

TL;DR: Knurle is a supplement DTC brand running a Next.js storefront in front of Shopify, with checkout on a subdomain and full control over page speed, SEO markup, and design. We went headless because a stock Shopify theme could not hit the Core Web Vitals or structured-data depth a small supplement brand needs to compete on organic search.
The brief
Knurle sells a small, tightly-formulated supplement range — an NMN formula, an immune support complex, and a GLP-1 nutrient-gap formula — and needed a storefront that could carry the weight of real product education (dosing, purity, ingredient sourcing) without turning into a slow, templated Shopify theme. The build brief was simple to state and hard to deliver: fast, genuinely informative product pages, real JSON-LD product and article markup, and a design system that did not look like every other Shopify supplement store.
Why headless instead of a stock theme
Shopify's hosted theme layer is fine for a store that just needs a cart. It is a poor fit once SEO and page-speed become the actual growth channel, which is the case for a small brand with no existing customer base to email. Three specific constraints pushed the decision:
- Structured data control. Stock themes give you generic Product schema. A brand competing on ingredient transparency needs Article, FAQ, and nutrient-fact markup that Shopify's theme editor cannot produce cleanly.
- Core Web Vitals. Theme-based Shopify stores carry a lot of app-injected JavaScript by default. A static-generated Next.js frontend strips that entirely.
- Design independence. A templated theme reads as a templated theme. A from-scratch component system was the only way to get a monochrome, editorial look instead of the standard bright-and-bubbly supplement-store aesthetic.
The architecture
The storefront is a statically-generated Next.js app that reads product and inventory data from Shopify's Storefront API at build and revalidation time, with checkout handed off to a dedicated checkout. subdomain running Shopify's native checkout — full PCI compliance without building a custom payment flow. Product facts (dosing, purity percentage, per-serving ingredient amounts) are centralized in a single data file the frontend consumes, so a formulation change updates every page — PDP, homepage comparison table, and even the site's llms.txt — from one edit instead of three.
What it fixed in practice
Real product education pages instead of a spec sheet. The NMN product page and its companion purity-vs-dose article exist because a headless build let us treat the blog and the PDP as one connected system rather than two disconnected Shopify apps bolted together. That is the pattern we'd point any supplement or wellness brand toward if their current theme is holding back both page speed and how much real information they can put in front of a shopper before checkout.
What it cost
Headless is not free — it trades Shopify's zero-maintenance theme layer for a codebase someone has to own. For a single-brand storefront with a small, stable product catalog, that tradeoff paid off inside the first few weeks in page-speed and organic-search terms. It would not be the right call for a store with a large, frequently-changing catalog or a team with no frontend capacity to maintain it.
The takeaway
Headless commerce is not a default — it is a specific answer to a specific constraint: needing more control over speed, markup, and design than a theme-based store can give you. Knurle is the clearest example we've shipped of that tradeoff working out.
Anirudh Prashant · Founder & Lead Engineer, BareStack
Founder of BareStack. Builds custom, no-bloat software, self-hosted tooling, and AI automations for solopreneurs and small teams.