Google's PageSpeed report on an agency site I co-own was ugly. Desktop 79. Mobile 60. Mobile LCP at 11.7 seconds, which is the kind of number that makes you close the tab.
I sent my AI coworker the two report links on a Saturday morning and told it to get the scores to 100.
Eleven minutes later it had already shipped a first round of theme changes and told me one of them backfired.
Desktop was up 13 points and mobile LCP had dropped by more than half, but Total Blocking Time went the wrong way. It flagged that itself instead of reporting the good half and stopping. That is the behavior I care about more than the score.
Where the 46 Minutes Went
Nothing on the list is exotic. That is the point. Every item was already sitting in the theme, and none of it needed a developer ticket:
- Fonts were loaded twice. Typekit and Google Fonts were both called in
theme.liquidand again inheader.liquid, so every visitor paid for the same requests twice. - A font was being downloaded that the CSS immediately overrode. Nobody sees it, everybody waits for it.
- Typekit was render-blocking. Making it async saved about 1,960ms of blocking on mobile.
- The largest homepage image had no
preload. Adding one, plus apreconnectto the CDN, is most of the LCP win. - Eight hero gallery images were loading eagerly. Only the first one is visible. The other seven now lazy load.
- Images were being served at full size and scaled down in the browser. Adding CDN width params cut roughly 30% off each, and one collage image went from 1.46MB to about 300KB.
Mobile LCP finished at 5.0 seconds on good runs, down from 11.7. Desktop TBT went from 300ms to 70ms. Desktop landed at 92, in the green.
Then It Told Me No
I asked for 100. It came back and said 100 is not happening on this stack, and showed its reasoning.
Shopify injects its own analytics and checkout JavaScript through content_for_header and you cannot strip it. Two stylesheets have to stay render-blocking or the page renders wrong. The mobile test simulates slow 4G on a low-end Android, which punishes any image-heavy page. Getting to 90+ on mobile would mean a headless rebuild in Hydrogen or Next.js.
That answer saved me more money than the speed fixes did. A headless rebuild is weeks of work and a permanent maintenance tax, bought with a lab score that is not the same thing as what real visitors experience.
The Second Question in That Message
I had also asked whether every new blog post was actually making it into the sitemap I submitted to Search Console. Answer: Shopify adds published articles to sitemap_blogs_1.xml automatically, so they were in there, but nothing was telling Google to come look.
So it changed the publishing routine to resubmit the sitemap after every new post. Small thing, and it is the kind of small thing that quietly never gets done.
What This Cost Me
Four Slack messages and 46 minutes of clock time on a Saturday, most of which I spent not at my desk. No agency retainer, no dev sprint, no Lighthouse plugin subscription.
The honest limitation: these are lab scores from a synthetic test. Field data in Search Console moves later and moves less. Desktop 92 and a mobile LCP cut in half is a real improvement for real visitors, but I did not turn the site into a rocket in one morning and I am not going to claim I did.
If You Want to Run This on Your Own Site
- Pull your PageSpeed report for desktop and mobile separately. They fail for different reasons and the mobile one is where the money is.
- Search your theme for duplicate font loads. Multiple themes and apps stacking over the years makes this common.
- Check whether your hero image has a
preloadand whether everything below the fold is lazy loaded. - Look at the actual byte size of your biggest images. A 1.4MB image on a homepage is not rare.
- Decide up front what score is good enough, so nobody talks you into a rebuild over 25 points on a simulated phone.
Viktor is the AI coworker that did this. It lives in my Slack, and it had access to the theme files and the PageSpeed data at the same time, which is why it could read a report and ship the fix without a handoff to anyone. It also rebuilt this website and audited the analytics on that same agency site, where it found most of the traffic was bots.
If you want to point it at your own site, you can get $100 in free credits plus $50 off your first purchase here.
More real examples, screenshots and all: my full Viktor review.