Theme Development·E-Commerce · Outdoor & Surf·2025·8 weeks

Their existing theme was costing them 40% of mobile revenue.

Shopify themeMobile UXPerformance

Carve — visual walkthrough available on request

Results

1.8s

mobile load time (from 8.2s)

After launch

34%

increase in mobile conversion rate

60 days

99

Lighthouse performance score

Mobile

Load time measured via WebPageTest from London on 4G throttled connection. Conversion rate from Shopify Analytics, mobile segment, 60-day pre/post. Lighthouse score via Chrome DevTools.

Situation

Carve sells premium outdoor and surf equipment. Mobile accounted for 68% of their traffic but only 42% of revenue — a 26-point gap that analytics traced directly to the theme. Load time on 4G averaged 8.2 seconds. The product page required 5 taps to reach the cart. We built them a custom Shopify theme from scratch.

What we did

  1. 01

    Full mobile UX audit across 12 device types before writing a line of code

  2. 02

    Custom Shopify theme built on Dawn architecture, stripped to under 180kb initial load

  3. 03

    Single-tap add-to-cart on mobile with persistent sticky bar

  4. 04

    Image pipeline delivering WebP at correct breakpoints with no layout shift

  5. 05

    Offline-first PWA shell for repeat visitors

Tech stack

ShopifyDawn (custom build)Cloudflare CDNWebP image pipelinePWA shell

Technical audit

Findings from the pre-engagement audit. All resolved before handoff.

Audit findings6 findings — all resolved
Critical2 issues
Mobile load time
8.2s on 4G — industry benchmark is under 3s
1.8s on 4G
Fixed
Add-to-cart path
5 taps to reach cart on mobile
1 tap — persistent sticky bar, always visible
Fixed
High3 issues
Image delivery
JPEG only, no srcset, no lazy loading, layout shift on load
WebP at correct breakpoints, lazy-loaded, zero CLS
Fixed
Lighthouse mobile score
34 / 100
99 / 100
Fixed
jQuery dependency
87 KB jQuery — blocking main thread on every page load
Removed entirely — zero jQuery in final build
Fixed
Medium1 issue
Font loading
Render-blocking FOIT on two custom font faces
font-display: swap with preloaded subsets
Fixed

Walkthrough

Full build teardown and before/after demo

Video walkthrough

Full build teardown available on request

Working on something similar?

We take on a small number of new engagements each year. Tell us about your project.

Start a conversation