See all monitors →
Docs

Bolt.new performance: give Bolt a speed budget it checks against a real browser

Bolt builds JavaScript apps, and almost every prompt adds something the browser has to download: a library, a component, an image, a font. None of it breaks the page, so you don't notice until the site feels slow on a phone. Relvato's MCP connector gives Bolt a measurement it can't argue with — Core Web Vitals from a real Chrome browser on the published site — plus the reasons behind each number, so Bolt can change the right code in the same session.

Why Bolt apps get slower one prompt at a time

Bolt picks a JavaScript framework such as React or Vue when you start, and everything the app does ships to the browser as JavaScript. Each new dependency grows the bundle the phone has to download and run before the page responds — that shows up as Total Blocking Time and a slower Interaction to Next Paint. Large images placed at the top of the page push Largest Contentful Paint up. Web fonts and content that loads late make the layout jump, which is Cumulative Layout Shift.

A fast laptop on good Wi-Fi hides all of this. Relvato's mobile run doesn't: it throttles the network to Slow 4G and slows the CPU four times, like PageSpeed, so a regression shows up on the run after the prompt that caused it.

Before you start

You need the site published and public. Bolt Cloud gives every project a free *.bolt.host address, or you can connect a custom domain; projects published before mid-August 2025 may still be on Netlify at *.netlify.app. A private Bolt site, visible only to invited people, can't be measured from outside.

You also need the site in Relvato with its ownership proven — add it as an Any website / AI-built app connection and use the meta-tag method (Bolt can paste the tag into the page head for you) or a DNS record. Only the Bolt project owner can connect MCP servers and prompt Bolt to use them.

While you're in Relvato, consider adding the Uptime monitor too: Bolt's free plan stops serving a site once the account reaches its monthly data limit, and that looks like an outage to your visitors.

Step 1 — A full-access API key just for Bolt

In Relvato, open API access from the account menu. Name the key “Bolt” and, under What the key may do, choose Full access — a read-only key can't start a run. Click + Create API key and copy it now; it's shown only once and starts with rlv_.

Keep this key for Bolt only. If you ever want to cut Bolt off, revoking its key leaves your other integrations running.

Step 2 — Add Relvato as a custom connector

On the Bolt homepage, click the plus icon in the chatbox, then Connectors → Manage connectors. On the Connectors (MCP) page, click Custom MCP server and fill in: Name — Relvato; URL — the address below; Transport type — HTTP (Relvato speaks streamable HTTP, not SSE); Authentication — API key, then paste your rlv_ key. Click Connect and wait for the Connected status.

Relvato accepts the key either as an Authorization: Bearer header or as an x-api-key header, so whichever way Bolt sends it, it works. Leave Auto-enable for all projects off for now: you'll turn Relvato on only in the projects where you want it.

https://app.relvato.com/api/mcp

Step 3 — Keep only the tools Bolt needs

Every enabled connector is added to the project's context, which Bolt warns can slow it down and use more tokens. Relvato's server offers twelve tools; for a speed loop, Bolt needs six. Open the connector's three-dot menu → Edit, and under Tools keep list_sites, site_overview, add_checks, trigger_scan, get_run and get_fix_prompt switched on. Turn the others off and click Save changes.

Tool switches apply to every project that uses the connector. If you later want Bolt to add a new site or change a monitor's schedule, switch those tools back on and click Refresh connection.

Step 4 — Turn it on in the project and add the monitor

Inside the project, click the plus icon in the chatbox → Connectors and switch Relvato on. Then ask: “Add Relvato's Core Web Vitals monitor to my site.” Bolt calls add_checks with the web-vitals monitor, which measures the homepage (or another page you choose in its settings in Relvato) on mobile and desktop, three loads each, keeping the median.

Step 5 — Put a speed budget in the prompt

Numbers are only useful against a line. Give Bolt the line in the prompt — the thresholds below are the ones Relvato itself warns at, so “passed” means the same thing in Bolt and in Relvato's dashboard. Publish first (Publish → Update), then send a prompt like the one below.

Bolt starts the run with trigger_scan and reads it with get_run until it finishes, usually within a minute. Bolt doesn't document a per-call approval for connector tools, so the tool switches from Step 3 are your control: Bolt can only use what you left on. Each run counts toward your Relvato plan's monthly runs.

After you publish, run Relvato's Core Web Vitals monitor on my site.
Treat it as failed if mobile LCP is over 2.5 s, CLS over 0.1 or TTFB over 0.8 s.
Show me the LCP element, the render-blocking scripts and the largest unused JavaScript.

Step 6 — Turn the diagnostics into code changes

A Relvato run returns more than scores. For each device it names the element that was the Largest Contentful Paint and how its time split between server response, resource load and render; the elements that shifted the layout; the scripts that blocked rendering; oversized images; and how much of each JavaScript file went unused. Each of those points at a different fix — the table below maps them.

Ask Bolt to fix the worst one, publish with Update and run the monitor again. If the change didn't move the number, the run says so, and you've spent one prompt instead of a week of a slower site. For a failed run, get_fix_prompt returns the same brief Relvato's Suggest a fix button uses.

Keep watching between Bolt sessions

The connector measures when you ask. To catch a slowdown you didn't cause — a third-party script, a CDN change — give the monitor a schedule in Relvato (daily runs need the Business plan; on Pro, a GitHub connection re-runs your monitors on every push).

Lab numbers are one browser on one profile. To see what your real visitors get, add Relvato's real-user Web Vitals beacon — a one-line script Bolt can add to the page for you.

Relvato's thresholds as a budget, and the usual fix in a Bolt app

MetricRelvato warns atRelvato fails atUsual cause → fix in a Bolt app
Largest Contentful Paint2.5 s4 sA large hero image or content rendered after JavaScript → size and compress the image, preload it, render the hero without waiting for data
Cumulative Layout Shift0.10.25Images without width and height, fonts swapping, banners inserted late → set dimensions, reserve space, use font-display
Time to First Byte0.8 s1.8 sHosting, redirects or a server function on the first request → not a code-size problem; check the domain setup and caching
Interaction to Next Paint200 mswarns only (500 ms is poor)Heavy click handlers and a large bundle → split code, defer non-critical work
Total Blocking Timereported, not graded—Render-blocking and unused JavaScript → lazy-load routes and components, drop unused libraries

FAQ

Does Bolt ask before it runs a Relvato tool?

Bolt doesn't document an approval step for connector tools. Control what it can do with the tool switches on the connector: Relvato's reading tools only read, and trigger_scan only starts monitor runs — nothing in the connector deletes or changes your site.

Which address should I measure?

The one visitors use: your custom domain if you connected one, otherwise the *.bolt.host address Bolt gave the project (or *.netlify.app for an older project still hosted on Netlify). Measure it after Publish → Update, so the run sees your latest change.

Does the connector make Bolt slower or use more tokens?

Somewhat: an enabled connector is part of the project's context. Keeping six tools on and enabling Relvato only in the projects that need it keeps that small.

Can people I share the project with use it?

Not through your connection. Only the project owner can connect MCP servers and prompt Bolt to use them.

Is this the same as PageSpeed Insights?

Close, not identical. Relvato's mobile run uses the same throttling profile (Slow 4G, 4× CPU) and reports the same metrics, but it keeps the median of three loads and runs from Relvato's own servers, so expect numbers in the same range rather than an exact match.

Related reading
Docs

Make speed part of every Bolt prompt

Connect Relvato once, set a budget, and let Bolt measure its own changes in a real browser.