> Engineering
Why We Chose Next.js for Client Projects
The reasoning behind our default web stack, and when we recommend something different.
We default to Next.js for most client web projects, and we get asked why often enough that it's worth writing down.
The first reason is flexibility — Next.js lets us choose static generation, server rendering, or client rendering per route, so a marketing page can be blazing-fast static HTML while a dashboard behind a login can be fully dynamic, all in one codebase.
The second is the ecosystem: React's talent pool is large, which matters for long-term maintainability — clients aren't locked into a framework only we know well. The third is built-in performance defaults: image optimization, code splitting, and font loading are handled for you instead of requiring manual tuning.
That said, Next.js isn't always the right call. For a simple static marketing site with no interactivity, a plain static site generator can be simpler and cheaper to host. For certain data-heavy internal tools, a backend-first framework might reduce overall complexity. We scope the stack to the project, not the other way around — Next.js just happens to be the right fit most of the time.