Shopify performance + technical SEO (Lighthouse 41 → 95, SEO 77 → 100)
Note: This case study is intentionally anonymized. Company and internal tooling are omitted. Numbers are from Lighthouse and Semrush (measured period: Nov–Dec 2025 and ongoing).
TL;DR
A Shopify store had poor Lighthouse scores and over 100 site health errors. Through systematic cleanup — scripts, images, structured data, crawlability — I brought Performance from 41 to 95, SEO from 77 to 100, and reduced site health errors from 105 to 1.
Starting point
| Metric | Before | After |
|---|---|---|
| Performance | 41 | 95 |
| Accessibility | 82 | 84 |
| Best Practices | 100 | 96 |
| SEO | 77 | 100 |
| Site Health (Semrush) | 74% (105 errors) | 86%+ (1 error) |
The store was functional but technically neglected. Scripts accumulated over time, images weren’t optimized, meta tags were incomplete, and crawl issues were never cleaned up.
What I fixed
Performance (41 → 95)
- Audited and removed unnecessary third-party scripts — each app or tracking tag that stayed loaded on every page was a performance cost
- Improved image strategy: proper sizing, lazy loading below the fold, modern formats where Shopify supported them
- Reduced layout shifts (CLS) that made the page feel unstable during load
- Deferred non-critical JavaScript so the main content painted faster
SEO (77 → 100)
- Fixed missing and duplicate meta descriptions
- Corrected heading hierarchy (H1/H2/H3 — no skipped levels)
- Added structured data where it was missing
- Cleaned up canonical tags and ensured proper indexation signals
- Fixed crawl errors flagged by both Lighthouse and Semrush
Site Health (105 errors → 1)
- Worked through Semrush’s error list systematically — broken links, redirect chains, missing alt text, orphan pages
- Prioritized by impact: errors first, then warnings, then notices
- Monitored daily during the cleanup window to catch regressions
How I worked through it
This wasn’t a single sprint — it was a deliberate, phased approach:
- Baseline: ran Lighthouse and Semrush, documented starting scores
- Scripts and performance first — the biggest win with the least content risk
- SEO hygiene second — structured data, meta tags, canonicals
- Site health cleanup third — systematic error reduction
- Re-measure after each phase — to confirm impact and catch regressions
The mid-point check showed Performance at 47 and SEO at 92 — progress, but scripts still needed more work. The final pass got Performance to 95 and SEO to 100.
What I took from it
- Performance debt accumulates silently on Shopify — every app install leaves scripts behind, even after uninstall.
- Lighthouse and Semrush measure different things. Both matter. High Lighthouse scores with poor site health (or vice versa) means the job isn’t done.
- The hardest part is discipline: not installing the next quick-fix app before cleaning up what’s already there.