Yesterday, Chrome announced that native lazy-loading is no longer behind a flag in Chrome 76. The loading
attribute can now be used to defer the loading of offscreen elements (i.e. images and iframes). Currently, the following values can be used:
-
auto
: The default behavior of the browser. The same as not including the attribute at all. -
lazy
: Defers the loading of the resource until it reaches a calculated distance from the viewport. -
eager
: Loads the resource immediately, regardless of where it’s located.
Supporting lazy-loading in other browsers
Checking for the loading
property allows you to decide how to implement lazy-loading. For browsers that have it, you can use the native implementation. For browsers that don’t, you will still need to load a polyfill or third-party library.
if ('loading' in HTMLImageElement.prototype) {
// Lazy-loading supported by browser
} else {
// Fetch a polyfill or third-party library
}
As of now, only Chromium 76-based browsers have this functionality natively. We’ll have to wait and see if (and how soon) other browsers follow suit.
Further Reading
For more information, Google Developers’s article, Native lazy-loading for the web, is a good place to start.