GoogleChrome/lighthouse · error · LighthouseError
NO_LCP_ALL_FRAMES
NO_LCP_ALL_FRAMES
Error message
The page did not display content that qualifies as a Largest Contentful Paint (LCP). Ensure the page has a valid LCP element and then try again. ({errorCode}) What it means
Thrown as a LighthouseError with code NO_LCP_ALL_FRAMES when computeObservedMetric() for LargestContentfulPaintAllFrames finds that processedNavigation.timings.largestContentfulPaintAllFrames is undefined. This is the all-frames variant of the standard NO_LCP error — it means no LCP candidate was found across any frame (including iframes) in the page. The all-frames metric requires Chrome to have reported LCP for the entire frame tree.
Source
Thrown at core/computed/metrics/largest-contentful-paint-all-frames.js:31
import {LighthouseError} from '../../lib/lh-error.js';
class LargestContentfulPaintAllFrames extends NavigationMetric {
/**
* TODO: Simulate LCP all frames in lantern.
* @return {Promise<LH.Artifacts.LanternMetric>}
*/
static async computeSimulatedMetric() {
throw new Error('LCP All Frames not implemented in lantern');
}
/**
* @param {LH.Artifacts.NavigationMetricComputationData} data
* @return {Promise<LH.Artifacts.Metric>}
*/
static async computeObservedMetric(data) {
const {processedNavigation} = data;
if (processedNavigation.timings.largestContentfulPaintAllFrames === undefined) {
throw new LighthouseError(LighthouseError.errors.NO_LCP_ALL_FRAMES);
}
return {
timing: processedNavigation.timings.largestContentfulPaintAllFrames,
timestamp: processedNavigation.timestamps.largestContentfulPaintAllFrames,
};
}
}
const LargestContentfulPaintAllFramesComputed = makeComputedArtifact(
LargestContentfulPaintAllFrames,
['devtoolsLog', 'gatherContext', 'settings', 'simulator', 'trace', 'URL', 'SourceMaps', 'HostDPR']
);
export {LargestContentfulPaintAllFramesComputed as LargestContentfulPaintAllFrames};
View on GitHub (pinned to 9515cd4e58)
Solutions
- Ensure visible content renders above the fold in the main frame or a child frame before the trace ends
- Use a recent Chrome version (90+) that fully supports LCP all-frames reporting
- Avoid running Lighthouse in headless mode if paint events are being suppressed, or use --headless=new
- If iframes are lazy-loaded, consider whether the trace window captures their paint events
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check LCP all-frames timing before requesting the metric
const processedNavigation = await ProcessedNavigation.request(trace, context);
if (processedNavigation.timings.largestContentfulPaintAllFrames === undefined) {
// No all-frames LCP — skip metric computation
return { timing: undefined };
} Type guard
/** @type {(nav: LH.Artifacts.ProcessedNavigation) => boolean} */
function hasLCPAllFrames(nav) {
return typeof nav.timings.largestContentfulPaintAllFrames === 'number';
} Try / catch
try {
const lcp = await LargestContentfulPaintAllFrames.request(data, context);
} catch (e) {
if (e instanceof LighthouseError && e.code === 'NO_LCP_ALL_FRAMES') {
// No LCP across any frame — metric not applicable
return { notApplicable: true };
}
throw e;
} Prevention
- Ensure visible content renders in at least one frame during the trace
- Use Chrome 90+ for reliable cross-frame LCP reporting
- Use --headless=new or headed mode to preserve paint events
- Pre-check processedNavigation.timings.largestContentfulPaintAllFrames before requesting the metric
When it happens
Trigger: Calling LargestContentfulPaintAllFrames.request() in observed mode on a trace where no frame emitted an LCP event. This occurs on pages with no visible content, pages in hidden/background tabs, or when Chrome version does not support cross-frame LCP reporting.
Common situations: Auditing pages that are entirely behind authentication with no rendered content. Headless Chrome runs where paint events are suppressed. Older Chrome versions that don't fully support LCP across all frames. Pages where all content is in iframes that load after the trace window closes.
Related errors
AI-assisted analysis of GoogleChrome/lighthouse@9515cd4e58 (2026-08-13).
Data as JSON: /api/errors/adb1b6468204a3a7.
Report an issue: GitHub.