Why I Chose Astro for This Site
A short rationale for picking Astro over Next.js for a technical blog and portfolio. Spoiler: it's the content layer.
The Decision
I’ve built plenty of sites with Next.js. It’s excellent for applications. But for a content-first portfolio with a blog, Astro makes more sense.
What Sealed It
Content collections with type safety. Astro’s content layer gives you Zod-validated frontmatter out of the box. No more runtime surprises from malformed markdown.
Zero JS by default. My blog posts are static HTML. No hydration, no client-side routing, no bundle to worry about. The pages that need interactivity opt in with islands.
MDX with Shiki. Code highlighting happens at build time. The output is pure HTML with inline styles. No client-side syntax highlighting library needed.
Performance
First build of this site: 1.2 seconds. Lighthouse score: 100 across the board. I didn’t have to do anything special to achieve this.
Trade-offs
- Fewer ready-made components compared to the Next.js ecosystem
- Server-side rendering requires an adapter (I don’t need it)
- Smaller community, though growing quickly
For a blog that’s mostly words and code, Astro is the right tool.