Most "make it faster" advice assumes you can rebuild. On real small-business sites — a clinic on WordPress, a retailer on a 2018 theme — you usually can't. Here's how we cut Interaction to Next Paint (INP) on a legacy site from ~480ms to under 200ms without a rewrite.

1. Find the slow interactions, don't guess

INP measures the worst interaction, not the average. Pull real-user data first:

import { onINP } from 'web-vitals';

onINP((metric) => {