We measure performance on users' devices and networks, not on developer machines. The gap between the two is wide enough to change architectural decisions.
- Ship as little JavaScript as possible and load the rest on demand.
- Reserve image space up front so the layout never jumps during load.
- Self-host fonts and download only what the displayed language needs.
- Make the page useful before it is complete, not after.