Improve Core Web Vitals before launch

Practical LCP, CLS, and INP fixes to ship before you announce.

Core Web Vitals affect both search visibility and conversion. This popular guide shows how to set budgets, fix LCP and CLS, improve INP, and verify on production-like previews before you announce a launch.

Target healthy mobile scores: LCP at or under 2.5s, CLS at or under 0.1, and INP at or under 200ms for good thresholds. Field data (CrUX / RUM) beats a single lab run, but lab is how you catch regressions in CI.

Set budgets

Write mobile budgets into the launch checklist: LCP ≤ 2.5s, CLS ≤ 0.1, and a JavaScript payload ceiling for third parties. Budgets without owners are wishes — assign engineering and marketing counterparts for tag weight.

  1. Record budgets in the project README and deploy gates.
  2. Inventory third-party scripts and their owners.
  3. Agree which pages are in scope (Home, PDP, checkout start).
  4. Fail CI when lab LCP regresses beyond a delta on key templates.
budgets.mobile.json
{
  "lcpMs": 2500,
  "cls": 0.1,
  "inpMs": 200,
  "maxThirdPartyKb": 150
}
Tip

Measure on mid-tier mobile throttling, not only on a gaming laptop on office Wi-Fi.

Fix LCP

Identify the LCP element (often a hero image or headline). Compress it, set dimensions, preload or use fetchpriority="high", and serve modern formats. Avoid late-loading hero carousels on landing pages — the first slide should be in the initial HTML.

Fonts: use font-display: swap or optional with fallback metrics to reduce invisible text. Host critical fonts with good caching. Avoid enormous icon fonts when a few SVGs will do.

  • Eliminate discoverability delays: LCP image should not be injected late by JS.
  • Reduce TTFB with edge caching for HTML where safe.
  • Defer non-critical JS; especially tag managers stuffed with unused tags.
  • Prefer CSS background only when you accept harder priority control — img is usually clearer for LCP.

Product pages: primary image first in the gallery markup. Blog posts: avoid mega-widgets above the article title.

Fix CLS

Reserve space for images, embeds, and banners with width/height or aspect-ratio boxes. Load fonts without layout thrash — subset and match fallback metrics. Never inject late ads or cookie banners above existing content without placeholders.

Dynamic inserts (geo banners, promo bars) should push content only inside reserved regions. Skeletons help perceived performance and stability when data arrives async.

  • All above-the-fold images have dimensions
  • Cookie/consent UI reserved or overlayed without shifting heroes
  • No webfont swap that reflows body text dramatically
  • Ads and embeds wrapped in sized containers

Improve INP

Break up long tasks, debounce noisy handlers, and avoid large synchronous JSON parsing on click. Prefer progressive enhancement for non-critical widgets. Hydrate only interactive islands when using heavy frameworks on marketing pages.

Verify on preview

Run Lighthouse (or equivalent) on the production-like preview and compare field data after launch. Treat vitals as a deploy gate, not a one-time audit. Re-check after marketing adds tags.

Create a RUM dashboard segmented by template. A blog regression should not hide a checkout problem — and vice versa.

Troubleshooting

Lab good, field bad: third parties and real devices; audit tags and image CDNs by geography.

CLS spikes intermittently: A/B tools swapping heroes late — decide variants earlier.

LCP is text: ensure font loading does not delay the paint of the headline unnecessarily.

Best practices

Performance is a product feature. Keep a performance budget review on the same calendar as content launches. Prefer fewer, better tags. Celebrate removals. Pair with SEO fundamentals and Scaling & CDN for a complete launch readiness story.

Prerequisites & preparation

Before changing production settings for Core Web Vitals, align the people who own content, DNS, analytics, and approvals. A fifteen-minute kickoff that names owners prevents multi-day Slack archaeology later. Capture decisions in the workspace notes so the next teammate inherits context instead of guesswork.

Gather credentials and access: workspace admin or editor role, DNS control when hostnames are involved, payment or API sandbox accounts when money paths are involved, and a shared checklist link. Confirm which environment you will rehearse in — preview first, production only after a green run.

Assign owners for engineering budgets and marketing tag weight; pick in-scope templates.

Detailed walkthrough

Work the happy path slowly the first time. Narrate what you expect to see after each click: a status badge, a DNS record, a webhook delivery, a Lighthouse metric. When reality diverges, stop and resolve the mismatch instead of clicking ahead — most outages begin as ignored yellow states.

  1. Commit mobile budgets for LCP, CLS, INP, and third-party kilobytes.
  2. Fix LCP: optimize the hero, priority hints, modern formats, fewer late carousels.
  3. Fix CLS: dimensions, reserved banners, calmer font loading.
  4. Improve INP by breaking long tasks and reducing hydration on marketing pages.
  5. Gate deploys on lab budgets and monitor field RUM by template after launch.

Edge cases & failure modes

Plan for partial failure. Networks drop, registrars delay, providers rate-limit, and humans approve the wrong revision. Your runbook should say what “abort” looks like: leave preview up, roll back the release, or freeze campaigns until metrics recover.

  • Lab green but field red from third parties on real devices.
  • A/B tools swapping heroes late and spiking CLS.
  • Tag managers accumulating unused tags after campaigns end.

QA checklist before you announce

  • Happy path verified on mobile and desktop
  • Failure path messaging reviewed
  • Owners named for the first hour after launch
  • Rollback or freeze path documented

Operating the change

After launch, watch the metrics that prove the change worked — not vanity charts. Pair quantitative signals with one qualitative check (support ticket themes, sales feedback). Schedule a follow-up within a week to remove temporary flags, raise DNS TTLs, or archive the experiment.

Re-audit after every major tag or design change; celebrate tag removals.

Team habit

Treat Core Web Vitals as a repeatable playbook. The second time your team runs it should be faster because the checklist and owners already exist.

Performance is a product feature that affects conversion, not only SEO folklore.

Measure on mid-tier mobile throttling to avoid laptop-Wi-Fi false confidence.

Prefer img elements with priority control over mysterious CSS background heroes for LCP.

Cookie banners need reserved space or overlays that do not shove the hero.

Segment RUM by template so blog and checkout regressions do not hide each other.

Third-party budgets need named owners — orphaned pixels never delete themselves.

Hydrate interactive islands instead of entire marketing pages when frameworks are heavy.

Keep vitals on the same calendar as content launches; otherwise design wins while metrics lose.

Implementation checklist

Confirm written mobile budgets with owners on preview before you promote. Name who approves the change, which environment is authoritative, and what “done” looks like in measurable terms.

Document LCP element optimization and priority where the team already looks — workspace notes or the engineering handbook — not only in a meeting memory.

Rehearse CLS reservations for banners and embeds against written acceptance checks. If you cannot name the verification event (order, DNS lookup, deploy health, or signed API call), you are not ready to announce.

Measure INP long-task reduction with anonymized but realistic data, and keep logs, headers, or screenshots for at least one release cycle so regressions have a baseline.

Operating it with your team

Automate third-party kilobyte budgets so the next teammate can repeat the path without tribal knowledge. Prefer vaulted secrets over chat paste, and archive temporary exceptions with an end date.

Review lab gates in CI on key templates when two tools disagree. Pick a source of truth in advance so incidents do not burn the rollback window debating dashboards.

Validate field RUM segmented by template before paid traffic or customer emails amplify mistakes. Capture request IDs or screenshots for support if anything looks off.

Schedule a follow-up on tag removal after campaigns end after launch, update the runbook when reality differs from the doc, and assign a named owner for the first hour.

When you finish this guide, you should be able to explain the happy path, the abort path, and the metrics that prove success. If any of those are fuzzy, revisit the walkthrough with your teammates before you scale traffic, spend, or automation.

Improve Core Web Vitals before launch — Build Me Web Docs