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.