Shopify
A Performance Budget That Survives Contact With a Real Store
Performance work that is not enforced gets undone within a quarter. Here is the budget I use, the numbers behind each limit, and how to fail a build on it.
Measuring before optimising: Core Web Vitals, render time, flame graphs and finding the bottleneck that actually matters.
Shopify
Performance work that is not enforced gets undone within a quarter. Here is the budget I use, the numbers behind each limit, and how to fail a build on it.
Shopify
Every setting is a conditional in Liquid, a branch in CSS and a support question. I counted what a real theme actually used, and the answer changed how I…
Shopify
One script tag without defer, loading a bundle nothing above the fold needed. How to find what is blocking your paint and what each fix actually changes.
Shopify
Every element on the page moved down 44 pixels, a third of a second after paint. Finding the culprit took one API and a screen recording.
Shopify
Uninstalling apps one at a time and re-running Lighthouse is not a method. Here is how to attribute main thread time and bytes to a specific app in one pass.
Shopify
Someone added loading lazy to every image in the theme, including the one the browser needs first. Here is how the biggest LCP regression I have seen was…
DevOps
The deploy was reverted in four minutes, and the incident lasted an hour, because the edge cache held the broken build and kept serving it to everyone the…
Performance
The invoice tripled with no traffic change, because the prompts tripled, and nobody was reading tokens as a metric.
Shopify
The srcset was correct and the browser still downloaded the largest file. The sizes attribute was lying, and almost every theme I audit gets it wrong.
Performance
The LLM answered in four hundred milliseconds and the request took four seconds. The gap was retrieval, a vector search over an index nobody sized, chunked…
Shopify
The converted price looked right on the product page and wrong on the invoice, by a cent, in every market but the home one.
Performance
Nothing about the query changed. The table crossed the size where the planner stops choosing the index and starts scanning, because the working set stopped…