WebPerfWG call - July 7 2022

Participants

Admin

Minutes

Incremental Font Transfer review - Garret Rieger

Presentation recording (partial)

Summary

Minutes

Field-based User Flows - Michal

Presentation recording

Summary

Minutes

... In this particular sample site, there's only one issue that stands out.

... If you see a table like this, and you're the author, there's a strong hint of what's going on

... Only 18% of visits/users, what's the likelihood of being able to reproduce without this table guiding you?

... This is CLS, but INP is a post-load metric first and foremost

... If you're already using an API like EventTiming to capture interactions, and you have attribution, there's a new set of features in Dev Tools and Lighthouse around User Flows

... Record and re-run

... Useful for CI and testing

... As an experiment, would it be possible to take PerformanceTimeline, could you construct user-flow that you could replay automatically in the wild

... Trivial to set up

... Go from node to query selector

... Selectors aren't always stable across renderings

... Use performance APIs

... Get a list of things user clicked on, and in what order

... Example from in the field:

Now I can replay using a snippet like before

... Bunch of different ways to do this type of replay

... DEMO

... Get a Lighthouse Timespan report

... Lighthouse has audits for INP

... A lot of style and layout and rendering delay afterwards

... WebPageTest script automation

... Made an alternative converter for WPT scripting format

... Out of the box no problem, runs in WebPageTest

... Mostly a load-based audit

... Agg field data users experience is the truth.  A single lab replay is an anecdote, and easy to miss seeing these real issues

... Setting up the right environment is first and foremost

... Following the right user flows is important for post-page-load metrics

... If you record metadata about your vitals, field data might give you enough to know what to target

... But beyond that, we could use PerfTimeline to automate flows for replay

... PT limited and EventTiming API has its limitations

... Do we need to do more in terms of creating full field-data User Flows

... Maybe we need a first-class Performance API for that

Pat: Good overlap between this and the self-profiling API, especially for INP if you want to get profiles of field data

Michal: One common request we get in particular is if it's not input delay and not processing time, and a huge gap in time of presentation delay, what is happening there?  Style, layout, etc?  Self-Profiling can help there in particular.

Pat: I don't think there's any part that helps w/ diagnosing extension-related performance problems though

Yoav: I don't expect us to have that ability due to fingerprinting concerns

Nic: Thinking about this a lot. With Boomerang we’ve tried to capture that in the past (interactions, mouse movements), and being able to go from the problem to how to solve it is the golden ticket for our customers.

… Try to capture attribution on the beacon, but hard to translate this to something actionable

… Would love to see how this works out in practice. Very promising.

Noam: Problem/use-case is extremely important.  We do this on a daily basis.

... back to Patrick's point, we use JS Self-Profiling API.  But to do that, we use EventTiming and cross samples with ET API.  So we know where to focus instead of fixing random slow callstacks.

... We get what is slow, and what is the root cause.

... If this is due to sync layout or rendering or style calc, this is a huge challenge for us, and we're promoting the "markers" feature for JS Self Profiling as it would help there.  It would give us a root cause in production for users.

... We rarely use lab perf test for those challenges

Michal: There are a set of features that the best in the world need to solve problems for their customers.  Which is different from the majority of users, who just need to know how to solve CWV problems. Different solutions for each

Dan: Just wanted to mention that I'm facing a current real use-case.  On one of our applications, we're experiencing bad 90 percentile performance on low-end devices.  Just being able to tell if the majority of the issue is slow-networks or slow-cpu is very difficult.  Knowing that would help us know where to focus our efforts to get biggest win

... Maybe sum up LongTasks over time and get that data back

... Not necessarily guaranteed all CPU time is spent in Long Tasks, could be in shorter tasks

... Just knowing CPU % within period of time, even without attribution, would be useful

... Strong indicator of the direction to take

Michal: In that case are you trying to answer the question "is the environment at fault" or the "site at fault".

Dan: Is the problem mostly network related (API calls to backend are taking a long time to complete, backend is slow) or about just high CPU utilization on low-end devices due to third-party scripts etc

... For example we made significant effort, reduced a lot of script download, but impact has been negligible

... Show impact to bosses, the effort didn't justify the results

Yoav: Do we need browser APIs that make this easier?

... e.g. the getSelector() hack should be easier to do

... Maybe need a way to buffer ahead of time, capture all of EventTiming below 16 or all in general for this kind of use-case

Dan: Based on real use case, this would've been useful for me at WIX

... Whole bunch of websites and little insight into how each were built

... Really challenging when we had large CSS values to identify main culprit

... Type of image instead of specific image

Nic: Can we do a hands-on at TPAC?

Everyone: YES!