> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abtestly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Speed guardrail

> A per-device panel showing p75 largest contentful paint (LCP) for each variant. Ship a winner; do not ship a broken page.

Winning on conversion but tanking page speed is a real, common way to
lose money quietly. ABTestly collects **Largest Contentful Paint (LCP)**
per pageview and shows it per variant, per device, so a winner that
harms speed cannot slip through.

## Where you see it

On the results page, below the primary and guardrail goals, look for
the **Performance** panel. One row per device (Desktop, Mobile, Tablet)
with each variant's p75 LCP, delta vs baseline, and the sample size
the number is based on.

The panel is quiet when there is no meaningful data yet, each row
says "Collecting speed data".

## What p75 LCP means

* **LCP**, the moment the largest element in the visitor's viewport
  finished rendering. Roughly, "the page looks done".
* **p75**, the 75th percentile of the distribution. Three-quarters
  of visitors saw an LCP faster than the p75. This is the standard
  core-web-vitals bar.

Google's threshold for "good" is 2.5 seconds. Above 4 seconds is
"poor". A variant that pushes p75 LCP from 2.4 s to 3.1 s is a
guardrail alert even if conversions went up.

## Per device

The panel is per device because mobile and desktop LCP are
qualitatively different. A change that costs desktop 50 ms and mobile
800 ms can win overall while quietly killing your mobile experience.

## How the number is collected

Standard `PerformanceObserver` LCP API on the visitor's browser. Sent
piggybacked on the `/e` exposure beacon, no extra requests, no
third-party service.

Vitals are attributed per-experiment: the LCP recorded on a pageview
is credited to the variant the visitor was in.

## When the guardrail warns you

If a variant's LCP is meaningfully worse than baseline on a device
type, the results page calls it out, even if the primary goal shows
a win. The verdict copy is explicit: "Variant B wins on X but harms
LCP on mobile."

## Why you might see nothing yet

* **The test has not run long enough.** LCP data accumulates per
  pageview; the panel needs a few hundred loads per (variant, device)
  before it shows anything.
* **Vitals reset on republish.** Any republish of the experiment
  resets the vitals dataset for it, a new variant code should be
  measured on its own numbers, not blended with the pre-fix code.

The panel makes this explicit: "Speed data resets when you publish a
change."

## What to do with a bad LCP

* **Small regression, big conversion win.** Judgment call.
* **Big regression, small conversion win.** Almost never worth it.
  the regression will slowly eat future traffic (search ranking) and
  the conversion win will regress to the mean.
* **Any regression on mobile.** Take it seriously. Mobile is where
  LCP matters most.

The panel does not decide for you. It shows the data.
