Core Web Vitals for PHP monoliths — a field guide
You do not need to rewrite in React to pass INP, LCP, and CLS. A practical checklist for legacy PHP.
Every quarter a founder arrives with the same story: their PHP application ranks well but the Core Web Vitals report in Google Search Console is a sea of red. The instinct is to rewrite. The correct move is almost never to rewrite.
Ninety percent of the wins come from three moves. First, ship a CDN — CloudFront or Cloudflare — in front of your static assets and cache HTML aggressively for anonymous traffic. Second, defer or remove the two or three script tags that block first paint (usually a chat widget and an analytics tag). Third, reserve space for images and iframes so the layout does not shift.
For INP specifically, audit the largest event handlers on the page. Most PHP monoliths carry a decade of jQuery that reflows the DOM on every keystroke of a search input. A five-line debounce often shaves 400ms off INP.
The rewrite conversation is a distraction. Fix the vitals with the stack you have, ship the SEO gains, and revisit architecture from a position of revenue — not panic.