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
- List the features you need today (not someday)
- Build a minimal version in both frameworks for 2— days
- Measure build time, deploy complexity, and Lighthouse scores
- Pick the one you'd enjoy maintaining weekly