Real-user monitoring

The speed your visitors actually get.

One npm package reports LCP, INP, CLS, FCP and TTFB from real visits. The report names the slow pages, components and visitors, and the deploy that made it worse.

Measured from real visitors
Web Vitals at p75 from the visits your site actually got, each rated Good, Needs work or Poor.
One npm package
For any site, for React, or for Next.js. The install steps arrive with your environment’s key filled in.
Bots out, IP never stored
Bots, headless browsers and Lighthouse runs are dropped before anything is counted.
Deploys marked
Each deploy is compared with the 24 hours before it, so the one that made things worse is named.
Core capabilities

From the number to the cause

Pick a capability to see it drawn from a sample project.

  1. LCP, INP, CLS, FCP and TTFB, each Good, Needs work or Poor. Every metric carries an ⓘ: what it is, where good and poor start, and what usually makes it slow.

Common use cases

Where real visits disagree with the lab

After a release, for one group of visitors, on one page.

seven days of LCP · sample project
After a release

Find the deploy that made LCP worse

Every deploy is compared with the 24 hours before it on LCP, INP, CLS and error rate. In the sample project, v2.4.1 made LCP 18 % worse, and v2.4.2 took it back.

by device, browser and country · sample project
Across your audience

Visitors in one country have it worst

An overall p75 can look fine while one group waits. In the sample project LCP is 2.1 s overall and 4.3 s in Brazil — pick that row and every chart on the report follows it.

what to fix first · sample project
Into usability

From a slow page to people using it

“Watch people use this page” opens a new usability study on that URL. The page the numbers point at is the one testers try next.

Benefits

Measured, then explained

  • p75of real visits, not a lab run

    What visitors measured

    Three visits in four were this fast or faster — the figure the Good, Needs work and Poor thresholds are set against.

  • +18 %Got worsev2.4.1 · sample project

    A deploy named, not suspected

    Better or worse only past a 10 % change with at least 5 samples on each side. Anything less says no change, or not enough data.

  • Measured itemsAI order — optional

    AI that cannot invent

    “Order and explain with AI” can only reorder the measured items it is given. It never adds a page, and its answer is saved.

Works with what you have

Three packages and your CI

Already published on npm. Pick the one that matches the site.

@nacew/performance-web

For any website. Web Vitals, pages and frontend errors.

@nacew/performance-react

Adds page and component render timings for React apps.

@nacew/performance-next

The wrapper for Next.js apps.

Your CI

Marks each deploy with one POST and a deploy token — or mark it by hand.

FAQ

What a front-end lead asks first

What does the SDK collect?

LCP, INP, CLS, FCP and TTFB from each visit, the page it happened on, frontend errors, and the visitor’s device, browser and country — plus page and component render timings with the React package. Ids in URLs are grouped, so /orders/123 counts as /orders/:id. Events are kept for 1 to 90 days, 30 by default.

Do you store visitors’ IP addresses?

No. The IP is never stored. Bots, headless browsers and Lighthouse — including our own PageSpeed runs — are dropped before anything is counted.

What counts as a regression?

Each deploy is compared with the 24 hours before it on LCP, INP, CLS and error rate. It is called better or worse only past a 10 % change with at least 5 samples on each side.

Can the AI make up a fix?

No. It is given the measured items and can only reorder and explain them; anything it returns that was not on the list is dropped. It is optional, and its answer is saved.

The tester app

Test from your pocket

The uTestMe tester app runs a study on a phone. Taps and screens recorded, consent first, results in the same view.

Coming soon onApp StoreGet it onGoogle Play
Scan to install
  • Tap tracking
  • Screen recording
  • Consent first
Test code · K7F2-9QA