Two problems, and the lazy loading made it worse. The hero is your LCP, so you want it loaded first, not deferred.
- Convert it: a 2.4 MB PNG photo should be a ~150 KB WebP or AVIF. Squoosh does it in the browser.
- Serve a smaller one to phones and tell the browser it matters:
<img
src="/hero-1600.webp"
srcset="/hero-800.webp 800w, /hero-1600.webp 1600w"
sizes="100vw"
width="1600" height="900"
fetchpriority="high"
alt="..."
/>Remove loading="lazy" from the hero, keep it on images below the fold.