APRIL, 2026

Fix Performance With a Claude Skill

Github repo

My Vercel Speed Insights score sat at 89, stuck in orange. I knew the site had a problem. I just didn't want to dig through performance docs to find it.

Vercel Speed Insights dashboard showing a Real Experience Score of 89 with First Contentful Paint at 2.86s

Try it yourself

npx skills add IpshitaChatterjee/performance-fix

Open your project in Claude Code and use /performance-fix It asks for your deployed URL and a free Google PageSpeed API key (2 minutes to set up), then returns a prioritized report in plain language.

The problem

Four problems I never would have caught on my own, in my /about page:

CulpritWeightNext steps
Sketchbook videos (uncompressed)57 MBcompressed videos
Timeline polaroid photos (11 raw <img>)~15 MBadd next/image with lazy loading
CameraRoll travel photos (5 raw <img>)~10 MBadd next/image with lazy loading
Album cover PNG534 KBadd next/image with avif/webp

The page felt fast. First content painted in 0.9 seconds. But the largest element took 30 seconds to load. That's what Lighthouse measures.

The results

Vercel Speed Insights dashboard after fixes — Real Experience Score of 96, desktop

MetricMobile BeforeMobile AfterDesktop BeforeDesktop After
Overall score75 🟡77 🟡60 🟡98 🟢
LCP30.8s5.5s9.9s1.2s
TBT10ms30ms190ms10ms
Speed Index2.3s4.4s5.2s0.8s
FCP0.9s0.9s0.3s0.3s
CLS0000

Desktop went from 60 to 98. That felt like a real win. And, the Vercel speed inisights dashboard shows a 7 point jump! The page loads in 1.2 seconds now instead of almost 10. I didn't have to understand what LCP stood for to know that was a lot better.

One metric actually got worse on mobile, Speed Index went from 2.3s to 4.4s. The skill flagged this and explained it is probably not a real slowdown. When images are properly optimised and preloaded, the browser changes how it calculates when the page looks "done." It is a measurement quirk, not something the user would notice.

Why mobile is still not perfect

This one took me a while to understand.

Every component on my /about page is marked as a client component, meaning the browser has to load and run all the JavaScript before it can even start showing images. On a fast laptop that happens quickly. On a phone with a slower connection it adds a few seconds before anything appears.

The images are now small and optimised. That problem is solved. The remaining slowness is about how the page is built, not what it contains. Fixing it properly would mean rethinking which parts of the page actually need to run in the browser and which could just be plain HTML. That is a bigger project for another time.

© ipshita chatterjee, built with claude, and original taste