ENGINEERING 2026-06-12 · 6 min read

Why I rebuilt every CoolSoftware site on Astro

Gabriel le Roux
building in the open
[ cover image ]

Every public-facing CoolSoftware site used to be a single-page app. It made sense at the time — I knew React, the tooling was familiar, and “everything is a component” felt clean. Then I actually measured what visitors and crawlers were getting, and the story fell apart.

The problem with shipping a framework to read a blog post

A marketing page or a blog post is, fundamentally, text. When you serve that text through a client-rendered SPA, the browser downloads an empty shell, fetches a JavaScript bundle, executes it, and then paints the content. Search engines and AI crawlers that don’t fully execute JavaScript see the shell. Real users on slow connections see a spinner.

For an app with auth and dashboards, that tradeoff is worth it. For a page whose only job is to be read and indexed, it’s pure overhead.

What Astro changed

Astro renders to static HTML at build time and ships zero JavaScript by default. The content is in the initial response — no hydration step, no bundle to parse before the first paint. The numbers moved immediately:

  • Largest Contentful Paint dropped to well under a second on the marketing pages.
  • The HTML that crawlers receive is the final HTML, structured data and all.
  • I kept writing components — Astro components feel a lot like JSX — but they compile away.

The best optimization is the code you never send. Astro made “send nothing” the default instead of the goal I kept chasing.

What it cost

Honestly, not much. The migration took a weekend per site. The hardest part was unlearning the habit of reaching for client state when a plain HTML form would do. Anything genuinely interactive — a newsletter widget, a search box — becomes an island I opt into, rather than the whole page paying the tax.

Twenty-five years in, I’ve rebuilt the same kind of site on a dozen stacks. This is the first time the fast path and the simple path were the same path.

Gabriel le Roux

Developer for 25+ years, now building small, anti-fragile tools in the open at CoolSoftware.

follow on X linkedin
NEXT POST →
Vibe coding: when to trust the AI, when to read the diff
© 2026 CoolSoftware · Gabriel le Roux · built with Astro Built lean. Shipped fast. Yours to own.