We built our own Shopify theme. Most agencies don't bother, they grab Shopify's default and plop 10 apps on top to patch the gaps. We went the other way. Every trick and bit of goodness we've learnt building custom stores, packed into one theme you actually own. It's called Sherbet. Want to see what's inside? Keep scrolling.
So what's wrong with apps?
Loads. Every one's another monthly bill and another bit of code dragging your store down. They break when Shopify pushes an update. And you don't own any of them, cancel the subscription and that feature walks out the door with it.
We wanted the opposite. One codebase, yours to keep, with the everyday stuff already baked in.
One set of rules for the whole design
Every colour, size, space and corner comes from one file. No stray hex codes. No random 17px margin someone eyeballed at 2am.
/* Spacing: one scale. No made-up values. */
--space-4: 1rem; /* 16 */
--space-5: 1.5rem; /* 24 */
--space-6: 2rem; /* 32 */
/* Corners cap at 12px. Two shadow levels, never coloured. */
--radius-3: 12px;
--shadow-low: 0 1px 2px rgba(20,20,20,.06), 0 1px 3px rgba(20,20,20,.08);
Ten spacing steps, that's the lot. When every section pulls from the same set, the store looks designed instead of thrown together. Want to reskin the whole thing for a new brand? Change one file.
Five colour schemes, one per section
Sherbet ships five. Each is a background and a text colour that pass the contrast check, so nothing you build quietly fails an accessibility test.
A section picks its scheme in the editor. Cream hero, sherbet-pink band, charcoal footer, all readable, no code.
The blocks are the theme
Here's the good bit. Everything below is a real Sherbet section, not a slide about one. Same code we ship, dressed up in a made-up botanical brand.
Make it a pack, no bundles app
Pick 4 or more and the theme builds a variety pack and drops the price. The bar counts what you've added, shows the saving, and switches the checkout button on once you hit the minimum. Brands normally rent this for about $20 a month.
The cart does the nudging
The cart drawer runs a free-shipping bar that shows how close someone is to free delivery. That's the little nudge that quietly bumps the basket, and it's built in, not another app.
Reviews and FAQs, without two more apps
These two are the apps we rip out most on a rebuild. Both are just sections in Sherbet.
Even the footer's a real section: menu columns, socials, a newsletter signup, the lot.
The stuff Google wants, set once
Sherbet writes the structured data search engines read, and lets you control it from theme settings instead of us digging through code.
- Organisation details for the brand, logo and social links.
- Product data with your returns and shipping, the bits that earn the rich results in search.
- Clean meta and share tags from one file.
Set your return window and shipping once. Every product page comes out valid. Same with the favicon and page titles, they read from your Shopify settings, never something we hard-coded.
Speed's built in, not bolted on
You can't buy speed from an app. A slow theme stays slow. Sherbet decides what loads first before anything shows up:
@layer reset, tokens, base, layout, utilities, sections;
Two small files load first. Everything else loads without blocking the page, using an old browser trick:
<link rel="stylesheet" href="base.css"
media="print" onload="this.media='all'">
The browser treats it like a print style, so it doesn't hold up the first paint, then we flick it on once it's down. Fonts preload so the text doesn't pop in halfway. Not glamorous. It's the difference between a store that shows up now and one that makes you wait on a blank screen.
The fun stuff, off by default
There's a 404 page with a little game, confetti the first time someone adds to cart, and a Konami-code easter egg for anyone nosy enough to find it. All optional, all off unless a brand wants them. Personality should be a choice, not something the next dev has to rip out.
What was actually hard
Two things. Sticking to the rules: a set-values system only works if you never cheat it, and the urge to drop one custom number into one section never goes away. And the Theme Store review. Passing Shopify's bar, real accessibility, valid data, no speed shortcuts, made us build it better than we would have on our own.
You own it
Launch on Sherbet and the code is yours. No app subscriptions holding features hostage, no licence, no vendor to get locked out of. We built a candle brand's whole store on it and handed over a codebase they run themselves.
That's the point. The theme should work for the person selling, and it should be theirs to keep.
Weighing a bought theme plus a pile of apps against a custom base? Add up the app fees over two years first. Then come talk to us.