Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

core(interactive): also use LCP as bounds in observed metric #16173

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

connorjclark
Copy link
Collaborator

@connorjclark connorjclark commented Sep 3, 2024

#16046 changed this audit to use LCP instead of FMP, but incorrectly referred to FCP in a non-user facing doc comment.

Thanks to @csswizardry for pointing this out.

Also updates findOverlappingQuietPeriods, used in the observed metric computation, which was still using FCP as the bounds. Now uses LCP to match Lantern (but I allowed for a fallback to FCP to still get something in the case LCP is missing).

@connorjclark connorjclark requested a review from a team as a code owner September 3, 2024 17:47
@connorjclark connorjclark requested review from adamraine and removed request for a team September 3, 2024 17:47
@connorjclark
Copy link
Collaborator Author

@adamraine please look again - I updated the PR since I noticed findOverlappingQuietPeriods (used only in the observed metric) was still using FCP.

@connorjclark connorjclark changed the title misc: fix doc comment for InteractiveMetric audit core(interactive): also use LCP as bounds in computed metric Sep 3, 2024
@connorjclark connorjclark changed the title core(interactive): also use LCP as bounds in computed metric core(interactive): also use LCP as bounds in observed metric Sep 3, 2024
Comment on lines +89 to +91
const minTime = processedNavigation.timestamps.largestContentfulPaint !== undefined ?
processedNavigation.timestamps.largestContentfulPaint / 1000 :
processedNavigation.timestamps.firstContentfulPaint / 1000;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if it matters since this is TTI we're talking about (but that applies to making any changes at all, so... :), but seems bad to have this fallback? Makes the metric harder to reason about, discontinuous for an otherwise identical trace depending on if LCP was captured or not, and diverges from the lantern version, which throws if there was no LCP.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that the fallback in TTI can introduce inconsistencies. While it might seem like a minor detail, the discontinuity can complicate analysis and make it difficult to accurately compare performance across different scenarios. Perhaps we could explore alternative approaches, such as using a default value: If LCP is not captured, we could set TTI to a default value (e.g., the maximum possible value) to indicate that the metric is incomplete or even introducing a new metric: We might consider creating a separate metric that specifically measures time to first interaction without relying on LCP.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So alternatively, we can throw if there's no LCP

and ignore this FCP fallback

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants