Context
When choosing a blog framework, many reach for Next.js by default. But is it really the best fit? This article compares Astro and Next.js across key dimensions.
Performance Comparison
| Metric | Astro | Next.js (static export) |
|---|---|---|
| Default JS Bundle | 0 KB | ~45 KB (React) |
| TTI | Instant | Requires hydration |
| Lighthouse | 100/100 | 85–95/100 |
Astro ships zero JavaScript by default. Your blog post pages are pure HTML + CSS. Only explicitly marked client:load components load interactive JS.
Next.js includes the React runtime (~45 KB gzipped) on every page, even if the page needs no interactivity at all.
// Astro — load JS only when needed
<Comments client:visible />
// Everything else is pure HTML
Developer Experience
Astro:
.astrofiles feel like HTML, minimal learning curve- Built-in Content Collections with TypeScript safety
- Markdown/MDX as first-class citizens
Next.js:
- Massive ecosystem, plugin-rich
- Static export has many limitations (no ISR, no Middleware)
- Frequent breaking changes between majors
Conclusion
For content sites (blogs, docs, marketing), Astro is the better choice. Next.js shines for applications needing heavy client-side state (dashboards, SaaS).
BePhil chose Astro. This article proves it.