Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Skrót INP rozwija się jako Interaction to Next Paint i rzadko trafia mi się metryka, której nazwa równie dokładnie opisuje zawartość: mierzymy czas od interakcji użytkownika do najbliższej klatki, w której widać jej skutek.
Jedno zastrzeżenie na wstępie, bo bez niego cały tekst czyta się fałszywie: w chwili, w której to piszę, INP nie jest jeszcze Core Web Vital. Google zapowiedział, że zastąpi FID w połowie marca 2024 — czyli za sześć tygodni. Do tego dnia metryką responsywności punktowaną przez Google pozostaje FID, a INP jest wartością, którą można już zmierzyć i przygotować, ale która nikomu jeszcze niczego nie psuje w ocenie.
Prosto brzmi tylko w streszczeniu. Kiedy zaczynam czytać konkretne wartości z narzędzi, pojawiają się pytania, na które trudno znaleźć zwięzłą odpowiedź: dlaczego dwa narzędzia pokazują inną liczbę, czy przewijanie się liczy, skąd bierze się jedna wartość dla całej wizyty i czy 250 milisekund to katastrofa, czy drobiazg.
Zebrałem tu odpowiedzi, których sam szukałem, gdy zacząłem tłumaczyć tę metrykę klientom. Bez części o optymalizacji — to osobny temat. Tutaj wyłącznie definicja, sposób liczenia i granice, według których Google będzie oceniał wynik po marcowym przełączeniu.
Punktem wyjścia jest moment, w którym użytkownik czegoś od strony chce: klika przycisk, dotyka pozycji w menu, wpisuje znak w polu wyszukiwania. Punktem końcowym — moment, w którym przeglądarka narysowała klatkę pokazującą, że coś się stało.
Uwaga na kluczowy szczegół: metryka nie sprawdza, czy operacja się zakończyła. Jeśli po kliknięciu w „dodaj do koszyka” natychmiast pojawi się wskaźnik ładowania, pomiar jest zamknięty w tym momencie, mimo że żądanie do serwera dopiero leci. Odwrotnie — jeśli przycisk zmieni wygląd dopiero po powrocie odpowiedzi, całe oczekiwanie wchodzi do wyniku.
To rozróżnienie ma bezpośrednie konsekwencje dla projektowania interfejsu. Strona, która potwierdza przyjęcie kliknięcia od razu, będzie oceniona lepiej niż strona wykonująca dokładnie tę samą pracę, ale milcząca do końca operacji. Nie jest to obchodzenie pomiaru — dokładnie tak działa ludzkie postrzeganie responsywności.
Warto też podkreślić, że mówimy o mierze czasu oczekiwania, nie o mierze obciążenia. Strona z ciężkim kodem może mieć dobry wynik, jeśli ten kod nie blokuje reakcji interfejsu, i odwrotnie: lekka strona z jedną nieszczęśliwie napisaną funkcją potrafi wypaść źle.
Pojedynczy pomiar rozkłada się na trzy odcinki i to rozbicie jest najużyteczniejszą rzeczą w całej metryce, bo każdy odcinek naprawia się inaczej.
Kiedy dostaję samą liczbę bez rozbicia, wiem tylko, że jest problem. Kiedy dostaję rozbicie, wiem, do kogo iść: pierwszy odcinek to zwykle rozmowa o skryptach marketingowych, drugi o kodzie aplikacji, trzeci o strukturze szablonu i stylach.
Metryka nie bierze pod uwagę wszystkiego, co robi użytkownik. Liczone są trzy rodzaje zdarzeń: kliknięcie myszą, dotknięcie ekranu i naciśnięcie klawisza.
Nie liczy się natomiast przewijanie strony ani samo najechanie kursorem. To zaskakuje wiele osób, bo szarpiące przewijanie jest jednym z najbardziej irytujących defektów strony — ale mierzy się je innymi narzędziami i nie wchodzi do tej metryki.
Jest jeszcze subtelność dotycząca klawiatury: pomiar dotyczy pojedynczego naciśnięcia klawisza jako całości, wraz z powiązanymi zdarzeniami. Dlatego pole wyszukiwania z podpowiedziami odpytywanymi przy każdym znaku to jeden z najczęstszych problemów w sklepach — każde uderzenie w klawisz uruchamia pracę, którą trzeba wykonać przed narysowaniem kolejnej klatki.
W praktyce oznacza to, że kandydatów na słaby wynik warto szukać wśród elementów interfejsu obsługujących te trzy typy zdarzeń: menu, filtry, karuzele, akordeony, pola formularzy, przyciski koszyka i wszystko, co otwiera warstwę modalną.
Tu jest największa różnica względem FID, czyli metryki responsywności obowiązującej do marca: FID patrzy wyłącznie na pierwszą interakcję i tylko na jej opóźnienie wejściowe.
Przeglądarka mierzy wszystkie interakcje w czasie wizyty, a na koniec raportuje jedną wartość — praktycznie najgorszą z nich. Praktycznie, a nie dokładnie, bo dla wizyt z dużą liczbą interakcji odrzucany jest niewielki odsetek najbardziej odstających pomiarów. Dzięki temu jedno przypadkowe zacięcie, na przykład w momencie przełączenia sieci, nie decyduje o ocenie całej sesji.
Dwa wnioski płyną z tego dla codziennej pracy. Pierwszy: jeden wolny element potrafi zepsuć wynik strony, na której wszystko inne działa świetnie — wystarczy, że użytkownicy go używają. Drugi: im dłuższa wizyta i im więcej interakcji, tym większa szansa, że użytkownik trafi na ten wolny element, więc strony z rozbudowaną nawigacją mają trudniej niż prosty landing.
Osobna rzecz, o której warto pamiętać przy porównaniach: wartość jest przypisywana do wizyty, a nie do konkretnego kliknięcia, więc nie da się jej wprost zsumować ani wyciągnąć średniej z pojedynczych zdarzeń bez zniekształcenia obrazu.
Google opublikował progi razem z zapowiedzią zmiany, więc znamy je na długo przed marcem. Są trzy i są wspólne dla urządzeń mobilnych i komputerów.
Kluczowy szczegół, który decyduje o interpretacji: liczy się 75. percentyl wizyt, raportowany osobno dla urządzeń mobilnych i komputerów — tak samo jak przy pozostałych wskaźnikach. Nie średnia i nie mediana. Żeby po marcu zaliczyć się do przedziału dobrego, trzy czwarte wizyt musi mieścić się poniżej 200 milisekund.
Ta konstrukcja ma praktyczne znaczenie. Konsekwentnie eliminuje wynik ładny „w większości przypadków” — jeśli co trzeci użytkownik czeka pół sekundy, wynik będzie słaby niezależnie od tego, jak szybko strona reaguje na dobrym sprzęcie. Z tego samego powodu nie da się poprawić oceny przez optymalizację wersji na komputery: telefony liczą się osobno i tam prawie zawsze leży problem.
Najczęstsze źródło nieporozumień. Odpowiedź brzmi: bo mierzą dwie różne rzeczy.
Dane z pola pochodzą od prawdziwych użytkowników Chrome i uwzględniają ich sprzęt, łącze, wtyczki przeglądarki i sposób korzystania ze strony. Są zbierane w oknie liczonym w tygodniach i to one, a nie test laboratoryjny, będą podstawą oceny po marcu. Dane z testu laboratoryjnego to jednorazowe uruchomienie strony w kontrolowanych warunkach — pokazuje, jak strona się ładuje, ale nikt w tym teście nie klika.
I tu jest sedno: w audycie laboratoryjnym tej metryki po prostu nie ma, bo nie da się zmierzyć reakcji na interakcję, której nikt nie wykonał. Zamiast niej narzędzia pokazują wskaźnik czasu blokowania wątku głównego. To dobry przybliżony wskaźnik — jeśli wątek jest zablokowany długo po wejściu na stronę, reakcje na kliknięcia będą wolne — ale to nie ta sama liczba i nie należy jej nią nazywać.
Praktyczny wniosek: do oceny stanu bierz dane z pola, a do szukania przyczyn używaj narzędzi laboratoryjnych i ręcznego nagrywania scenariuszy w przeglądarce. Odwrotna kolejność kończy się optymalizowaniem czegoś, czego użytkownicy nie odczuwają.
Zbiór pomyłek, które zdarzają się najczęściej — także mnie na początku.
Pierwsza: porównywanie wartości dla adresu z wartością dla całej domeny. Przy mniejszym ruchu dane dla pojedynczego adresu mogą być niedostępne i narzędzie podaje wynik dla całej witryny. Łatwo wtedy uznać, że poprawka na jednej podstronie nic nie dała.
Druga: ocenianie efektu poprawki po jednym dniu. Okno pomiaru w danych publicznych ma kilka tygodni, więc zmiana wchodzi w statystyki stopniowo i przez pierwsze dni w ogóle nie jest widoczna.
Trzecia: mieszanie tej metryki z szybkością wczytywania. Strona może pokazywać treść błyskawicznie i reagować fatalnie — to niezależne wymiary i naprawia się je innymi środkami.
Czwarta: testowanie na własnym komputerze i wyciąganie wniosków. Na sprzęcie deweloperskim praktycznie każda strona reaguje dobrze. Bez spowolnienia procesora w narzędziach programisty albo testu na przeciętnym telefonie diagnoza będzie fałszywie optymistyczna.
I ostatnia rzecz, którą warto ustalić z klientem od początku: metryka pochodzi od użytkowników Chrome. Jeśli spory udział ruchu przychodzi z innych przeglądarek, dane opisują tylko część odbiorców — co nie zmienia faktu, że to właśnie ta część zasila narzędzia Google.
Na koniec przypomnienie, od którego zacząłem, bo łatwo się pomylić w rozmowie z klientem. W Search Console INP jest dziś dostępny w osobnym raporcie, wystawionym po to, żeby dało się przygotować do zmiany. Raport podstawowych wskaźników internetowych, ten, który wystawia ocenę adresów, opiera się na razie na FID i przełączy się w marcu. Dlatego pytanie „ile mam adresów wymagających poprawy” ma w styczniu i w kwietniu dwie różne odpowiedzi, a różnica nie musi mieć nic wspólnego ze stanem strony.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |