The situation

Parawingfoil.com is a niche authority site covering parawing foiling gear and brand reviews. It had recently been migrated from WordPress to a modern static stack (Astro 5 on Netlify) as part of a broader architecture overhaul we led.

The migration was done. The content was live. But a Lighthouse audit told a different story: SEO at 69, mobile performance at 77, accessibility at 96. For a site where organic search is the entire growth strategy, these numbers were actively holding it back.

Our approach

This is how we work. We don't guess at performance problems. We instrument, measure, and fix in a tight loop, using the right tools at each stage.

01 Audit with the right tooling

We ran Google PageSpeed Insights against the production URL, not a local build. This matters because hosting configuration, CDN behaviour, and HTTP headers all affect real-world scores. Lighthouse flagged four distinct issues, each requiring a different type of fix.

02 Interrogate the codebase with AI

Rather than manually tracing through configuration files and stylesheets, we used Claude Code to interrogate the entire codebase at once. Within seconds we could cross-reference the Netlify config, Astro layouts, CSS design tokens, and image pipeline to pinpoint the root cause of each issue. What might take an hour of manual investigation took minutes.

03 Fix, deploy to staging, verify, repeat

Every change went through a staging branch first. We pushed to a Netlify branch deploy, re-ran Lighthouse against the preview URL, confirmed the improvement, then moved to the next issue. No batch deploys. No hoping for the best. Each fix was validated before the next one started.

04 Push to production only when verified

Once all four categories hit 100 on staging, we merged to production. The entire audit, fix, verify, deploy cycle completed in a single working session.

What we found and fixed

Each problem required understanding the full architecture, not just the symptom Lighthouse reported.

SEO 69 → 100

Production was invisible to Google

A noindex header, intended only for preview deploys, was scoped globally in the Netlify configuration. It applied to every deploy context, including production. Google was being told not to index the live site. This is the kind of issue that's invisible from the code alone. You only catch it by understanding how the hosting platform interprets your configuration.

Performance 77 → 100

Images were built for desktop, served to everyone

The image pipeline used fixed-width density descriptors, a common default that works fine on desktop but forces mobile devices to download oversized files. We restructured the entire image system to use responsive widths and sizes attributes, set webp as the default output format, and added lazy loading to below-fold images. The homepage hero dropped from 844 KiB to 48 KiB on mobile.

Performance 1,650ms saved

External font requests blocked rendering

Google Fonts was loaded via a CSS @import, creating a four-request chain that added 1,650ms to the critical rendering path on mobile. We downloaded the woff2 subsets, self-hosted them on the same domain, and replaced the external dependency with local @font-face declarations and a preload hint. The entire render-blocking chain was eliminated.

Accessibility 96 → 100

Footer text failed contrast requirements

A design token in the CSS custom properties was producing a 3.5:1 contrast ratio against the dark background. WCAG AA requires 4.5:1 for normal text. We adjusted the token value to hit 4.8:1 while preserving the same visual tone across the design system.

The result

Performance

77 100

Accessibility

96 100

Best Practices

100 100

SEO

69 100

Why this matters

A modern tech stack doesn't guarantee performance. Astro, Netlify, and Sharp are excellent tools, but they need to be configured correctly and the architecture decisions need to be right. Knowing which image strategy to use, how hosting headers propagate, when to self-host versus use a CDN: these are the decisions that separate a fast site from a slow one.

By combining deep platform knowledge with AI-assisted codebase analysis, we compressed what would typically be days of investigation and iterative deployment into a single focused session. That's the value of having the right systems and the right tools working together.