
Service worker mindset
Working with service workers is new and unfamiliar for many web devs. This post provides some tips for wrapping your mind around them.
4,264 articles on Engineering.

Working with service workers is new and unfamiliar for many web devs. This post provides some tips for wrapping your mind around them.

Best practices for timing your service worker registration.

Practical developer guidance about what to do when a user logs out of the website.

Help your users sign up, sign in and manage their account details with a minimum of fuss.

An SXG is a delivery mechanism that makes it possible to authenticate the origin of a resource independently of how it was delivered.

Learn how to serve signed exchanges (SXGs) using Web Packager.

Paint is the process of filling in pixels that eventually get composited to the users' screens. It is often the longest-running of all tasks in the pipeline, and one to avoid if at all possible.

Starting in Chrome 81, scrollers remain snapped when the page layout changes. In other words, you no longer need to add event listeners to force resnapping.

You can influence the way your site appears when shared via social media by adding a few lines of code to each page. This can help bring more people to your site by providing previews with richer information than would otherwise be available.






stale-while-revalidate helps developers balance between immediacy—loading cached content right away—and freshness—ensuring updates to the cached content are used in the future.

Compositing is where the painted parts of the page are put together for displaying on screen.

The focus indicator identifies the focused element. For users who can't or don't use a mouse, this indicator is extremely important, as it acts as a stand-in for their mouse-pointer.


Make sure your service worker knows what to do when a partial response is requested.

Learn what code coverage is and discover four common ways to measure it.

Determine what to test, define your test cases, and prioritize.

Determine what you need to test and what you can rule out.

This post describes the Total Blocking Time (TBT) metric and explains how to measure it

Using the alt attribute to provide text alternatives for images

Learn how to soften and give weighting to your animations.

What ending support for Internet Explorer meant for the customers and developers at Maersk.com.



Find out the ways that spammers can compromise your site.


This post explains the Time to First Byte (TTFB) metric and shows how to measure it.

This post introduces the Time to Interactive (TTI) metric and explains how to measure it

How establish a two-way communication channel between the page and the service worker.

Learn about how cookies work and what are first-party and third-party cookies.

What's the difference between a host, site and origin? What is an eTLD+1? This article explains.

Uncompressed images bloat your pages with unnecessary bytes. Run Lighthouse to check for opportunities to improve page load by compressing images.

Use push notifications to engage users with targeted, timely updates.

Verify ownership then check your site using Search Console.

Most browsers and devices have access to the user's geographic location. Learn how to work with the user's location in your site and apps.



How to open a Progressive Web App in an Android app.

Use the tabindex attribute to explicitly set an element's tab position.

Sharing a practical guide to variable fonts, with lots of examples.

You've properly prepared a video file for the web. You've given it correct dimensions and the correct resolution. You've even created separate WebM and MP4 files for different browsers. For anyone to see it, you still need to add it to a web page.

Research shows that web video lead to higher engagement and sales. Even if you haven't added video to your sites yet, it's just a matter of time until you do.

A showcase of tools now available on the web thanks to WebAssembly.

WebAssembly thread support has shipped in Chrome 70 under an origin-trial.

If you've already used the WebXR Device API, you'll be happy to know there's very little new to learn. Entering a WebXR session is largely the same. Running a frame loop is largely the same. The differences lie in configurations that allow content to be shown appropriately for augmented reality.

Components are the building blocks of modern web applications. What best practices should you follow when building your own components so they can stand the test of time?

This post sums up a talk on the state of web components in 2019, given by Kevin Schaaf of the Polymer Project and Caridy Patiño of Salesforce.

Learn how different components can be used to render web content inside Android apps.

WebOTP API can now receive an OTP from within an iframe.

Learn more about Web Payments and how they work.

Since the launch of the Payment Request API in Chrome 53 and the Payment Handler API in Chrome 68, there have been quite a few changes made to their respective specifications. This post summarizes those updates and will continue accumulating those API changes.


When the user adds your Progressive Web App to their home screen on Android, Chrome automatically generates an APK for you, which we sometimes call a WebAPK. Being installed via an APK makes it possible for your app to show up in the app launcher, in Android's app settings and to register a set of intent filters.

Learn how to use the newest WebAssembly features while supporting users across all browsers.

