Почему LCP элемент всё равно грузится последним, если оптимизация уже выполнена? Чаще всего браузер считает LCP самый крупный видимый объект на экране, и этот объект может подгружаться через JavaScript или CSS-фон, а не через тег img. Точный путь проверки: откройте Chrome DevTools, вкладка Performance, нажмите запись, перезагрузите страницу и найдите в таймлайне секцию Timings — там будет точный LCP элемент и момент его отрисовки.
Дальше смотрите чек-лист: убедитесь, что на LCP элементе не стоит loading=”lazy”, что он не спрятан за обёрткой с display:none до выполнения скрипта, и что для фоновых изображений используется предзагрузка через . Если LCP — это текст, проверьте font-display: swap: без него браузер ждёт загрузки шрифта и только потом рисует текст, из-за чего LCP сдвигается в конец. Основной инструмент для диагностики — вкладка Lighthouse в DevTools, но точную причину показывает именно Performance.
