The day a client page slips to "needs improvement", your phone knows.

Self-hosted Core Web Vitals monitoring from real Chrome users, on the Cloudflare plan you already pay for.

Get the launch link, $49 one-time, full source, yours forever
Alerts are iPhone and Web Push from the installed app, no email or Slack
LCP p752.1s good
INP p75240ms needs work
CLS p750.04 good
AlertINP worsened

The pain

A performance retainer means the client's rankings are your problem. A deploy adds a chat widget, INP slides past 200ms for real users, and the first anyone hears of it is a ranking dip weeks later. Google publishes the field data that would have caught it the same week. Nobody is watching it per URL.

VitalsWatch reads the Chrome UX Report for every URL on your list, every six hours, with your own free Google API key. It stores the p75 trend in your own database and pushes to your phone on the day a rating crosses a Google threshold, in either direction.

What's included

Rating transitions, not noise One push when LCP, INP or CLS crosses a Google threshold: good to needs-improvement, needs-improvement to poor, or back to good. Silence while a rating holds, even a bad one you already know about.
Per-URL field data Site-level averages hide the broken page. VitalsWatch watches the exact URLs you name, phone and desktop separately, using the same CrUX dataset Google's ranking systems read.
Trend history in D1Every reading kept for 90 days, charted per URL in the app, so "it got slower after the redesign" comes with a graph.
Real iPhone pushEncrypted Web Push from the installed home-screen app. Dead subscriptions prune themselves. Test-ping button included.
Private by defaultYour admin token gates every API route, compared as constant-time digests. Strangers get a lock screen.
Honest no-data handlingThin-traffic URLs drop out of the CrUX dataset. VitalsWatch shows no-data and stays quiet, rather than inventing a rating or a false alarm.

Why pay $49 when DebugBear exists?

DebugBear is excellent hosted monitoring with lab tests, waterfalls, and real-user data. Its Startup plan runs $99 a month billed yearly, $125 billed monthly, with per-plan test and page-view limits (DebugBear pricing, as of Sep 2026). VitalsWatch is source code you run yourself for one payment: no per-page pricing, no monthly bill, as many URLs as fit the polite six-hour cycle.

 DebugBearVitalsWatch
Price$99 to $125/mo, Startup plan$49 once
DataLab tests, waterfalls, RUMGoogle CrUX field data only
Catches a regression inMinutes, on the next testDays; CrUX is a 28-day rolling window
Where data livesTheir serversYour Cloudflare account
AlertsHosted alertingiPhone and Web Push only

If you want synthetic lab tests, waterfalls, and a regression caught within minutes, the hosted tools earn their fee. If you want field-data regression pushes on the exact pages you manage, one payment covers it.

Up and running in about 10 minutes

You'll need a Cloudflare account, a free Google API key with the Chrome UX Report API enabled, and ten minutes in a terminal.

Create the database and apply the included schema.
Set your secrets: admin token, push keys, and your CrUX API key.
Deploy. Open it on your phone, add your first URL, tap Enable alerts.

Questions before you buy

Search Console emails Core Web Vitals issues free. Why this?

It does, at the site level, on Google's schedule, in an inbox. VitalsWatch is per URL, on your list, with a six-hour check and a phone push the day a specific page's rating moves. The wedge is speed and specificity, not access to secret data.

Where does the data come from?

The Chrome UX Report API: aggregated field data from real Chrome users, the same dataset Google's ranking systems use. You call it with your own free Google API key. Some URLs have too little traffic to appear; those show as no-data, never as a made-up score.

Does iPhone push work?

Yes, from the installed home-screen app on iOS 16.4 or later. That requirement comes from Apple. The kit ships a test-ping button so you can prove the pipe end to end in your first ten minutes.

What do I get?

The full TypeScript source: Worker, React app, schema, tests, VAPID generator, and the README. Use it in unlimited personal and client projects; the one restriction is you cannot resell the kit itself.

What is it NOT?

It runs no lab tests and loads no pages, so there are no waterfalls or filmstrips; it reads Google's field data. CrUX updates roughly daily as a 28-day rolling window, so this catches regressions in days, not minutes. Pages without enough Chrome traffic have no data to watch.

Get it

Full TypeScript source

Unlimited personal and client projects

Free updates to the kit

License terms ship inside the kit

$49 one-time

Launching soon. Leave your email and the launch link lands in your inbox the moment it is live. One email, no list, no spam.