{"record":{"id":"3ee03a23b497a2ef","repo":"GoogleChrome/lighthouse","slug":"fcp-all-frames-not-implemented-in-lantern","errorCode":null,"errorMessage":"FCP All Frames not implemented in lantern","messagePattern":"FCP All Frames not implemented in lantern","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"core/computed/metrics/first-contentful-paint-all-frames.js","lineNumber":16,"sourceCode":"/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {makeComputedArtifact} from '../computed-artifact.js';\nimport {NavigationMetric} from './navigation-metric.js';\n\nclass FirstContentfulPaintAllFrames extends NavigationMetric {\n  /**\n   * @return {Promise<LH.Artifacts.LanternMetric>}\n   */\n  static computeSimulatedMetric() {\n    // TODO: Add support for all frames in lantern.\n    throw new Error('FCP All Frames not implemented in lantern');\n  }\n\n  /**\n   * @param {LH.Artifacts.NavigationMetricComputationData} data\n   * @return {Promise<LH.Artifacts.Metric>}\n   */\n  static async computeObservedMetric(data) {\n    const {processedNavigation} = data;\n\n    return {\n      timing: processedNavigation.timings.firstContentfulPaintAllFrames,\n      timestamp: processedNavigation.timestamps.firstContentfulPaintAllFrames,\n    };\n  }\n}\n\nconst FirstContentfulPaintAllFramesComputed = makeComputedArtifact(\n  FirstContentfulPaintAllFrames,","sourceCodeStart":1,"sourceCodeEnd":34,"githubUrl":"https://github.com/GoogleChrome/lighthouse/blob/9515cd4e58ebed69f78742d932b501c2cab8ad8f/core/computed/metrics/first-contentful-paint-all-frames.js#L1-L34","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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)"],"exampleFix":"// before\nconst config = {\n  settings: { throttlingMethod: 'simulate' },\n};\n\n// after\nconst config = {\n  settings: { throttlingMethod: 'devtools' },\n};","handlingStrategy":"validation","validationCode":"// Check throttling method before requesting FCP All Frames\nif (settings.throttlingMethod === 'simulate') {\n  // FCP All Frames is not implemented for Lantern simulation\n  // Use standard FCP or switch to observed mode\n  return undefined;\n}\nconst fcpAllFrames = await FirstContentfulPaintAllFrames.request(data, context);","typeGuard":null,"tryCatchPattern":"try {\n  const fcp = await FirstContentfulPaintAllFrames.request(data, context);\n} catch (e) {\n  if (e.message === 'FCP All Frames not implemented in lantern') {\n    // Simulation not supported — fall back to standard FCP or use observed mode\n    return undefined;\n  }\n  throw e;\n}","preventionTips":["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"],"tags":["fcp","lantern","throttling","metrics","not-implemented"],"backgroundTag":null,"analyzedSha":"9515cd4e58ebed69f78742d932b501c2cab8ad8f","analyzedAt":"2026-08-13T06:28:10.346Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}