GithubHelp home page GithubHelp logo

thejc / awesome-web-performance-metrics Goto Github PK

View Code? Open in Web Editor NEW

This project forked from csabapalfi/awesome-pagespeed-metrics

0.0 1.0 0.0 20 KB

List of awesome web performance metrics - specs/docs/etc

awesome-web-performance-metrics's Introduction

Awesome Web Performance Metrics

Lab data (Synthetic measurements)

Make a request to your page with a tool and evaluate performance.

Google Lighthouse (LH)

Lighthouse is a tool built on Google Chrome to audit web pages. You can run it from Chrome DevTools, a Chrome Extension or from the command line (even with headless Chrome).

WebpageTest (WPT)

WebpageTest is an open source project to test web page performance. It supports multiple browsers, testing on real devices and has a free hosted version at webpagetest.org

Sitespeed.io

Sitespeed.io is a set of Open Source tools to monitor and measure the performance of your web site.


Field data (Real User Monitoring - RUM)

Collect performance data from real users visiting your page.

Chrome User Experience Report (CrUX)

The Chrome User Experience Report provides user experience metrics for how real-world Chrome users experience popular destinations on the web. Available as a Google BigQuery dataset.

Your web analytics


User-centric metrics

Blogpost - User-centric Performance Metrics

Use the questions below to organize/prioritize your metrics from the user's perspective.


Is it happening?

  • Did the navigation start successfully?
  • Has the server responded?

Start render

The Start Render is the time from the start of the initial navigation until the first non-white content is painted to the browser display.

First Paint (FP)

First Paint reports the time when the browser first rendered after navigation. This excludes the default background paint, but includes non-default background paint. This is the first key moment developers care about in page load – when the browser has started to render the page.

  • Lab: LightHouse JSON report includes it but not the HTML report, also similar to Start render in WPT
  • Field: Chrome 60+, Opera 47+, CrUX
  • Spec - FP - W3C

First Contentful Paint (FCP) ⭐

First Contentful Paint marks the time at which the first text or image is painted (including background images), non-white canvas or SVG. This includes text with pending webfonts. This is the first time users could start consuming page content.


Is it useful/meaningful?

  • Has enough content rendered that users can engage with it?

Visually Complete

The Visually Complete is the time from the start of the initial navigation until the visible (above the fold) part of your page is no longer changing. (Measured using a color histogram based on video/screenshots recording).

First Meaningful Paint (FMP)

First Meaningful Paint measures when the primary content of a page is visible. It's essentially the paint after which the biggest above-the-fold layout change has happened, and web fonts have loaded.

Speed Index ⭐

Speed Index shows how quickly the contents of a page are visibly populated (lower numbers are better). This is done by frequently measuring visual completeness during loading. The quicker the page is more visually complete the lower the value.

Hero Element Timing ⭐

Hero Element Timing captures when specific elements are painted by the browser (e.g. your h1 or your hero image, etc).


Is it usable?

  • Can users interact with the page, or is it still busy loading?

User Timing marks

The User Timing API allows the developer to create application specific timestamps that are part of the browser's performance timeline. You can create a user timing mark to measure when your JS has loaded (e.g. for a specific component).

  • Lab: LH, WPT
  • Field: IE 10+, Safari 11+ (and Chrome, Firefox of course)
  • Spec - User Timing
componentDidMount() {
    performance.mark("yourcomponent.usable");
}

First Interactive

See First CPU Idle. WPT still calls it First Interactive but Google/Lighthouse renamed to First CPU Idle to avoid confusing this with Time to Interactive (TTI)

First CPU Idle ⭐

First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input.

Consistently Interactive

See Time to Interactive (TTI). WPT still refers to TTI as Consistently Interactive but it's only available for Chrome and not surfaced on the UI (only in raw results XML/JSON).

Time to Interactive (TTI) ⭐

Time to interactive is the time it takes for the page to become fully interactive. Not to confuse with First Interactive or First CPU Idle.

  • Lab: Lighthouse, WPT (it's called Consistently interactive in WPT, also only in Chrome even in WPT and not shown on the UI at all)
  • Field: Chrome 58+ with polyfill
  • Polyfill - TTI
  • Spec - TTI - LH

Estimated Input Latency

Estimated Input Latency is an estimate of how long your app takes to respond to user input, in milliseconds, during the busiest 5s window of page load. If your latency is higher than 50 ms, users may perceive your app as laggy.

First Input Delay (FID) ⭐

First Input Delay (FID) measures the time from when a user first interacts with your site to the time when the browser is actually able to respond to that interaction. An interaction can be when users click a link, tap on a button, or use a custom, JavaScript-powered control.

  • Lab: N/A (as it requires the user to interact with the page)
  • Field: IE9+ (and Safari, Chrome, Firefox) (with polyfill - 0.4KB)
  • Docs - FID
  • Polyfill - FID

Is it delightful/smooth?

  • Are the interactions smooth and natural, free of lag and jank?

Frame rate

The frame rate is the frequency at which the browser can display frames. A frame represents the amount of work a browser does in one event loop iteration such as processing DOM events, resizing, scrolling, rendering, CSS animations, etc. A frame rate of 60 fps (frames per second) is a common target for a good responsive user experience. This means the browser should process a frame in about 16.7 ms.


Resource byte weights

You can measure the byte weight of your assets with a number of tools. These can be tracked Lab only as the numbers are usually the same in the Field (but be mindful of device type or geographical location specific pages).

JavaScript weight (incl third-parties)

Measure and keep track of the compressed (and uncompressed) byte weight of your own JS bundles and all thirdparty JS loaded on your page. Third parties can be analytics, marketing tags, customer support chat widget, etc.

Loading lots of JavaScript is usually the root cause of high TTI or FID values.

HTML weight

Your initial HTML document is alway number one on your critical rendering path. Be sure not excessively embed resources like SVGs or large amount JS or CSS. (Some critical CSS or JS is ok, the key here is how much).


Page lifecycle (TODO)

DOMContentLoaded

window.load

Load abandonment


Network timing (TODO)

Blogpost - Navigation and Resource Timing

Navigation Timing

Resource Timing

Server Timing

Surface any backend server timing metrics (e.g. database latency, etc.) in the developer tools in the user's browser or in the PerformanceServerTiming interface.


Concepts (TODO)

Critical rendering path

The Main Thread and Long tasks

awesome-web-performance-metrics's People

Contributors

csabapalfi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.