
Create an offline fallback page
Learn how to create a simple offline experience for your app.
The best problem-solving writing in software engineering — databases, performance, security, frontend and distributed systems, in one feed.

Learn how to create a simple offline experience for your app.


This document explains how you can use the OffscreenCanvas API to achieve performance improvements when rendering graphics in your web app.

This post highlights a few powerful lines of CSS that do some serious heavy lifting and help you build robust modern layouts.

Cumulative Layout Shift (CLS) is a metric that quantifies how often users experience sudden shifts in page content. In this guide, we'll cover optimizing common causes of CLS such as images and iframes without dimensions or dynamic content.

Use media queries to send images that are only as large as they need to be, a technique commonly known as responsive images.

Learn how business decision makers and non-developers can improve Core Web Vitals.

Learn how to optimize your website's Interaction to Next Paint.

Input delay can contribute significantly to total interaction latency and negatively affect your page's INP. In this guide, learn what input delay is, and how you can reduce it for faster interactivity.

JavaScript often triggers visual changes. Sometimes that's directly through style manipulations, and sometimes it's calculations that result in visual changes, like searching or sorting data. Badly-timed or long-running JavaScript is a common cause of performance issues. You should look to minimize its impact where you can.

A step-by-step guide on how to break down LCP and identify key areas to improve.

You've been told "don't block the main thread" and "break up your long tasks", but what does it mean to do those things?

Learn how to optimize for the Time to First Byte metric.

Today, we will cover new tooling features in Lighthouse, PageSpeed and DevTools to help identify how your site can improve on the Web Vitals.

This post explains how to load WebFonts to prevent layout shifts and blank pages when WebFonts are not available when the page loads.

You should audit your resources periodically to ensure that each resource is helping deliver a better user experience.

Keep your network transmission and parse/compile cost for JavaScript low to ensure pages get interactive quickly.

Third-party scripts provide a wide range of useful features, making the web more dynamic. Learn how to optimize the loading of third-party scripts to reduce their impact on performance.

Next to eliminating unnecessary resource downloads, the best thing you can do to improve page load speed is to minimize the overall download size by optimizing and compressing the remaining resources.

The Save-Data client hint request header available in Chrome, Opera, and Yandex browsers enables developers to deliver fast and light applications to users who have opted-in to 'data saving' mode in the browser.

Once a web-based payment app is registered, it's ready to accept payment requests from merchants. This article teaches you how to orchestrate a payment transaction from a service worker during runtime.

The Origin-Agent-Cluster header cuts off synchronous access to other origins on the same domain, and hints to the browser to give your origin dedicated resources.


How to determine a server's bottleneck, quickly fix the bottleneck, improve server performance, and prevent regressions.