June 20, 2026 · 6 min read
How giftlist.life scores a perfect Lighthouse 100
What it takes to ship 119 pages that load in under a second, and why we build every client site to the same bar.
giftlist.life is one of our own products: a curated, editorial gift-recommendation site with 119 pages covering occasions, anniversary years, categories and budgets. It scores a perfect 100 in performance on Google Lighthouse, with a Largest Contentful Paint of 0.8 seconds and near-zero layout shift.
That number is not an accident, and it is not exotic. It is the result of a handful of deliberate choices that any site can make. Here is how we did it.
Ship HTML, not a JavaScript app
The single biggest decision was to build the site as static HTML. Every one of the 119 pages is rendered at build time and served as a plain .html file. There is no client-side framework booting up, no data-fetching waterfall, no spinner. When the browser receives the page, the content is already there.
We use Astro for this. It lets us author pages with components (the same developer ergonomics as a modern framework) but ships zero JavaScript by default. The browser gets HTML and CSS, and nothing else unless a specific piece of the page actually needs interactivity.
This is also why the site is easy for search engines to index: there is nothing to wait for. The full content is in the initial response.
Treat images as a performance budget, not an afterthought
Images are where most sites lose their performance score. We:
- Serve modern WebP with correct dimensions, so the browser never downloads a 2000px image to show it at 400px.
- Set explicit
widthandheighton every image so the layout never jumps as things load, which keeps Cumulative Layout Shift near zero. - Lazy-load anything below the fold, so the first screen loads with only what it needs.
Send less CSS and no blocking scripts
The stylesheet is generated with Tailwind, which means the production CSS contains only the classes the site actually uses. There is no giant framework stylesheet. There are no render-blocking third-party scripts fighting for the main thread.
Why this matters for client work
giftlist.life is our own project, but it is also a working demonstration. When a client asks us to build a website, this is the standard we start from: fast, accessible, and search-friendly by construction, not by bolting on optimizations at the end.
A fast site is not a luxury. It ranks better, it converts better, and it respects the people visiting it, including the ones on a phone with a weak connection. If you want a site that performs like this, get in touch.