← Back

The Tradeoffs I Accepted to Ship a Fully Static Site

Choosing output: "export" in Next.js is a commitment. It means no API routes, no server actions, no middleware, no per-request anything. All data is known at build time or it does not exist.

What I gave up

  • Runtime personalization
  • On-demand revalidation
  • Anything that reads the incoming request

What I gained

  • The site deploys as plain files to GitHub Pages
  • There is no server to pay for, patch, or page me at 2am
  • Every route is a cacheable, CDN-friendly HTML document

The honest part

For a personal site, none of what I gave up matters. Matching the tool to the job — a static site for static content — is itself the signal I want to send. The restraint is the point.