In you markdown text:
![altText](https://example.com/test.jpg)
Yields:
<img src="https://example.com/test.jps" alt="altText" loading="lazy">
gatsby-remark-images
also has the support to add loading
attribute, but it only works for local images, not images from external sources.
<img src="image.png" loading="lazy" alt="…">
This image will be NOT loaded over the network until the viewport is approaching it.
This will significantly speed up your site loading if there are tons of images.
Here are the supported values for the loading
attribute:
auto
: Default lazy-loading behavior of the browser, which is the same as not including the attribute.lazy
: Defer loading of the resource until it reaches a calculated distance from the viewport.eager
: Load the resource immediately, regardless of where it's located on the page.
It is already supported in Chrome 76 and later versions. It should be supported in any Chromium 76-based browser.
If the browser doesn't support this attribute, it will be ignored and images will load as usual.
Check it out here: https://caniuse.com/#search=loading%20lazy
In your gatsby.config.js:
{
resolve: `gatsby-transformer-remark`,
options: {
plugins: [
{
resolve: `gatsby-remark-images-native-lazy-load`,
options: {
loading: "lazy" // "lazy" | "eager" | "auto"
}
}
],
},
}