Decision Guides

Astro vs Next.js: My Blog Stack Decision

I spent two weeks building the same blog twice - once with Astro, once with Next.js. This isn't a feature checklist. It's what actually mattered when I sat down to write and ship.

Quick Verdict

Choose Astro if... Choose Next.js if...
Content is 90%+ static pages You need auth, API routes, or dynamic data
Performance and SEO are top priority You're already in the React ecosystem
You want minimal JavaScript shipped You plan to add interactive features later
You're comfortable with multiple UI frameworks Your team only knows React

What I Tested

Both versions included:

  • Homepage with article cards
  • Category filtering
  • Markdown-based article pages
  • Responsive layout (mobile + desktop)
  • Deployment to Vercel

Astro: The Good

  • Blazing fast - Lighthouse scores consistently 98—00
  • Content collections - type-safe Markdown with frontmatter validation
  • Islands architecture - add React/Vue/Svelte only where needed
  • Simple mental model - it's mostly HTML with sprinkles of JS

Astro: The Friction

  • Smaller ecosystem for plugins and themes
  • Dynamic features (search, comments) require more manual work
  • Learning curve if you're used to everything being a React component

Next.js: The Good

  • One framework for everything - blog today, SaaS tomorrow
  • App Router + MDX - powerful content + interactivity
  • Massive ecosystem - auth, ORM, UI kits all plug in easily
  • Server components - great performance without giving up React

Next.js: The Friction

  • Heavier than needed for a simple blog
  • Build times grow with project complexity
  • Easy to over-engineer a content site

Performance Numbers

Astro (static):
  First Contentful Paint: 0.4s
  Total JS shipped: 12 KB
  Build time: 8s

Next.js (static export):
  First Contentful Paint: 0.9s
  Total JS shipped: 89 KB
  Build time: 22s

My Decision

For a content-first blog like this one, I went with Astro. The performance difference is real, and I don't need server-side features yet.

But I kept the Next.js version as a branch. If I add user accounts, a newsletter signup with API routes, or a searchable archive, I'll switch without starting over.

The best framework is the one that matches your next 6 months, not your next 6 years.

Decision Framework

  1. List the features you need today (not someday)
  2. Build a minimal version in both frameworks for 2— days
  3. Measure build time, deploy complexity, and Lighthouse scores
  4. Pick the one you'd enjoy maintaining weekly
In This Article
  • Quick Verdict
  • Astro: Pros & Cons
  • Next.js: Pros & Cons
  • Performance Numbers
  • My Decision
  • Decision Framework