All writing

essay

Why I Switched to Astro

My journey from React SPAs to Astro's island architecture

web-devastroperformance

On this page

After years of building everything with React, I finally made the switch to Astro for my personal site. Here’s why.

The Problem with SPAs for Content Sites

Don’t get me wrong - React is fantastic for complex, interactive applications. But for a portfolio site that’s mostly static content with a few interactive bits? It’s overkill.

My old React portfolio was:

  • Shipping 300KB+ of JavaScript to show some text and images
  • Slow to load on mobile networks
  • A pain to maintain as dependencies aged

What Drew Me to Astro

1. Zero JavaScript by Default

Astro ships zero client-side JavaScript by default. Need some interactivity? Add it only where needed with “islands”. This is exactly what I wanted - a mostly static site with sprinkles of interactivity.

2. Component Agnostic

I can use .astro components for most things, but drop in React, Svelte, or Vue when I need them. The flexibility is refreshing.

3. Content Collections

Writing blog posts in Markdown with proper TypeScript schema validation? Yes please. No more fighting with CMS integrations.

4. Fast Build Times

My old React portfolio took 30+ seconds to build. Astro builds in under 5 seconds. The DX improvement is real.

The Tradeoffs

Nothing is perfect. A few things I miss:

  • Less mature ecosystem compared to Next.js
  • Fewer hosting optimizations (though Vercel support is solid)
  • Some learning curve with the island architecture

The Result

This site you’re reading right now is built with Astro. It scores 100 on Lighthouse performance, loads instantly, and is a joy to maintain.

For content-heavy sites, Astro just makes sense. I’m not going back.