Core Web Vitals v roce 2025: stav, prahy a co se vyplatí řešit
V roce 2025 jsou Core Web Vitals (CWV) tři metriky: LCP (Largest Contentful Paint) – vnímaná rychlost načítání, CLS (Cumulative Layout Shift) – vizuální stabilita a INP (Interaction to Next Paint) – celková odezva na interakci. Prahové hodnoty „dobrého“ stavu zůstávají:
- LCP ≤ 2,5 s (75. percentil v terénu)
- CLS ≤ 0,10
- INP ≤ 200 ms
Ačkoliv Google explicitně neuvádí „ranking skóre“, CWV jsou součástí signálů zkušenosti se stránkou. Prakticky: dobré CWV = vyšší použitelnost, nižší míra opuštění, lepší konverze a často i lepší viditelnost.
Co má největší dopad (80/20): prioritizační rámec
- Hero prvek pro LCP: optimalizujte první velký vizuální prvek (často hero obrázek nebo nadpis v kombinaci s pozadím). Zajistěte rychlé načtení a časné vykreslení.
- Stabilita rozložení (CLS): rezervujte rozměry pro obrázky, komponenty a reklamní plochy. Vylučte zpožděné vkládání prvků nad obsah.
- Reakční doba (INP): odstraňte blokující úlohy na hlavním vlákně, minimalizujte třetí strany, rozdělte dlouhé tasky a optimalizujte event handlery.
Tyto tři body obvykle zlepší celkový dojem rychleji než „kosmetické“ úpravy.
LCP v praxi: proč se zpožďuje a jak ho urychlit
- Identifikujte LCP element: v RUM/Lighthouse/DevTools zjistěte, který element je LCP. Často je to
<img>v hero sekci nebobackground-imagena nad-hero kontejneru. - Prioritizujte jeho načtení:
- Priority Hints:
fetchpriority="high"na LCP obrázku. - Preload:
<link rel="preload" as="image" imagesrcset="..." imagesizes="..." href="...">pro hero image; pro fonty<link rel="preload" as="font" type="font/woff2" crossorigin>. - HTTP/2+/3 a dobrý TTFB (server, CDN, kvázi-SSR).
- Priority Hints:
- Formáty a velikost: AVIF nebo WebP, správné
srcset/sizes, ořezání a komprese (bez omezování kvality textů a UI). - Hydratace a frameworky: preferujte SSR/SSG, partial/streaming hydrataci a „islands architekturu“; nenatahujte megabajty JS pro obsah nad ohybem.
- Pozadí v CSS: pokud je LCP background-image, zvažte
<link rel="preload" as="image" href="...">a zejména nezapomeňte na velikost souboru.
CLS: stabilita bez poskakování
- Rezervace místa: nastavte
width/heightna obrázky (neboaspect-ratio), contain-intrinsic-size pro lazy komponenty. - Reklamy a embed-y: vždy nechte pevné „sloty“; při neobsazení zobrazte placeholder, nikoli kolaps kontejneru.
- Fonty: použijte
font-display: swap|optional,size-adjustv @font-face na minimalizaci FOUT/FOIT poskakování. - UI interakce: nezpůsobujte layoutové změny při hoverech/rozkliknutí bez rezervace prostoru; animujte transform místo top/left/width/height.
- Zpožděné bannery: cookie lišty, newslettery a promo boxy vkládejte pod obsah nebo do overlaye bez reflow nad obsahem.
INP: od FID k plné odezvě
INP měří nejhorší (nebo blízko nejhorší) odezvu napříč interakcemi během celé návštěvy. Nejčastější příčiny horšího INP:
- Dlouhé úlohy na hlavním vlákně (>50 ms): velké bundly, masivní JSON parsování, synchronní skripty, layout thrashing.
- Třetí strany: tag manažeři, chat widgety, AB testy bez „idling“ strategie, nepřidružené event listenery.
- Náročné event handlery: těžká logika při click/input, zbytečný re-render stromu, nereaktivní tabulky a grafy.
Řešení:
- Rozdělte dlouhé úlohy (scheduler/yield), requestIdleCallback, setTimeout(0) batching; použijte Web Workers pro CPU náročné výpočty.
- Code-splitting a defer pro non-critical JS; import() on interaction pro sekundární UI.
- Optimalizace reaktivního UI: memoizace, selektivní re-rendering, virtuální scroll pro seznamy.
- Limit třetích stran: audity, zpožděné načítání, Permission/Consent mode s „off-main-thread“ variantami.
Měření: terén (RUM) vs. laboratoř
- Field: CrUX, vlastní RUM (Web Vitals JS), GA4 s eventy pro LCP/CLS/INP a percentily. Toto je referenční pro hodnocení Google.
- Lab: Lighthouse, WebPageTest, DevTools. Výborné pro diagnostiku, nikoli pro finální verdikty.
- 75. percentil: optimalizujte pro většinu reálných návštěv (síť, zařízení, lokality), ne jen pro ideální podmínky.
Obrázky a média: detaily, které rozhodují
- Hero obrázek:
loading="eager"+fetchpriority="high"; u ostatníchloading="lazy"s IntersectionObserver. - Responzivita:
srcset/sizes, omezte max-šířku; neposílejte 2× větší asset, než je potřeba. - Moderní formáty: AVIF (nejlepší poměr), fallback WebP/JPEG; u ikon zvažte SVG.
- Video: poster obrázek,
preload="metadata", zpožděné načítání přehrávače; pro hero videa důkladně zvažte obchodní přínos vs. LCP.
Fonty a typografie bez penalizace
- Preload kritických fontů (WOFF2),
crossoriginpokud jsou na CDN. - font-display a size-adjust pro minimalizaci seskoku textu (CLS) a FOIT.
- Subseting: poskytujte jen potřebné glyfy; zvažte unicode-range.
- System UI fallback: plynulý přechod během načítání.
Síť a server: TTFB jako základ rychlosti
- TTFB: cache na úrovni okraje (CDN), co-location s uživateli, HTTP/3/QUIC, minimalizace serverové logiky pro první odpověď.
- HTML streaming (SSR): pošlete kostru co nejdříve, doplňujte obsah postupně.
- Komprese: Brotli pro textové zdroje; ETag/Last-Modified, Cache-Control s vhodnými TTL.
- Preconnect/Preload:
<link rel="preconnect" href="https://cdn.example.com" crossorigin>pro známé domény; nadměrné používání nepomáhá – měřte.
SPA a moderní frameworky: jak neztratit rychlost
- SSR/SSG jako výchozí, hydratace postupná (partial/streaming); pro neinteraktivní části preferujte čisté HTML.
- Islands: interaktivní jsou jen ostrovy; zbytek je statický.
- Routing: prefetchněte jen odkazy nad ohybem a v dohledu scrollu; speculation rules používejte šetrně.
- Formuláře a interakce: validace a formátování v Worker-u, ne na hlavním vlákně.
Reklamy, analytika a třetí strany bez dramatu
- Politika zero-trust: inventarizujte skripty; odstraňte nevyužité tagy a zbytečné vendor knihovny.
- Načasování: neblokujte first paint; spouštějte měření po „idle“ nebo po prvním interaktivním gestu, pokud to obchod umožňuje.
- Sandboxing: použijte iframe s
priority=lowa jasnými rozměry; žádné vkládání nad obsah.
Kontrolní seznam pro nasazení (CWV Release Checklist)
- LCP: LCP element identifikován a preloadován; hero asset <200 KB;
fetchpriority="high"; TTFB < 0,8 s. - CLS: všechny média mají rozměry/aspect-ratio; rezervované sloty pro reklamy a embed-y; fonty s
size-adjust. - INP: bez úloh > 50 ms; code-splitting; 3P skripty po onload/idle; event handlery lehké a měřené v DevTools Performance.
- Měření: RUM implementován, eventy Web Vitals odesílány s percentily; segmenty podle země/zařízení/sítě.
- Regrese: CI s Lighthouse a WebPageTest; prahové brány na PR (např. LCP +10% = blokace).
Nejčastější omyly a slepé uličky
- Nadměrná lazy-load mánie: hero obrázek nikdy nenačítejte „lazy“.
- Preload všeho: pokud preloadujete příliš mnoho, zablokujete prioritní kanál a LCP se zhorší.
- Animace layoutu: mění rozložení a způsobují CLS; používejte transform/opacity.
- „Magické“ polyfily: slepě vkládat polyfily pro všechny = vyšší JS budget; cílené podávání podle UA/feature-detect.
- Ignorování pomalých sítí: optimalizujte pro 3G/4G a levná zařízení; to je reálný 75. percentil.
Roadmapa zlepšení CWV na 6 týdnů
- Týden 1: Field baseline (CrUX + RUM), identifikace LCP elementu a dlouhých tasků; audit třetích stran.
- Týden 2: Optimalizace hero (formát, preload, priority hints), TTFB (cache/CDN), odstranění „render-blocking“.
- Týden 3: CLS – rezervace rozměrů, fontová pipeline, stabilizace reklam/embeds.
- Týden 4: INP – code-splitting, workers, debounce/throttle, optimalizace eventů; limit třetích stran.
- Týden 5: SPA/SSR úpravy, streaming/partial hydratace, šetrné prefetchování.
- Týden 6: RUM validace, A/B test micro-zlepšení (kalkulace velikostí, obrázky), hardening CI/CD bran.
Měření dopadu na business
- Konverze: porovnejte před/po změnách na stejných zdrojích návštěvnosti.
- Míra opuštění a čas do interakce v RUM podle zařízení.
- Výnosy na session (RPS) a partner/ads viewability u publisherů.
Pragmatický přístup vyhrává
V roce 2025 je recept jednoduchý: LCP hero jako priorita, stabilní layout bez překvapení a interakce do 200 ms. Podpořte to racionální infrastrukturou (CDN, SSR/SSG, streaming), umírněným JS, čistým managementem třetích stran a nepřetržitým field měřením. Investice do těchto oblastí se vrací rychleji než do „exotických“ optimalizací a přináší citelný dopad na UX i výnosy.