First Input Delay (FID)
First Input Delay (FID) to metryka wydajności stron internetowych mierząca czas (w milisekundach) od pierwszej interakcji użytkownika ze stroną (np. kliknięcia, dotknięcia ekranu, naciśnięcia klawisza) do momentu, w którym przeglądarka jest w stanie rozpocząć obsługę tej interakcji. Innymi słowy, FID opisuje opóźnienie reakcji wynikające z tego, że główny wątek przeglądarki jest zajęty i nie może natychmiast przetworzyć zdarzenia wejściowego.
FID koncentruje się na wrażeniu „czy strona reaguje”, a nie na tym, jak szybko coś się wyświetla. Użytkownik może widzieć już załadowany interfejs, ale gdy spróbuje kliknąć przycisk „Dodaj do koszyka” i nic się nie dzieje przez ułamek sekundy, odczuwa to jako „zawieszenie”. FID mierzy właśnie tę lukę między intencją (pierwszy input) a możliwością rozpoczęcia obsługi zdarzenia przez przeglądarkę. W praktyce najczęstszą przyczyną wysokiego FID jest przeciążenie głównego wątku (main thread) przez JavaScript: długie zadania, ciężkie obliczenia, zbyt duże bundlowanie, intensywne skrypty analityczne lub reklamowe, a także kosztowne operacje renderowania i stylowania.
Warto podkreślić, że FID dotyczy pierwszej interakcji po rozpoczęciu ładowania strony i jest metryką typowo „polową” (field metric), czyli sensownie mierzoną na realnych urządzeniach i w realnych warunkach użytkowników. W testach laboratoryjnych (np. w narzędziach uruchamianych na jednym komputerze) trudniej wiarygodnie zasymulować „pierwszy input” oraz rzeczywiste obciążenie wątku głównego w momencie interakcji. Z tego powodu FID bywa interpretowany razem z innymi miarami responsywności i płynności, a w analizie inżynierskiej często rozbija się problem na konkretne źródła blokowania: długie zadania JS, opóźnione wykonywanie handlerów, kosztowne layouty, czy przeciążenie przez skrypty stron trzecich.
Z perspektywy SEO i jakości doświadczenia użytkownika FID jest istotny, bo odzwierciedla interaktywność: to, czy strona „odpowiada” na działania. W wynikach wyszukiwania i w ocenie jakości strony metryki związane z doświadczeniem użytkownika bywają analizowane jako sygnały pomocnicze, ale FID nie jest „magicznym” czynnikiem samym w sobie; jest raczej wskaźnikiem technicznego stanu front-endu. Dla właścicieli stron i redaktorów treści praktyczny wniosek jest prosty: nawet świetna treść i szybkie wyświetlenie elementów nie zrekompensują sytuacji, w której użytkownik nie może od razu kliknąć, przewinąć lub wpisać tekstu, bo strona jest zajęta wykonywaniem skryptów.
Kluczowe właściwości / Typowe konteksty / Częste nieporozumienia
- Kluczowa właściwość: mierzy opóźnienie przed startem obsługi zdarzenia, nie czas wykonania akcji.
FID kończy się w momencie, gdy przeglądarka może zacząć przetwarzać interakcję (np. wejść w handler kliknięcia), a nie wtedy, gdy efekt jest widoczny (np. gdy otworzy się modal). Przykład: kliknięcie „Zaloguj” może zostać „podjęte” szybko (niski FID), ale sama operacja logowania może trwać długo z powodu sieci—to już nie jest FID.
- Typowy kontekst: przeciążony main thread przez JavaScript i „długie zadania”.
Najczęściej wysoki FID pojawia się, gdy w momencie pierwszej interakcji trwa intensywne wykonywanie JS (np. hydratacja aplikacji SPA, inicjalizacja wielu komponentów, parsowanie dużych bundli, ciężkie skrypty analityczne). Przykład: użytkownik klika w menu zaraz po wejściu na stronę, ale menu reaguje dopiero po chwili, bo w tle trwa inicjalizacja frameworka i komponentów.
- Typowy kontekst: urządzenia mobilne i słabsze CPU.
To, co na mocnym laptopie wydaje się natychmiastowe, na średnim telefonie może generować zauważalne opóźnienia, bo te same skrypty i style blokują wątek główny dłużej. Przykład: rozbudowany slider i kilka bibliotek UI mogą być „OK” na desktopie, ale na mobile powodować opóźnione reakcje na dotyk.
- Częste nieporozumienie: FID to „czas do pierwszego kliknięcia” lub „czas do interaktywności całej strony”.
FID nie mierzy, kiedy użytkownik kliknie, tylko jak długo przeglądarka zwleka z obsługą kliknięcia, gdy ono nastąpi. Nie jest też pełnym odpowiednikiem „strona jest interaktywna” w sensie całościowym—dotyczy pierwszego inputu i konkretnego momentu obciążenia.
- Częste nieporozumienie: poprawa FID = usunięcie animacji lub zmniejszenie obrazków.
Obrazy i animacje mogą wpływać na ogólną wydajność, ale FID jest zwykle problemem blokowania wątku głównego przez skrypty i kosztowne operacje renderowania. Przykład: kompresja obrazów poprawi transfer i szybkość wczytywania, lecz jeśli główny problem to ciężki JS, FID może pozostać wysoki mimo „lżejszych” grafik.
