Case study · Bazaar Technologies
Web performance for the rest of the world.
How we took Bazaar's flagship app from failing Core Web Vitals to Passed — INP 169 ms, LCP down 40% — and grew organic search from zero to 156K total clicks, under Pakistani 3G/4G network conditions.
Senior Software Engineer II · Bazaar Technologies
Context
Bazaar is Pakistan's largest B2C grocery platform — 100k+ active web users, 1M+ Android downloads. Most of those users are not on US-fiber. They're on Pakistani 3G and entry-level 4G, on mid-range Android phones. The benchmark that mattered wasn't a synthetic Lighthouse run — it was field-measured Core Web Vitals from CrUX.
When we started, CWV was failing. Imagery was unoptimized, CDN caching ran on defaults, organic search was effectively zero. Two of us on the web side took ownership of fixing it.
The work
Image pipeline
The biggest LCP win. We moved customer-facing imagery through a Next.js Image pipeline backed by S3 + CloudFront — format-appropriate variants (WebP / JPEG) and width-appropriate sizes for the actual breakpoints we serve. Same CDN ended up serving the optimized variants to the Android app too.
Viewport-aware lazy loading
Below-the-fold imagery — category tiles, recommendation shelves — moved to lazy loading. On slow connections this isn't about eventual bytes; it's about not blocking LCP behind content the user won't see for another two seconds anyway.
CDN tuning
Default CloudFront caching wasn't cutting it. TTLs + cache-control per asset type, aggressive caching for hot imagery and shared bundles, origin shielding so an uncached request didn't cascade. CDN bill came down ~$450/month — close to $5,400/year.
Interactivity held its line
Because the fix leaned on the image pipeline and cache rather than shipping more JavaScript, the main thread stayed light. Field INP came in at 169 ms on mobile (76 ms desktop) — comfortably inside the good range, which matters more than ever now that INP is the most-failed Core Web Vital.
SEO foundations
Once the site was actually fast, the SEO basics had something to work with: structured product data, metadata hygiene, canonical URLs, sitemap reflecting the real category tree. Google rewards this slowly — but the curve was unmistakable once it kicked in.
What we rejected
An SSR-everywhere rewrite would have been the flashy fix, but the field data pointed at image bytes and cache, not render strategy — so we spent the budget where the LCP actually was and shipped incrementally, rather than blocking real wins behind a long rewrite.
Aggressive JS code-splitting came later, not first: on mid-tier Android the dominant cost was image weight over slow radios, so trimming bundles would have moved the needle far less than the image pipeline for the same effort.
We deliberately deferred a full design-system and font migration until CWV was green — perf first, polish second — so we never regressed the numbers we were there to fix.
The receipts
Screenshots from the actual tools (captured May 2026) — Lighthouse, Search Console, and PageSpeed Insights' CrUX report — for bazaarapp.com.
One thing to be straight about: Bazaar decommissioned this platform in 2026 when the company pivoted to Keenu, so you can no longer re-run PageSpeed Insights against it and see these numbers for yourself. That was true while it was live, and it's the reason the receipts below are dated screenshots rather than a link. If you want performance work you can verify today, the Keenu One storefront is live on three merchant domains and carries the web-vitals RUM and Prometheus instrumentation I built for it.




Honest scope
I co-led this with one other engineer on the web side — the image-pipeline and CDN strategy were a shared call. I owned the Next.js Image integration end-to-end and drove the rollout to Android. I'm claiming the perf and CDN + SEO foundation work, not the whole product.
Stack
Next.js (App Router), TypeScript, NestJS BFF, AWS (S3, CloudFront, Lambda), Vercel. Web Vitals via CrUX + Lighthouse. Image pipeline: Next.js Image + sharp through CloudFront with custom cache behaviours.
Want to talk about performance work for emerging markets?
I'm open to senior frontend roles — remote, or Islamabad/Rawalpindi-based.