← Back to blog
Next.jsWeb Dev

Why I chose Next.js for my personal site

A quick look at the trade-offs I considered when choosing a framework for a personal website in 2026.

Why I chose Next.js for my personal site

There are a lot of options for building a personal site in 2026. Static site generators, meta-frameworks, even plain HTML. Here's why I landed on Next.js.

The requirements

My site needed to be:

  1. Fast — static pages where possible
  2. Low maintenance — no CMS to manage, no database
  3. Easy to extend — I want to add pages and apps over time

Options I considered

Plain HTML/CSS

The simplest option. But I knew I'd want React eventually for interactive pieces.

Astro

Very compelling. Excellent static output, markdown-native, minimal JS by default. Almost went with this.

Next.js

The App Router with React Server Components gives me a good mental model. Server components for static content, client components only where interactivity is needed. And it's easy to add API routes if I ever need them.

What I settled on

Next.js with the App Router. Static generation for the blog, client components for the password-protected showcase area. The blog posts are plain markdown files — no CMS, just a content/posts/ folder.

It's a bit more opinionated than Astro, but the React ecosystem is where I spend most of my time, so the tooling feels familiar.

Code snippet

Here's how a simple server component in Next.js looks:

// This runs on the server — no "use client" needed
export default async function Page() {
  const data = await fetchSomething();
  return <div>{data.title}</div>;
}

Clean and simple. The async/await in React components is one of my favorite things about the modern Next.js model.


That's it for now. Next post will be about setting up the markdown pipeline.