Core Web Vitals are captured automatically by the Pro, Pro+SPA, and Lite browser agent. Read the docs
Checking for browser agent…
LCPwaiting–
CLSlive0.000
INPclick something–
FCP–
TTFB–
LCP mode poorCLS mode poor
Arrived lateFree shipping on orders over $50, today only.
Arrived late · watch CLS

Fall sale: 25% off swag

In poor CLS mode this banner shows up 1.2 seconds after load and pushes the whole page down.

Why did the page jump?
Recommended for you
Observability tee
Golden signals mug
Full-stack hoodie
Sticker pack
Loading hero image…
New Relic Core Web Vitals

Slow by
design.

This page breaks the three Core Web Vitals on purpose. Watch the scorecard above, flip each one to good, and then find your numbers in New Relic.

Your data is tagged as … NR-XXXX Change

Everyone shares one New Relic account, so your name and session code are attached to your data as demoUser and demoCode (your name also becomes your end-user ID via setUserId()). Use the code to filter the queries below down to just your own data.

Try it / The labs

Feel the difference

LCP and CLS are decided while the page loads, so changing them reloads the page. Both modes are saved on your data as lcpMode and clsMode. INP depends on your clicks, so it has its own lab. The scorecard in the header updates live.

LCP
CLS
Reloading also sends this view's CLS and INP to New Relic.
Largest Contentful Paintpoor

The slow hero

LCP is when the biggest thing in the viewport finishes painting, here the hero image. In poor mode JavaScript adds it after 4.5 seconds.

Waiting for the largest paint…
<!-- The fix: ship it in HTML, fetch it first -->
<link rel="preload" as="image" href="hero.jpg"
      fetchpriority="high">
<img src="hero.jpg" width="2400" height="1000">

Tip: LCP stops updating at your first click, so let the hero load first.

Cumulative Layout Shiftpoor

The jumping page

CLS adds up how far visible content moves on its own. In poor mode a banner, recommendations and a shipping notice arrive late and push the page down. In good mode their space is reserved.

No layout shifts yet.

Shifts within 500 ms of your input do not count. Try both:

Order #1042 shipped
  • Layout shifts will be listed here.
Interaction to Next Paintyour clicks

The laggy buttons

INP is how long the page takes to respond after you click, tap or type. Click each button and watch the log.

  • Your interactions will be listed here.
// The fix: show feedback, then do the heavy work
button.textContent = 'Working…'
await new Promise(r => requestAnimationFrame(() => setTimeout(r)))
recalculateTotals()
Find it / Search the shared account

Find your vitals

Core Web Vitals land as PageViewTiming events, one per metric (timingName = lcp, cls, inp, and more). Durations are stored in seconds.

CLS and INP are sent when you leave this page view. Switch tabs, reload, or use "Reload with these settings" to send them. LCP is sent after your first interaction or when you leave.

Your page views

Every vital from your visits, with the LCP element and the button that caused your worst INP.


          
Open New Relic

Good vs poor, everyone

The 75th percentile is how Google judges a page. Compare every visitor's runs by mode.


          

In the Browser UI

  1. Open Browser, pick the demo app, and look at the Core web vitals charts on the summary.
  2. Open Page views and select vitals.html to see vitals for just this page.
  3. For slow interactions, the INP attributes interactionTarget, inputDelay, processingDuration and presentationDelay tell you which element was slow and why.
Why do my numbers differ a little?The scorecard is this page's own live measurement. New Relic uses Google's web-vitals library, which finalizes values at slightly different moments.