Why I Switched to Astro for My Personal Site

3 min read
Astro Web Dev Performance

I’ve rebuilt my personal site more times than I’d like to admit. Gatsby, Next.js, even a brief Hugo phase. Each time, I’d spend a weekend setting up the framework, another weekend tweaking the design, and then never write a single post.

This time is different — and not just because I’m saying that again.

The Problem with Over-Engineering

My last personal site was a Next.js app with:

  • Server-side rendering
  • A headless CMS
  • Tailwind + custom design system
  • Automated OG image generation
  • CI/CD pipeline with preview deployments

For a blog that had three posts.

# The most honest git log of my life
$ git log --oneline
a3f1c2d fix: og image generation (again)
8b2e1f0 feat: add dark mode toggle
4d1a3c8 chore: update 47 dependencies
1e0f2b3 initial commit
# Zero actual content commits

Why Astro Clicked

Astro’s pitch is simple: ship less JavaScript. For a content site, that’s exactly right. My pages are static HTML with zero client-side JS unless I explicitly opt in.

What I Like

Content collections are genuinely great. Define a schema, drop MDX files in a folder, and Astro handles the rest. Type-safe frontmatter without a CMS.

Island architecture means I can sprinkle interactivity where needed without hydrating the entire page. The copy button on code blocks? That’s a tiny island. The rest of the page is pure HTML.

Build speed is noticeably fast. Full builds in under a second for a small site. No webpack config files to debug.

The Tradeoffs

It’s not perfect. The ecosystem is younger than React’s, so you’ll write more things from scratch. The docs are good but not exhaustive — I’ve read source code more than once.

And if you’re building something genuinely interactive — a dashboard, a real-time app — Astro isn’t the right tool. It knows what it is, and that’s a feature.

The Stack

Here’s what I landed on:

LayerChoice
FrameworkAstro
StylingTailwind CSS
ContentMDX
HostingVercel
Domain7assib.com

Total dependencies: minimal. Total JavaScript shipped to the browser: close to zero. Time from npm create astro to deployed site: one afternoon.

Will I Actually Write This Time?

Ask me in six months. But the friction is lower than it’s ever been: create an MDX file, write, commit, push. No CMS login, no build failures, no dependency updates blocking deploys.

That’s the whole point.