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:
- Fast — static pages where possible
- Low maintenance — no CMS to manage, no database
- 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.