loading...
Cover image for Any reason for not using loading="lazy" attribute?
The DEV Team

Any reason for not using loading="lazy" attribute?

pp profile image Paweł Ludwiczak ・1 min read

One of our community members suggested using loading="lazy" for all images on DEV. Pros are pretty clear to me. But are there any cons of this? Any kind of gotchas or edge cases we should watch out for?

If not, why isn't that the default for loading images in browser?

Discussion

pic
Editor guide
Collapse
ben profile image
Ben Halpern

I think conceivably if there is an image you know you want showing up ASAP, you'd want to set loading="eager" on those ones..... But for the most part, the lazy images already above the fold will be loading more or less instantly.

All else equal, lazy is the way to go, but if we see that some images are being wrongly deferred, we could instruct the browser otherwise.

Collapse
pp profile image
Paweł Ludwiczak Author

Then I kinda wonder why loading="lazy" isn't the default behavior for browsers (those that support it). It sounds like it's the way to go in 99% of the cases. And for the rest of the cases, you set loading="eager" or whatever is appropriate to overwrite default behavior.

Collapse
andericsilva profile image
Anderson Ismael Couto da Silva

it is costly for browsers to calculate the current position of each image and cross-reference the scrollbar data, in addition to doing such a thing they would break various image-based tracker mechanisms

Collapse
andericsilva profile image
Anderson Ismael Couto da Silva

you're right @ben , lazy load sucks.

possibly that's the reason that many here have avoided Medium to use the dev.to which appears to be much faster and stable precisely by avoiding lazy load.

intinite load is a valid choice, but lazy load is a lazy dev thing 😆

Collapse
shalvah profile image
Shalvah

I don't know how Medium's lazy load is implemented, but I hate it. Most times, the images remain permanently stuck loading. Seen this on a few other sites too. IMO, it's unnecessary.

I'm on a slow-ish connection, but I prefer just having the images load at once, so I know I can use the entire page. Lazy loading to me seems like one of those cool optimisations with debatable impact in the real world.

Collapse
trashhalo profile image
Stephen Solka

I thought your question was really interesting. Why not lazy everything?? I thought maybe the browser implementer's might have considered this and here is what I could find.

Blink LazyImages (public) Doc
docs.google.com/document/d/1e8ZbVy...

Blink LazyLoad Design Doc (public) Doc
docs.google.com/document/d/1e8ZbVy...

The most relevant section is the "Compatibility risks" from both documents.

Summarizing here if you dont want to read the source material. The risks all seem marginal. The most likely one to have impact to dev.to is change in load pattern in how images are accessed that MAY have an impact on your servers. If you are loading your images from s3 or a cdn I would not expect any impact.

Also if you are doing any analytics via images, counting image loads, or tracking pixels it can mess with statistics. But shrug emoji

Collapse
simevidas profile image
Šime Vidas

Why isn't that the default for loading images in browsers?

Some websites expect that all images on the page load without delay. If browsers started lazy-loading images by default, those sites could become buggy. If there’s one thing that browsers try to avoid, it’s breaking websites like that.

Collapse
maybach profile image
Patrick

Can you elaborate which websites you have in mind, which expects all images loaded without delay?
I can only think of artsy / brutalism websites and Websites who are using basic 360° Product Images

Collapse
simevidas profile image
Šime Vidas

I’m just assuming. Generally speaking, for any behavior in a browser, there will be some websites that depend on that behavior. Even bugs. If a browser has a buggy implementation, some websites will start depending on those bugs, and fixing the bugs in the browser will cause bugs on the websites.

Collapse
barraponto profile image
Capi Etheriel

Is it possible to default img tags to lazy load via browser extension? It'd be an interesting experiment to see what breaks from the point of view of end users.