The client
Lifnex sells Urbanista and JVC headphones, earbuds and speakers in Malaysia through its own Shopify store. Audio buyers compare before they buy — drivers, battery life, noise cancelling, colourways — so the product pages carry spec tables, filters and variant selectors, and most visitors arrive on a phone.
The problem
The store ran on a heavy pre-built theme with a stack of app scripts. On mobile it scored 31 out of 100 on Lighthouse, its largest contentful paint took 4.6 seconds and failed Core Web Vitals, it shipped 2.8 MB of JavaScript, the page jumped as it loaded (a layout shift of 0.380), taps took 420 ms to respond, and the server took 820 ms to render each page's Liquid.
What we did
- Custom Liquid sections. Reusable sections written in native Liquid, and 14 app store scripts replaced with features built into the theme.
- Fast first paint. The hero product photo loaded with Shopify's image tag at high fetch priority, AVIF and WebP served through the Shopify CDN, and above-the-fold CSS inlined in the layout templates.
- Less JavaScript. jQuery, polyfills and redundant trackers removed, sliders, drawers and tabs rebuilt as vanilla web components, and the spec-comparison code loaded only on product pages.
- Faster server rendering. Nested product loops in the collection grid refactored, snippets written to cache well, and audio specifications read directly from product metafields.
- Instant interactions. Long tasks broken up during filter interactions, spec accordions built in pure CSS, and colour and variant switching driven by data attributes.
- A page that holds still. Fixed aspect ratios on every media container, font-display swap with fallback font metrics matched, and reserved space for spec sheets and ratings.
What we delivered
-
14app store scripts replaced with native LiquidFeatures rebuilt inside the theme instead of injected by apps.
-
340 KBtotal JavaScript, down from 2,840 KBVanilla web components for sliders, drawers and tabs.
-
0.004cumulative layout shiftEvery image, spec table and banner has reserved space.
-
48 msinteraction to next paintFilters, spec toggles and colour switches respond on touch.
Deliverable counts, supplied by shakalakaa. Not performance metrics.







