Performance isn't a feature you add at the end — it's a budget you spend down with every script and font you bring aboard. Set the budget first and the decisions get easy.

Set numbers you can defend

  • LCP under 2.5s — the hero image or headline should appear fast.
  • CLS under 0.1 — nothing should jump as the page loads.
  • Total JS under ~150KB on the critical path.

Where the weight hides

For most small sites the budget is blown by two things: oversized images and unused JavaScript. Fix those and you've fixed 80% of the problem.

Images

Serve modern formats, size them to the layout, and let the framework lazy-load anything below the fold. A 1600px hero shipped as a 4000px JPEG is the most common self-inflicted slowdown there is.

Fast feels like quality. Slow feels like risk.