From ec9cdf1710ae80267ceda921f65bbd3f9845da13 Mon Sep 17 00:00:00 2001 From: Alberto Leal Date: Fri, 16 Oct 2020 16:53:42 -0400 Subject: [PATCH] fix(web-vitals): Only report FCP or FP if the page wasn't hidden prior to their instrumentation --- packages/tracing/src/browser/metrics.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/tracing/src/browser/metrics.ts b/packages/tracing/src/browser/metrics.ts index f2830f3ad6eb..bcef09afc79e 100644 --- a/packages/tracing/src/browser/metrics.ts +++ b/packages/tracing/src/browser/metrics.ts @@ -10,6 +10,7 @@ import { getCLS } from './web-vitals/getCLS'; import { getFID } from './web-vitals/getFID'; import { getLCP } from './web-vitals/getLCP'; import { getTTFB } from './web-vitals/getTTFB'; +import { getFirstHidden } from './web-vitals/lib/getFirstHidden'; const global = getGlobalObject(); @@ -85,13 +86,17 @@ export class MetricsInstrumentation { // capture web vitals - if (entry.name === 'first-paint') { + const firstHidden = getFirstHidden(); + // Only report if the page wasn't hidden prior to the web vital. + const shouldRecord = entry.startTime < firstHidden.timeStamp; + + if (entry.name === 'first-paint' && shouldRecord) { logger.log('[Measurements] Adding FP'); this._measurements['fp'] = { value: entry.startTime }; this._measurements['mark.fp'] = { value: startTimestamp }; } - if (entry.name === 'first-contentful-paint') { + if (entry.name === 'first-contentful-paint' && shouldRecord) { logger.log('[Measurements] Adding FCP'); this._measurements['fcp'] = { value: entry.startTime }; this._measurements['mark.fcp'] = { value: startTimestamp };