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ů uživatelské zkušenosti se stránkou. Prakticky to znamená: 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í element (často hero obrázek nebo nadpis v kombinaci s pozadím). Zajistěte rychlé načítání a časné vykreslení.
- Stabilita rozložení (CLS): rezervujte rozměry pro obrázky, komponenty a reklamní plochy. Vylučte pozdní injektování prvků nad obsah.
- Reakční doba (INP): odstraňte blokující úlohy na hlavním vlákně, minimalizujte skripty třetích stran, rozdělte dlouhé úlohy 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 zrychlit
- 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čítání:
- 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 škrcení 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 embedy: vždy nechte pevné „sloty“; pokud nejsou obsazené, zobrazte placeholder, nikoli kolaps kontejneru.
- Fonty: použijte
font-display: swap|optional,size-adjustv @font-face k minimalizaci FOUT/FOIT poskakování. - UI interakce: nezpůsobujte změny layoutu při hoverech/rozkliknutích bez rezervace místa; 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 špatné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, nevyvázané event listenery.
- Náročné event handlery: složitá 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-kritický JS; import() on interaction pro sekundární UI.
- Optimalizace reaktivních UI: memoizace, selektivní re-renderování, 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. Skvělé 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"; pro ostatníloading="lazy"s IntersectionObserver. - Responsivita:
srcset/sizes, omezte max. šířku; nepodávejte assety 2× větší, 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ůsledně 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 k minimalizaci poskakování textu (CLS) a FOIT.
- Subseting: podávejte pouze potřebné glyfy; zvažte unicode-range.
- Systémový 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): posílejte kostru co nejdříve, doplňujte obsah postupně.
- Komprimace: 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é uží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í jen ostrovy; zbytek statický.
- Routing: přednačítejte pouze odkazy nad ohybem a v dohledu scrollu; speculation rules používejte šetrně.
- Formuláře a interakce: validace a formátování ve Workerech, 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žívejte 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 embedy; fonty s
size-adjust. - INP: bez úloh > 50 ms; code-splitting; skripty třetích stran 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é“ polyfly: slepě vkládat polyfily pro všechny = vyšší JS budget; cílené podání dle 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 úloh; 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ů, font pipeline, stabilizace reklam/embeds.
- Týden 4: INP – code-splitting, workery, 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), zpevnění CI/CD bran.
Měření dopadu na byznys
- Konverze: porovnejte před/po změnách na stejných zdrojích návštěvnosti.
- Míra odchodů a čas do interakce v RUM podle zařízení.
- Výnosy na session (RPS) a partner/ads viewability u publisherů.
Pragmatický přístup vítězí
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 neustálý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.