Hacker News new | past | comments | ask | show | jobs | submit login
Web Vitals: essential metrics for a healthy site (chromium.org)
165 points by feross on May 5, 2020 | hide | past | favorite | 57 comments



Ironically, the page took more than a minute until first paint on an old iPad. (I even restarted the poor thing, thinking the HTTP stack had somehow died.) Please, mind that not everything is evergreen and that there's not much reason from a user's perspective to put perfectly working equipment to scrap just because devs decide to go with newest standards only. (Think green computing, which includes electronics waste. This also works both ways: a robust implementation is more likely to work in a few years from now on a then newer, probably much different browser engine.)


These are useful performance indicators for sure, but I don't understand how these are different than the metrics already built into Chromium's "Lighthouse" page speed audit (the "Audits" tab in the inspector).

Is the difference now that they will be more heavily weighed in search engine ranking? The article wasn't super clear on this, and the explanatory links seemed to push towards drinking a lot of Google kool-aid (eg. to measure the Core Web Vitals you must use Chrome UX report, and to do that you must use Google BigQuery, and to do that you must create a Google Account _and_ a Google Cloud Project. Wow.)

On closer inspection this whole thing is just a thinly veiled advertisement for GCP. No thanks.


Lighthouse is a lab-metric system while Web Vitals is a "real-user-metric" system. Both approaches are valid, and have their pros and cons.

Generally, lab metrics are convenient because you can run them whenever you'd like including before deploying to prod. But they can never tell you the ground-truth of what is really happening out there that real-user-metrics provide.

E.g. the FID metrics only make sense when someone actually interacts with your site. Lighthouse cannot know when people would interact and thus cannot calculate the metric.


Thanks for the clarification, that makes sense.

It is ironic that the vast majority of these performance issues are caused by render-blocking and CPU-sucking JavaScript, and so the recommended approach is to install yet another client side JS library (https://github.com/GoogleChrome/web-vitals/), which appears to only work in Chrome, and then use the library to post client side performance data to Google Analytics (though to be fair it could be any analytics).

"How badly are all your JS libraries slowing down your page? Find out with this one weird JS library!"

This seems like one of those things where if you get to the point where you need this, you're already in too deep.


@cramforce nailed it. One thing I'll add.. I would strongly encourage everyone to collect "field" (real user measurement) data for each of these metrics via their own analytics, as that'll give you the most depth and flexibility in doing root cause analysis on where to improve, etc. The mentions of CrUX and other Google-powered tools are not to create any dependencies, but to help lower the entry bar for those that may not have RUM monitoring already, or will need some time to get that in place.. For those users, we offer aggregated insights and lab-simulations (Lighthouse) to get a quick pulse for these vitals.


In Google documentation you'll hear this distinction described as "lab data" versus "field data": https://web.dev/how-to-measure-speed/#lab-data-vs-field-data


> to measure the Core Web Vitals you must use Chrome UX report

No, you just need this bit of javascript: https://github.com/GoogleChrome/web-vitals


These are great, but increasingly none of our web app's performance issues relate to any of these metrics.

Memory leaks, slow typing, UI interactions like opening a modal that shouldn't be taking 8s+, where's the literature on how those affect user satisfaction?


> slow typing, UI interactions like opening a modal that shouldn't be taking 8s+, where's the literature on how those affect user satisfaction?

That's right there in the post. Google calls these things "input delay." One of the three primary metrics called out in Google's post is FID, "first input delay," which is the delay on the first user interaction.

(Subsequent input delays are also bad for users, but subsequent input delays are usually only as bad as the first input delay.)


> (Subsequent input delays are also bad for users, but subsequent input delays are usually only as bad as the first input delay.)

I'm not sure about this statement. It sounds reasonable but I can't recall seeing any research about FID being a proxy for all input delay throughout the entire duration of a session. I would hypothesize that optimizations that improve FID would also tend to improve input delay in general. My main message here is just that I haven't seen that research.


Input delay is bad, period.

It's not a matter of first vs rest but observation that input while the page is loading is, often, where most of the egregious delays happen: the browser is busy parsing+executing oodles of script, sites don't chunk script execution and yield to the browser to process input, etc. As a result, we have FID, which is a diagnostic metric for this particular (painful) user experience problem on the web today.

Note that Event Timing API captures all input: https://github.com/WICG/event-timing. First input is just a special case we want to draw attention to due to the reasons I outlined above. That said, we encourage everyone to track all input delays on their site, and it's definitely a focus area for future versions of Core Web Vitals -- we want to make sure users have predictable, fast, response latency on the web.


I think those metrics aren't brought up as much in the blogosphere because they are harder to measure. Those metrics will be unique to the context of the app they're measured in. The metrics talked about in the article are ones that can be determined easily in the context that Chromium is working in.


> where's the literature on how those affect user satisfaction?

As someone else mentioned, it seems like all the issues you mentioned ultimately create user dissatisfaction because of input delay. In which case FID seems like it'd be a good metric for you to target. I'm not sure about the claim that if you improve FID then all input delay will be reduced for the entire duration of a person's session with your site, but I imagine that FID and general input delay are directly correlated. This is just conjecture however and is not a statement backed by research.

Here's a summary of some general research on how users perceive input delay: https://developers.google.com/web/fundamentals/performance/r...

(Tangentially related) The new performance.measureMemory() API may help you correlate memory leaks with business metrics: https://web.dev/monitor-total-page-memory-usage/


There is copious, voluminous literature stating that users hate slowness in all it's forms?


I believe it, but I mostly hear about how user retention drops off if the website takes more than 1s to load.

And while I believe other types of slowness make users unhappy without seeing the literature, the people driving our priorities don't see the $ impact at all


I hate slow sites and am pretty aggressive about bailing on anything that I consider slow.

But speed is a visitor's feature, not a benefit. The benefit (to the web site operator) of an ecommerce site is $ spent by visitor.

So for example yes, the Amazon site feels slow and bloated, but they've been doing live A/B testing for over 20 years and I'm pretty sure they don't care about speed unless it affects conversion; they'll be happy to cram something in even if it slows the site down, if it increases revenue.


Amazon seems pretty darn fast to me. You click and stuff happens. It's faster than Twitter or Github (the first two sites I compared it with).


Your site is already unhealthy no matter what because it's not a website. It's an application that just happens to also use http and browsers.


>If you require executing javascript to display things you've already lost and your site is already unhealthy no matter what because it's not a website.

That ship has sailed, nobody cares if it's not a "website" as in HTTP only, including 99% of users...


You say “nobody cares,” but I and many people I know and work with do care! I understand your point of view but maybe you should try to understand where others are coming from.


> I understand your point of view but maybe you should try to understand where others are coming from.

Can you make an argument for it? It kind of feels like a movie critic trying to explain why the Transformers are bad, even though they still rake in billions. If the Transformers changed to make the critic happy, it at best would have no impact on the billions, in all likelihood it would cause a regression, and so the critic needs an incredibly compelling argument.


> the critic needs an incredibly compelling argument

Popularity is a B.S. metric of correctness, quality, or pretty much anything other than zeitgeist.

It blows my mind that people still argue there is causality between quality and popularity. Certainly, there's correlation sometimes, but something does not need to be quality to be popular, nor is quality always popular. I mean, Van Gogh wasn't recognized until death. And you saw the 2016 US elections right?


>Popularity is a B.S. metric of correctness, quality, or pretty much anything other than zeitgeist. It blows my mind that people still argue there is causality between quality and popularity.

Yes, but "quality" is a fuzzy and personal metric in many domains...

Or conversely, "quality" can be defined as "popular with the critic type" in these domains - so it's still just a kind of popularity metric...


Eh. I think you're intentionally making things fuzzy.

If you have a bunch of Bowerbird watching the movie, it better have the color blue to be popular with them. We can reduce their "shit-test" list to something simple which obviously overlaps minimally with what is a reasonable definition for quality.

I'll yield that the Transformer movies do have phenomenal CGI, and that people who like them are in fact discerning of the quality within that. But this is just one dimension of "quality," and I highly doubt the critic is unaware of it.

The truth is that modern popularity is based off a narrow subset of shit-tests which are easily duped (Trump passed). Meanwhile there are many critics who aim to have a much broader and accurate shit-testing system. Some of them get up their own ass about trying to be above common shit-tests, and in the process they debase critics as a whole. All shit-tests matter.

But the point is that most people are really, really easily hackable and calling something that gets through their defenses a "quality hack" is lame. It's like hacking peoples wordpress sites from 2000.


>The truth is that modern popularity is based off a narrow subset of shit-tests which are easily duped (Trump passed).

I don't think quality, or, for that matter, political choices (as in your example), are that simple to judge.

E.g. Trump might have won, but not necessarily because people were "duped", but because they was not much better on offer -- it was either a Rob Schneider fart movie (Trump), or a pretentious emotionally-dead tone-deaf to many issues Hollywood oscar-bait (Hillary).


> I don't think quality, or, for that matter, political choices (as in your example), are that simple to judge.

Of course not. Every judgement is ultimately a failed attempt at omnipotence. But we try anyways, and there is such thing as progress. We can get closer, especially relative to each-other.

There's a great joke that the only probabilities humans believe in are 0%, 100%, and 50%. Basically anything that isn't certain is likely going to be treated like 50% by most people. It seems to be central in "equality of opinions," or "my ignorance is just as good as your knowledge."

To summarize, I think the following is a fun reductio-ad-absurdum argument, but ultimately not true: "There is no 100% accurate way of measuring quality, therefor all means of measurement are equally meaningless."

If it was true, there would be no point in symbols or abstractions of any sort.


> Popularity is a B.S. metric of correctness, quality, or pretty much anything other than zeitgeist.

In the case of transformers it's also a measure of money made, which, being incredibly pragmatic here, is also the point of most website people are paid to work on.

I'm not trying to say that all other measures don't have value or anything like that, I'm just trying to be practical in terms of the needs and goals of most modern websites. I'd much prefer every website was made "right", but "right" is nebulous and expensive.


I wrote a (lengthy) post on this: https://www.obsessivefacts.com/blog/2020-04-04-the-javascrip...

In the language of your analogy it would be "Transformers are unethical!" Our collective obsession with making billions is ruining entertainment media / the Internet / everything unfettered capitalism touches ;)


But you are entering the realm of philosophy not reality.

Fact is, applications and websites mostly exist for commerce.


What if the transformers movie was also spying to make money and was the primary cause of remote exploits, crashes, and fraud? Because javascript is.


Layout Shift is one of my biggest pet peeves.

Especially in search interfaces.


Of which google is a prime offender. 20 minutes ago I repeatedly clicked a google ad because my search goal was there just before it popped in.


Is there a name for that little suggestion box that slides into place, and more importantly is there a way to turn it off? I've trained my self to wait a couple seconds before clicking on links because it's popped under my cursor so many times.


I wrote a CSS rule to hide it, and the Google changed their DOM structure so it broke. Then I updated my user stylesheet, then they broke it again.

I don’t have the energy to continue, so I’m left with that classic software dilemma: good underlying technology, or good UI.


You might in the B group of an A/B test.

This happened to a colleague of mine not that long ago and I told him the trick is to report just about anything using the feedback tool and observe the most crazy bugs disappear in less than an hour as you get reassigned to tve A group ;-)

Another educated guess is a plug-in. I might have seen plugins that seems to optimize for ad click through by adding elements to move the ads just under yiur mouse pointer.


Makes you wonder how much money Google (and sites running ads in general) make due to people doing that. I'm sure quite a few people must accidentally click on ads they didn't mean to clik on due to that shift.


Happens to me all the time with ads loading when reading an article on mobile. Very annoying!


This is cool, thanks for shipping! Is Full / Largest Contentful Paint registering WebGL draw calls? My use case is a single page (up to 4K resolution) that contains a single canvas element and 3D context. Time to scene rendered to user is obviously of interest.

And any prospect for a full featured WebGL inspector / debugger in future?


To be frank, I don't care about a 500ms faster site if I spend 15-20 seconds navigating a convoluted GDPR notice, dodging newsletter prompts and looking for a one-line answer in a sea of ads and SEO filler text.

I would define essential metrics very differently:

- How fast can the users find the answer they are looking for? - What percentage of user interactions benefit the users? - How much information does the website collect about the users?


This seems to be failing the X-Forwarded-For validation on my site. I expect one X-Forwarded-For header entry on my (Heroku hosted) site, but requests from the measure tool [1] seem to have two entries in this header.

Example log entry:

    2020-05-05T23:00:07.144973+00:00 heroku[router]: at=info method=GET path="/en/" host=redacted.com request_id=a0c8605f-e67a-4b48-9538-c6bafebaaaaa fwd="107.178.238.42,66.249.84.103" dyno=web.1 connect=1ms service=4ms status=400 bytes=294 protocol=https
Is this expected behaviour?

[1] https://web.dev/measure/


https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-...

>If a request goes through multiple proxies, the IP addresses of each successive proxy is listed. This means, the right-most IP address is the IP address of the most recent proxy and the left-most IP address is the IP address of the originating client.


I don't see why you would only have one of those headers. There are use cases for two proxies to operate (think a corporate proxy + your proxy, or a corporate proxy to a privoxy instance to your proxy, a corporate proxy connecting to a data-saving proxy, etc.). Some proxies like to add these headers by default. Duplicate headers are acceptable in HTTP, so this is all perfectly up to spec.

In this case, if your reverse proxy is adding its own header, it should be stripping away the other X-Forwarded-For headers if you so wish, or have the application pick the appropriate header if you wish to receive all of them. This sounds like a misconfiguration issue on your website to me.


Great, three new TLAs that people will soon be throwing around in Medium posts without defining them.


The images are cut on mobile.


What good are all these metrics, and measures, and approaches, and techniques when Google's own websites en masse wouldn't give two craps about them?

Physician, heal thyself.


I just loaded a few Google services I use. AdSense takes 6 seconds to load. DoubleClick takes 10-15 seconds to load. Running a speed test on fast.com I'm getting 200Mbps.

Without question Google makes the slowest and least responsive sites I use. It's like the 600lbs man giving tips for staying in shape and living a healthy lifestyle. When they have a nearly unlimited budget and access to some of the best engineers and infrastructure on the planet, and they can't practice what they preach, it's difficult for me to listen.


Switching from Google Analytics to GoatCounter[0] was one of the best decisions I ever made for my personal site. I hadn't realized that the slowness of GA was keeping me from using it. The UI of GC is so fast that I often check it for fun, even on my phone.

[0]: https://www.goatcounter.com/


Are you referring to the AdSense and DoubleClick websites?


Why shouldn't they reach out to the public at the same time as reaching out to the rest of Google? It's a huge organization.


These metrics are good because your users care, and you can lose money if they leave, and that's why you should care.


Of course you should care. It is just ironic that Google is preaching this.


It's not Google that's preaching this. It's Chrome. Sure, Chrome is owned by Google. but at the scale of Google, you might as well consider them as independent organizations.


What Google sites are you referring to and what "do as I say, not as I do" behavior are you seeing? I'm not doubting you, I'm just asking for specific URLs so that I can forward the feedback to specific teams.


Gmail. Youtube.

Google.com is 34 requests and 2 MB resources. That page contains an image and an input box.

Original web.dev they rolled out was something like 15 megabytes in size (thankfully, they fixed that).

Google domains is 1.3 MB of JS for what is essentially a static site.

Their recent announcement about some advanced video compression they did (I immediately forgot, it was on HN). 55 MB with a 3 second video on it.

Material design. Just the front page is 3 MB of resources. Of them, 1.3 is Javascript. For a static page.

I can agree though that they have very slowly been getting better with some of their public properties. When we start talking about internal/private/customer-oriented pages (GCP console, GMail that immediately come to mind), they are just horrendously awful.


Gmail since the redesign is unbearably slow.


Gmail and YouTube were the first Google products I could think of (other than search), neither loads in under a second over WiFi where I have 50Mbps. Not even with a warm cache.


it matters for SEO / inbound marketing




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: