Polyfill to fragment kodu (najczęściej w JavaScript), który dostarcza nowoczesną funkcję językową lub API w środowisku, które samo z siebie jej nie ma — zwykle w starszej przeglądarce. Mówiąc prościej: udajesz, że stara przeglądarka umie coś nowego, doklejając jej brakujący kawałek implementacji. Dzięki temu piszesz kod pod aktualny standard, a użytkownicy na archaicznym sprzęcie i tak dostają działającą stronę.
Nazwa to żart przeniesiony z budowlanki: Polyfilla to brytyjska marka szpachli do dziur w ścianie. Polyfill robi dokładnie to samo z dziurami w przeglądarce — wypełnia braki, zanim ktoś się o nie potknie.
Jak to działa
Polyfill najpierw sprawdza, czy dana funkcja już istnieje. Jeśli tak — nie robi nic i schodzi z drogi. Jeśli nie — dopisuje własną implementację do odpowiedniego obiektu, np. Array.prototype albo globalnego window. To kluczowa różnica wobec zwykłej biblioteki: polyfill celowo naśladuje standardowe API, więc gdy w końcu porzucisz wsparcie dla starych przeglądarek, po prostu usuwasz polyfill i nic w kodzie nie musisz zmieniać.
Warto odróżnić go od transpilacji. Narzędzie jak Babel przepisuje nową składnię (np. arrow functions, async/await) na starszą. Polyfill dokłada brakujące obiekty i metody w czasie działania — bo samej składni nie da się „doszpachlować”, trzeba ją przetłumaczyć przed wysłaniem do przeglądarki.
Przykład z praktyki
Klasyk to fetch albo Promise w starych wersjach Internet Explorera. Zamiast pisać własną wersję, sięgasz po gotowca:
npm install whatwg-fetch core-js
i importujesz go na samej górze wejściowego pliku, zanim wykonasz cokolwiek innego. Popularny jest też serwis polyfill (np. polyfill.io), który po nagłówku User-Agent wysyła dokładnie te łatki, których dana przeglądarka potrzebuje — nowoczesny Chrome dostaje pusty plik, a staruszek pełen zestaw.
Na co uważać
- Nie ładuj wszystkiego naraz. Komplet polyfilli z
core-jsto spory ciężar. Używaj tylko tego, co realnie wspierasz — np. przezbrowserslisti@babel/preset-envz opcjąuseBuiltIns: "usage". - Sprawdź swoją grupę docelową. W 2026 roku polyfille pod IE są najczęściej zbędnym balastem. Dane z analityki powiedzą Ci więcej niż przeczucie.
- Uważaj na zaufanie do zewnętrznego CDN. Historia domeny
polyfill.ioz 2024 roku (przejęcie i wstrzykiwanie złośliwego kodu) pokazała, że cudzy skrypt na Twojej stronie to ryzyko — rozważ self-hosting.
Pojęcia powiązane: transpilacja, Babel, shim, feature detection, browserslist, progressive enhancement, core-js.