GoogleChrome/lighthouse · error · Error
FCP All Frames not implemented in lantern
Error message
FCP All Frames not implemented in lantern
What it means
Thrown as a plain Error from FirstContentfulPaintAllFrames.computeSimulatedMetric() because the Lantern (simulation-based) estimation path for FCP-all-frames has not been implemented yet. The method has no body logic — it immediately throws. This is a deliberate placeholder (marked with a TODO) indicating a known feature gap, not a runtime bug.
Source
Thrown at core/computed/metrics/first-contentful-paint-all-frames.js:16
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import {makeComputedArtifact} from '../computed-artifact.js';
import {NavigationMetric} from './navigation-metric.js';
class FirstContentfulPaintAllFrames extends NavigationMetric {
/**
* @return {Promise<LH.Artifacts.LanternMetric>}
*/
static computeSimulatedMetric() {
// TODO: Add support for all frames in lantern.
throw new Error('FCP All Frames not implemented in lantern');
}
/**
* @param {LH.Artifacts.NavigationMetricComputationData} data
* @return {Promise<LH.Artifacts.Metric>}
*/
static async computeObservedMetric(data) {
const {processedNavigation} = data;
return {
timing: processedNavigation.timings.firstContentfulPaintAllFrames,
timestamp: processedNavigation.timestamps.firstContentfulPaintAllFrames,
};
}
}
const FirstContentfulPaintAllFramesComputed = makeComputedArtifact(
FirstContentfulPaintAllFrames,View on GitHub (pinned to 9515cd4e58)
Solutions
- Use throttlingMethod: 'provided' or 'devtools' (observed mode) instead of 'simulate' when you need FCP All Frames
- If using the default Lighthouse config, check whether FCP All Frames is actually needed — standard FCP has full Lantern support
- Wait for a future Lighthouse version that implements Lantern support for this metric (track the TODO)
Example fix
// before
const config = {
settings: { throttlingMethod: 'simulate' },
};
// after
const config = {
settings: { throttlingMethod: 'devtools' },
}; Defensive patterns
Strategy: validation
Validate before calling
// Check throttling method before requesting FCP All Frames
if (settings.throttlingMethod === 'simulate') {
// FCP All Frames is not implemented for Lantern simulation
// Use standard FCP or switch to observed mode
return undefined;
}
const fcpAllFrames = await FirstContentfulPaintAllFrames.request(data, context); Try / catch
try {
const fcp = await FirstContentfulPaintAllFrames.request(data, context);
} catch (e) {
if (e.message === 'FCP All Frames not implemented in lantern') {
// Simulation not supported — fall back to standard FCP or use observed mode
return undefined;
}
throw e;
} Prevention
- Check throttlingMethod before requesting all-frames metrics — simulation is unsupported
- Use standard FCP (FirstContentfulPaint) which has full Lantern support
- Document which metrics are observe-only when building custom Lighthouse configs
- Switch to 'devtools' or 'provided' throttling if all-frames metrics are required
When it happens
Trigger: Calling FirstContentfulPaintAllFrames.request() with settings.throttlingMethod set to 'simulate'. The makeComputedArtifact wrapper routes to computeSimulatedMetric(), which throws unconditionally. The observed path (computeObservedMetric) works fine, so this only fires under simulated throttling.
Common situations: Configuring Lighthouse with throttlingMethod: 'simulate' and running an audit or consuming the FCP All Frames computed artifact. Programmatic Lighthouse usage where the default settings use simulation. Any pipeline that requests this artifact under simulated mode.
Related errors
- LCP All Frames not implemented in lantern
- Responsiveness currently unsupported by simulated throttling
- missing metric ${metricName}
- run failed to get metrics
- No metrics for ${metric} ${lanternMetric} ${lanternOrBaselin
AI-assisted analysis of GoogleChrome/lighthouse@9515cd4e58 (2026-08-13).
Data as JSON: /api/errors/3ee03a23b497a2ef.
Report an issue: GitHub.