A heavy homepage is rarely one decision. It is thirty small ones: a web font nobody chose carefully, a framework loaded to power a menu that could be twenty lines of CSS, three analytics scripts, and images exported at full camera resolution because that is what the camera produced.
We start from a budget instead of a wish list. For most company sites that means under 150KB of JavaScript on first load, one display family with two weights, and images served as compressed WebP at the size they are actually displayed.
Rendering choices matter more than teams expect. If a page looks the same for every visitor, it should be built when the site deploys, not fetched from an API in the browser. On this site the project pages and articles are static files, and the only interactive parts are the navigation, the filters, and the contact form.
What clients feel is simpler than any score: pages open quickly on an average phone over a mediocre connection, and they stay usable while the rest loads. Field data from real visitors is the honest measure, so we track that alongside lab scores.
- Set a page weight budget before visual design starts.
- Build every page that is identical for all visitors at deploy time.
- Serve one image per breakpoint instead of one large original.
- Read field performance data from real visitors, not only a lab score.