Performance

perf/lcp-image-priority

The image that is likely the LCP element loads eagerly with fetchpriority high; it is never lazy-loaded.

seriousstaticfe-images

Why

The hero image is usually the largest thing in the first view, so its load time is the page's Largest Contentful Paint. loading="lazy" makes the browser wait until layout to know whether the image is in view, which adds a delay to exactly the request that matters most. Marking it fetchpriority="high" and lazy at once cancels the hint.

Fix

Remove loading="lazy" from the hero and the first images in view, and give the one LCP image fetchpriority="high" (Next.js 16: <Image fetchPriority="high"> or loading="eager", since next/image is lazy by default and priority is deprecated in favour of preload; Angular <img ngSrc priority>, Nuxt <NuxtImg :preload="{ fetchPriority: 'high' }">). Keep loading="lazy" for images further down. Confirm which element is the LCP with audit --url or the DevTools Performance panel.

Examples

<!-- bad -->
<img src="hero.avif" alt="Autumn collection" width="1600" height="900" loading="lazy">
<!-- good -->
<img src="hero.avif" alt="Autumn collection" width="1600" height="900" fetchpriority="high">

Sources

Facts

Id
perf/lcp-image-priority
Severity
serious
Check
static checked in the source by audit
Applies to
html angular vue svelte astro jsx
Same problem in
Lighthouse lcp-discovery-insight
Taught by the skill
fe-images Images and media delivery
Since version
0.1.0

Rule file on GitHub

Read it in the terminal

npx github:dawidolko/frontend-skills explain perf/lcp-image-priority