[ Case study ]
The brand's customization experience — subscribers swapping box contents — lived in a slow legacy theme that fought every subscription-app update. Page interactions blocked for seconds on swap actions, and churn tracked the broken UX.
CLIENT a subscription-box DTC brand — FOCUS Design the cart as application state
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
Each month the brand packs themed subscription boxes for a few thousand subscribers, with the box's contents customizable before each cut-off. The customizer is the product's heart: subscribers swap items, skip flavors, and adjust frequency from their account. Merchandising runs on a weekly drop cadence that keeps the catalog moving, and content operations are a two-person job. The storefront had grown around the subscription app's widgets, and every app update seemed to fight the theme a little harder.
The brand's customization experience — subscribers swapping box contents — lived in a slow legacy theme that fought every subscription-app update. Page interactions blocked for seconds on swap actions, and churn tracked the broken UX.
We proposed a headless storefront on Hydrogen with the box customizer rebuilt as application state: swaps render optimistically, the subscription platform's API reconciles in the background, and failures surface honestly instead of silently. Catalog pages would serve from the edge with per-product invalidation on drop days, protecting the weekly cadence. The decisive constraint was the subscription platform's API — its model defines what customization can mean — so the frontend was designed around its operations, not against them. Existing subscribers would migrate through a two-week shadow run before any member saw the new storefront.
Just as important is what we ruled out, and why:
Cart and subscription state moved into a typed client layer with optimistic updates, so swaps feel instant while the API catches up.
Catalog pages render from edge-cached data with per-product invalidation on drops, keeping launches fast without stale prices.
Existing subscriptions ran through a shadow integration against the new storefront for two weeks before any member touched it.
Delivered by the systems pod — 2 engineers over 11 weeks, with working increments reviewed with the client every week.
Obstacle
The subscription API's swap endpoint rate-limits burst traffic; load tests simulating cut-off week showed optimistic swaps queuing into timeouts the design had promised would feel instant.
Handled: We added a queue-and-confirm pattern with per-subscriber request coalescing, and re-cut the instant-feel promise to the first swap rather than every action in a burst.
Obstacle
The shadow migration caught a state mismatch in week one: subscribers who had paused mid-cycle carried a box state the sync interpreted as active, silently restoring skipped items.
Handled: We mapped every subscription status against its shadow twin daily, patched the interpreter for paused states, and re-ran the full shadow cohort before anyone was switched.
The headline: swap-action response time (p95) in the box customizer, lab-measured across the release, verified against field inp — 2.4s → 0.6s, read from Synthetic + field monitoring. A second check: monthly subscriber churn over the following quarter at −11%.
The customizer stopped being a support category. Subscribers swap items during a commute now, and the team hears about it in reviews — the account experience went from churn evidence to a selling point in acquisition emails. App updates went from dreaded events to routine, because nothing in the storefront breaks when the subscription platform ships. The content team publishes drops without thinking about the customizer at all, which is the quietest possible proof the two systems finally respect each other's boundaries.
The result was read from Synthetic + field monitoring against the pre-engagement baseline over the stated window, with a guardrail check on monthly subscriber churn over the following quarter. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have load-tested the subscription API's swap endpoint before promising instant UX — its burst limits shaped the final design more than our caching did.
[ Related service ]
[ Related builds ]
3.1% 4.6%Checkout conversion rate, the two months after cutover versus the two months before, like-for-like traffic
−87% 0Gift-checkout failure reports, in the two gift seasons after launch versus the two before
[ Next step ]
Next case study