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.

Build Logs

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.

Let's build something together

I'm always interested in hearing about new projects, particularly around AI systems, security, and infrastructure.