Next.js is fast by default. It is also very easy to make slow by accident.
Most performance problems I see in Next apps are not about React being slow or Vercel being expensive. They come from unclear boundaries, duplicated work, and letting “temporary” decisions live forever.
These are notes on how to keep a Next.js codebase fast to build, predictable to run, and pleasant to work in.
Start by making the codebase legible
Before touching performance tools, make the project understandable.
If a new developer cannot tell where hooks live, where API logic lives, or where page copy lives within a few minutes, you will pay for that confusion forever.
A boring structure wins.
Keep one place for hooks. One place for shared UI components. One place for content and metadata. Thin pages that mostly wire things together.