Lab data: Lighthouse 13.4.1 mobile run, graded above · Reproduce this run on PageSpeed Insights ↗
Why is this different from the score in my browser?
This view grades the mobile run. Lighthouse 13.4.1 runs at Google through the PageSpeed Insights API on an emulated mid-range Android with a 4× CPU slowdown and a throttled connection. Chrome DevTools on your own machine, on the Desktop preset, applies almost none of that, and the same page routinely scores 30–50 points higher there. Neither number is wrong — they are different tests.
Mobile is what Google ranks on, so this is the number that affects your
search performance. This report predates the desktop-graded headline: only the mobile run was graded. To reproduce it, open the same run on PageSpeed Insights,
or pass strategy=mobile to the PageSpeed API — it defaults to desktop.
Lighthouse also varies a few points run to run on the same URL. Treat a trend across several scans as the signal, never a single digit.
Lab data: Google PageSpeed Insights (Lighthouse, mobile). Server probes (TTFB, compression, cache, headers) are measured separately from Vilnius, Lithuania (EU).
Next.js what actually works on this platform
Most of what makes a Next.js site slow is decided at build time — which routes are static, what ends up in the client bundle, and where the server boundary sits. These are the levers, in the order worth pulling them.
- Your HTML came back HIT from the Next.js render cache — the render is already being reused, so look at the client bundle next.
- A crawler reads about 9,886 characters of text from your HTML.
- Time to first byte measured 111ms on this run — one sample, so re-run it a few times before treating it as the number.
- Decide the rendering mode per route, not per app. Next.js will statically generate, revalidate on a schedule (ISR) or render per request, and the choice is made route by route. A public marketing or content page rendered per request pays a server round trip on every visit for output that could have been reused. Start with the routes that get the most traffic and the least personalisation.
- Read the cache header before changing anything. x-nextjs-cache (or x-vercel-cache) reports HIT, STALE, MISS, BYPASS or PRERENDER for the HTML. MISS or BYPASS on a page with no per-visitor content is the clearest signal you have something to gain; a HIT means the render is already free and your time is better spent on the client bundle.
- Check First Load JS per route. next build prints it. That number, not TTFB, is what a visitor waits through before the page becomes interactive. A shared component pulled into the root layout is charged to every route, so look for one heavy import inflating the whole app rather than a single slow page.
- Keep server-only work behind the server boundary. A dependency imported in a Client Component ships to the browser. Date libraries, SDKs and icon sets pulled across a "use client" boundary are a common way an otherwise small app grows a large bundle — audit what crosses it.
- Use next/image and next/font rather than raw tags. next/image serves modern formats at the right size and reserves space so the layout does not shift; next/font self-hosts the font files and removes the render-blocking request to a font host. Both are small changes with visible effects on Core Web Vitals.
- Load third-party scripts through next/script. Analytics, chat widgets and tag managers loaded as plain script tags block the main thread during hydration. next/script with an afterInteractive or lazyOnload strategy moves them out of the critical path without removing them.
The full instruction set, and a machine-readable copy of this report, live at montagemotion.com.md — paste that URL into your AI builder's chat and it can work straight from these measurements.
Top fixes ranked by points recovered
This is a Next.js site — act on the report with your AI assistant
- ✓Platform detectedNext.js — every check below links the official guideline for the fix in this stack.
- →Act on it with your AIThe machine-readable twin of this report gives an agent every failing check with its evidence, remediation and guideline link.
- →Check the originHosting sets the floor on TTFB. xCloud hosts any stack — agent/MCP access built in, bring-your-own-server pricing.
xSpeed is a WordPress plugin, so it can't automate Next.js fixes — and that's fine. Every check below links its official guideline, and the machine-readable twin of this report gives an AI everything it needs to plan the work (5 checks name a concrete remediation):
Read the speed report at https://xspeedcache.com/scan/r/montagemotion-com-2790aa61d4.md — it lists every failing check with evidence and the official guideline for the fix. Produce a prioritized fix plan for my Next.js site, apply what you can, then re-test by POSTing {"url":"https://montagemotion.com/"} to https://xspeedcache.com/api/scan and compare the scores.Run this scan without the form
Plug xSpeed Scan into your agent stack, or test any site from a chat.
Connect this scanner to your AI assistant
Free. No API key, no sign-up. Scan any public site and get the same graded report as this one, with the fix for every failing check.
Endpoint
https://xspeedcache.com/scan/mcpClaude Code — one command
claude mcp add --transport http xspeed-scan https://xspeedcache.com/scan/mcpClaude Desktop, Cursor, or any MCP client — add to your config
{
"mcpServers": {
"xspeed-scan": {
"type": "http",
"url": "https://xspeedcache.com/scan/mcp"
}
}
}run_speed_scanScan any public URL and return this whole graded report.get_speed_scanRead a scan already run, by its id.
Lab performance (Lighthouse)
3/5 checks passed · 27.5/40 pts earnedAI prompt
Using my site's xSpeed MCP connection: run optimize_site, then run_benchmark to verify the score improved.AI prompt
Using my site's xSpeed MCP connection: enable page caching, start the preloader, and (on Pro) generate critical CSS for this page; then re-test LCP.Server response & caching
5/6 checks passed · 25/25 pts earnedAsset optimization
2/5 checks passed · 7/7 pts earnedAI prompt
Using my site's xSpeed MCP connection: generate critical CSS for the top pages and enable unused-CSS removal, then re-test.AI prompt
Using my site's xSpeed MCP connection: enable WebP/AVIF conversion with URL rewriting, then re-test image audits.AI prompt
Using my site's xSpeed MCP connection: enable lazy loading for images and iframes, then re-test.Past scans of montagemotion.com newest first · every report keeps its link
| Scanned | Score | Grade | Graded on | TTFB | Lighthouse | |
|---|---|---|---|---|---|---|
| 2026-10-13 12:22 UTC | 87 | B | desktop | 124ms | 98 | View report → |
| 2026-09-22 15:34 UTC | 88 | B | desktop | 145ms | 97 | View report → |
| 2026-09-07 23:04 UTC | 85 | B | mobile | 98ms | 83 | View report → |
| 2026-09-04 03:56 UTC this report | 83 | B | mobile | 111ms | 75 | |
| 2026-09-03 17:11 UTC | 84 | B | mobile | 132ms | 79 | View report → |
| 2026-09-03 15:20 UTC | 63 | D | mobile | 726ms | 80 | View report → |
| 2026-09-03 14:11 UTC | 76 | C | mobile | 114ms | 66 | View report → |
| 2026-09-03 14:10 UTC | 55 | D | mobile | 658ms | 66 | View report → |
| 2026-09-03 11:39 UTC | 63 | D | mobile | 639ms | 81 | View report → |
| 2026-09-03 10:21 UTC | 84 | B | mobile | 96ms | 80 | View report → |
Reports graded on different runs are not a trend: mobile-graded rows are the older rubric's headline, desktop-graded rows the current one. Compare like with like.