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) => {






