Skip to content
Back to Blog
Next.jsArchitectureOpinion

Why I Build Everything with Next.js

March 1, 20262 min read

I've built production apps with Rails, Django, Express, Remix, SvelteKit, and plain React. These days, almost everything I build starts with Next.js. Here's why.

Server Components Changed the Game

React Server Components eliminated the biggest pain point of React development: the waterfall of client-side data fetching.

// This runs on the server. No loading spinners. No useEffect.
export default async function ProjectPage({ params }) {
  const project = await db.project.findUnique({
    where: { slug: params.slug },
  });

  return <ProjectDetail project={project} />;
}

The mental model is simpler: components that fetch their own data, on the server, with no client JavaScript by default.

The Full-Stack Sweet Spot

Next.js sits in a unique position: it's a frontend framework that's genuinely good at backend work.

  • API Routes handle webhooks, form submissions, and third-party integrations
  • Server Actions eliminate the REST boilerplate for mutations
  • Middleware handles auth, redirects, and geo-routing at the edge

For most client projects, I don't need a separate backend service. Next.js handles it all in one deployable unit.

When I'd Choose Something Else

Next.js isn't always the answer:

  • Heavy real-time apps — if WebSockets are the core feature, I'd reach for a dedicated Node/Bun server
  • Static-first content sites — Astro is lighter and faster for pure content
  • Mobile apps — React Native or Flutter, obviously
  • Microservices — individual services don't need a full framework

But for the 80% of projects that are "web application with some API endpoints and a database" — Next.js is hard to beat.

The Vercel Factor

I'd be dishonest if I didn't mention deployment. Next.js on Vercel is the most frictionless deploy experience I've used. Push to Git, get a preview URL, promote to production. No Docker, no CI config, no infrastructure management.

For client projects where I want to spend time on the product and not on DevOps, this matters a lot.