PWA i SEO
SEO dla progresywnych aplikacji internetowych — dlaczego "przejście na PWA" nie poprawia pozycji w wynikach wyszukiwania, dlaczego manifest.json jest nieistotny dla SEO, jak źle skonfigurowany service worker może serwować Googlebotowi nieaktualną pamięć podręczną oraz gdzie Core Web Vitals i HTTPS faktycznie (i nie) pokrywają się z SEO.
PWA to strona internetowa wzbogacona o manifest i service workera — dla Google to nadal zwykła (zwykle JavaScript/SPA) strona, bez żadnej wrodzonej przewagi w rankingu. manifest.json jest nieistotny dla SEO (kontroluje instalowalność, nie indeksowanie). Jedynym realnym ryzykiem specyficznym dla PWA jest service worker: renderer Google nie uruchamia service workerów podczas indeksowania, więc strategia cache-first dla HTML może dostarczyć Googlebotowi nieaktualną lub offline'ową stronę. Rozwiąż to za pomocą network-first dla HTML, a reszta to zwykłe SEO dla JS/SPA.
Dowód potwierdzający to twierdzenie A progressive web app is still a web application; installability features do not replace indexable HTML and URLs. Zakres: Current official or standards documentation. Poziom ufności: wysoki · Zweryfikowano: web.dev: Progressive web apps Dowód potwierdzający to twierdzenie JavaScript applications must expose crawlable links, meaningful content, metadata, and status behavior to Google. Zakres: Current official or standards documentation. Poziom ufności: wysoki · Zweryfikowano: Google: JavaScript SEO basicsTL;DR — PWA (Progressive Web App) to zwykła strona internetowa z dwoma dodatkami: manifest, który pozwala zainstalować ją na ekranie głównym, oraz service worker, który może sprawić, że będzie działać offline. Dla Google to wciąż tylko strona — przejście na PWA nie podnosi Twoich pozycji w wynikach wyszukiwania. Jedyną rzeczą, która może Ci zaszkodzić, jest źle skonfigurowany service worker, który pokazuje Google starą, zbuforowaną stronę zamiast aktualnej.
Czym naprawdę jest PWA
Progressive Web App to strona internetowa ulepszona tak, aby przypominała natywną aplikację. Dwa elementy czynią ją PWA:
- Manifest aplikacji webowej (
manifest.json) — mały plik, który informuje przeglądarkę o nazwie, ikonach i kolorach aplikacji, dzięki czemu odwiedzający może dotknąć “Dodaj do ekranu głównego” i otrzymać ikonę w stylu aplikacji oraz ekran powitalny. - Service worker — fragment JavaScriptu działający w tle, który może buforować pliki, dzięki czemu strona ładuje się szybko przy ponownych odwiedzinach, a nawet działa offline.
To wszystko. W środku PWA to prawie zawsze zwykła strona JavaScript (React, Vue, Angular itd.). To normalna strona w przebraniu aplikacji.
Wielki mit do obalenia
Najczęstsze przekonanie to: “Jeśli zamienimy naszą stronę w PWA, będziemy lepiej pozycjonowani.” Google jasno stwierdziło, że to nieprawda. John Mueller z Google ujął to wprost: PWA “obecnie nie mają żadnej przewagi w Google Search.” Nie ma żadnego “bonusu PWA” w systemach rankingowych.
Plik manifestu również nie pomaga w SEO. Kontroluje on sposób instalacji aplikacji — ikonę, nazwę, ekran powitalny — z których żadnego Google nie czyta przy podejmowaniu decyzji o rankingu.
Jedyna rzecz, która może naprawdę zaszkodzić
Service worker to element, na który trzeba uważać. Ponieważ może serwować zbuforowaną (zapisaną) kopię Twoich stron, zła konfiguracja może sprawić, że Google zobaczy nieaktualną lub nawet pustą wersję “jesteś offline” zamiast prawdziwej, aktualnej. Tak PWA traci ruch po starcie — nie dlatego, że “stało się PWA”, ale dlatego, że buforowanie było skierowane w złym kierunku.
Co właściwie zrobić
- Upewnij się, że prawdziwa treść Twojej strony ładuje się dla wyszukiwarek, a nie tylko pusty szkielet wypełniany później JavaScriptem.
- Skonfiguruj service worker tak, aby najpierw pobierał świeży HTML z sieci, a do bufora odwoływał się tylko dla szybkości w przypadku takich zasobów jak obrazy i arkusze stylów.
- Zachowaj podstawy: prawdziwe, unikalne adresy URL; dobry tytuł i meta description na każdej stronie; szybkie i niezawodne doświadczenie.
Bycie PWA jest świetne dla Twoich użytkowników — instalowalne, szybkie, przyjazne offline. Tylko nie oczekuj, że przeniesie Cię wyżej w Google, i nie pozwól, aby service worker podawał Google złą stronę. Zakładka Advanced zawiera mechanikę, strategie buforowania i cytaty.
Dowód potwierdzający to twierdzenie A progressive web app is still a web application; installability features do not replace indexable HTML and URLs. Zakres: Current official or standards documentation. Poziom ufności: wysoki · Zweryfikowano: web.dev: Progressive web apps Dowód potwierdzający to twierdzenie JavaScript applications must expose crawlable links, meaningful content, metadata, and status behavior to Google. Zakres: Current official or standards documentation. Poziom ufności: wysoki · Zweryfikowano: Google: JavaScript SEO basicsTL;DR — PWA to manifest + service worker nałożone na to, co prawie zawsze jest stroną JS/SPA — więc zasady renderowania z SEO dla JavaScript/SPA obowiązują bez zmian, plus dwie kwestie specyficzne dla PWA. Google nie daje PWA żadnej przewagi w rankingu (Mueller).
manifest.jsonreguluje instalowalność, a nie indeksowanie, i nie ma dowodów, że systemy rankingowe go czytają. Service worker to realne ryzyko: renderer Google nie uruchamia service workerów podczas indeksowania, więc strategia HTML cache-first może zaindeksować nieaktualną lub offline’ową powłokę — użyj network-first dla HTML, cache-first dla zasobów statycznych. HTTPS to twardy wymóg dla service workerów oraz osobno mały sygnał rankingowy; nie łącz tych w “PWA lepiej pozycjonują.” Core Web Vitals to jedyne uzasadnione nakładanie się, i to kwestia inżynierii, a nie etykiety PWA.
PWA to przede wszystkim strona internetowa
Najbardziej użyteczna perspektywa: Progressive Web App to normalna strona internetowa z dwiema rzeczami dodanymi na wierzch. Według definicji Google, PWA “to aplikacje webowe zbudowane i ulepszone za pomocą nowoczesnych API, aby zapewnić rozszerzone możliwości, jednocześnie docierając do każdego użytkownika sieci na dowolnym urządzeniu z jednej bazy kodu.” Trzy filary, które wymienia Google, to Capable, Reliable i Installable — zauważ, że żaden z tych trzech nie jest “rankable”.
Architektonicznie ten kod to prawie zawsze framework JavaScript działający w
wzorcu single-page application. Co oznacza: wszystko, co rządzi indeksowalnością
JS/SPA, rządzi indeksowalnością PWA, bez żadnych modyfikacji. Prawdziwe linki <a href>
i routing oparty na History API (nie fragmenty hash) dla adresowalności; renderowanie po stronie serwera
lub prerenderowanie dla dostępności treści; kanoniczne, tytuł i meta dla każdej trasy w
wyrenderowanym DOM. Jeśli czytałeś materiały o SEO dla JavaScript i SEO dla SPA, znasz już
90% SEO dla PWA — szczególnie tryb awarii app-shell, który Google wprost
dokumentuje: “Some JavaScript sites may use the app shell model where the initial HTML
does not contain the actual content and Google needs to execute JavaScript before
being able to see the actual page content that JavaScript generates.” (tłumaczenie) „Niektóre strony JavaScript mogą używać modelu app shell, gdzie początkowy HTML
nie zawiera rzeczywistej treści, a Google musi wykonać JavaScript, zanim
będzie w stanie zobaczyć rzeczywistą treść strony generowaną przez JavaScript.” PWA, które
wysyła pustą powłokę bez SSR/prerenderowania, dziedziczy ten problem bezpośrednio.
Więc uczciwy zakres artykułu o SEO specyficznego dla PWA jest mały: manifest i service worker. Wszystko inne to SEO dla JS/SPA w manifeście.
Główny mit: „przejście na PWA” nie poprawia pozycji w wynikach wyszukiwania
To jest nagłówek. Google był w tej kwestii niezwykle bezpośredni. John Mueller, podczas sesji pytań i odpowiedzi w Search Central, powiedział, że PWA “currently don’t have any advantage in Google Search, and as far as I know, there are no plans to change this,” (tłumaczenie) „obecnie nie mają żadnej przewagi w Google Search i o ile mi wiadomo, nie ma planów, aby to zmienić” — a zapytany, czy konwersja na PWA pomoże — “By default, saying going to a PWA will make your rankings better — I don’t think that is the case.” (tłumaczenie) „Domyślnie, mówienie, że przejście na PWA poprawi twoje pozycje — nie sądzę, żeby tak było.”
Uprzedził też zwykły kontrargument, że „nasz konkurent przeszedł na PWA i ich pozycje wzrosły.” Jego odpowiedź: “So just the fact that one of your competitors has moved from one framework to another, and has seen an improvement in search, that framework change from my point of view wouldn’t be responsible for that.” (tłumaczenie) „Sam fakt, że jeden z twoich konkurentów przeszedł z jednego frameworka na inny i zauważył poprawę w wyszukiwaniu, ta zmiana frameworka z mojego punktu widzenia nie byłaby za to odpowiedzialna.” A dlaczego: “These are essentially different ways of making a website… for the most part, we see these as normal HTML pages.” (tłumaczenie) „To są zasadniczo różne sposoby tworzenia strony internetowej… w większości przypadków postrzegamy je jako normalne strony HTML.”
Tam, gdzie ponowne uruchomienie PWA faktycznie koreluje ze wzrostem pozycji, winne są czynniki zakłócające, które towarzyszą każdej dużej przebudowie: zmodernizowane linkowanie wewnętrzne, odświeżona i rozszerzona treść, rzeczywista poprawa szybkości i zwykle kampania marketingowa związana z ponownym uruchomieniem. Żadne z tego nie wymaga etykiety PWA. Jeśli przebudowujesz 10–15-letnią organicznie rozwijaną stronę, zmieniasz kilkanaście rzeczy naraz — przypisywanie wyniku „PWA” to błąd korelacji.
Wypowiedzi Muellera z godzin biurowych powyżej są przekazane przez Search Engine Journal i niezależnie przez Search Engine Roundtable, relacjonujące tę samą sesję z listopada 2021; nie odtworzyłem oryginalnego wideo, więc traktuj je jako oficjalnie przekazane.Manifest.json: instalowalność ≠ indeksowalność
Plik manifest.json istnieje po to, aby uczynić Twoją aplikację instalowalną. Jego pola —
name, short_name, icons, start_url, display, theme_color — sterują
monitem instalacji, ikoną na ekranie głównym, ekranem powitalnym oraz tym, czy aplikacja otwiera się
samodzielnie, czy w karcie przeglądarki. To całe zadanie.
Nie ma dowodów na to, że systemy rankingu lub indeksowania Google czytają manifest jako sygnał. Najczystszym zewnętrznym potwierdzeniem jest własna lista kontrolna PWA Google, która wymienia “Is installable” (tłumaczenie) „Czy jest instalowalna” i “Discoverable in search” (tłumaczenie) „Czy jest wykrywalna w wyszukiwarce” jako dwie oddzielne, niezależne kategorie na liście kontrolnej — gdzie wykrywalność jest zdefiniowana jako zwykłe podstawy SEO: “Enable search engine discovery through unique URLs, descriptive titles, meta descriptions, and structured data.” (tłumaczenie) „Umożliw wykrywanie przez wyszukiwarki dzięki unikalnym adresom URL, opisowym tytułom, meta opisom i danym strukturalnym.” Instalowalność (sterowana manifestem) i wykrywalność (klasyczne SEO) są traktowane jako równoległe kwestie, a nie jedna zasilająca drugą. Więc: zachowaj ważny manifest, bo to on sprawia, że aplikacja jest instalowalna — po prostu nie klasyfikuj go jako SEO.
Google nie publikuje strony, która wprost stwierdza, że manifest.json jest wykluczony z rankingu; jest to dobrze uzasadniony wniosek wynikający ze stwierdzenia o „braku przewagi”, rozdzielenia tych dwóch kategorii na liście kontrolnej oraz całkowitego braku manifestu w dokumentacji Google dotyczącej czynników rankingowych — sformułuj to jako „brak dowodów, że jest odczytywany”, a nie „potwierdzone ignorowanie”.Service workery: jedyne realne ryzyko SEO specyficzne dla PWA
Oto fakt, który ma największe znaczenie i jest specyficzny dla PWA: usługa renderowania Google nie uruchamia Twojego service workera, gdy renderuje stronę do indeksowania. Rozumowanie, według Martina Splitta: “As we have to assume that someone clicking on your page from a SERP is a first-time visitor, running a service worker is usually not going to do much good.” (tłumaczenie) „Ponieważ musimy założyć, że ktoś klikający Twoją stronę z SERP jest gościem odwiedzającym ją po raz pierwszy, uruchomienie service workera zwykle nie przyniesie wiele dobrego”. Cały sens service workera polega na przyspieszaniu powtórnych wizyt z pamięci podręcznej — a Googlebot jest z założenia zawsze traktowany jak gość odwiedzający po raz pierwszy, więc nie ma czego przyspieszać. Splitt ponownie: “We’re not supporting that because users clicking onto your page from the search result might never have been there beforehand.” (tłumaczenie) „Nie wspieramy tego, ponieważ użytkownicy klikający na Twoją stronę z wyniku wyszukiwania mogli nigdy wcześniej na niej nie być”. Mueller potwierdził, że jest to stabilna polityka, a nie stan przejściowy: “I wouldn’t expect it to change — it’s computationally expensive to run service-workers in the background like this for indexing.” (tłumaczenie) „Nie spodziewałbym się, że to się zmieni — uruchamianie service workerów w tle w ten sposób do celów indeksowania jest kosztowne obliczeniowo”.
Te trzy wypowiedzi są przekazane przez SearchViu (Splitt na Google I/O 2019/2020; Mueller cytowany w lipcu 2023); potwierdziłem cytaty Splitta i Muellera jako dokładne podciągi na tej stronie, ale jest to przekaz strony trzeciej, a nie adres URL należący do Google. Zauważ też, że „nigdy nie uruchamia” jest nieco zbyt absolutne — Splitt z Google wskazał, że web workery mogą czasami być wykonywane; bezpieczne sformułowanie to “the rendering service doesn’t run service workers by design,” (tłumaczenie) „usługa renderowania z założenia nie uruchamia service workerów”, a nie „w żadnych okolicznościach”.Dlaczego więc to ryzyko? Ponieważ Twój service worker działa w przeglądarkach prawdziwych użytkowników, a jeśli kazałeś mu serwować HTML w trybie cache-first — zwróć zapisaną kopię, pomiń sieć — to prawdziwy powracający gość zobaczy szybką stronę z pamięci podręcznej, ale jest to strategia, której Googlebot nigdy nie wykonuje. Zagrożenie jest w odwrotnym przypadku: wzorzec buforowania, który w dowolnym stanie błędu lub awarii zwraca nieaktualny dokument lub stronę offline-fallback. Ponieważ renderowanie jest bezstanowe, a WRS traktuje każde pobranie jako świeże, źle skonfigurowana strategia buforowania to sposób, w jaki PWA kończy z Googlebotem indeksującym nieaktualną lub pustą powłokę offline zamiast aktualnych treści.
Zasada kciuka strategii buforowania:
- Dokumenty HTML → network-first (lub stale-while-revalidate z krótkim TTL). Pobierz aktualną stronę; używaj pamięci podręcznej tylko jako fallbacku offline i upewnij się, że ten fallback nigdy nie jest tym, co świeże przeszukiwanie by zaindeksowało.
- Statyczne zasoby (JS, CSS, obrazy, czcionki) → cache-first jest w porządku i pożądane — nie zmieniają się przy każdym żądaniu i nie są dokumentem podlegającym indeksowaniu.
Jak to audytować: porównaj to, co widzi Googlebot, z tym, co przeglądarka powracającego gościa serwuje z pamięci podręcznej. Użyj URL Inspection w Search Console (test na żywo), aby zobaczyć wyrenderowany HTML, który Google faktycznie otrzymuje, i porównaj go z aktualną stroną. Jeśli się różnią, Twój service worker lub konfiguracja SSR jest pierwszym podejrzanym. Zwróć też uwagę na limity czasu renderowania w konfiguracjach hybrydowych — jak zauważył Hamlet Batista z epoki dynamicznego renderowania, “Rendering services won’t wait forever for a page to finish loading.” (tłumaczenie) „Usługi renderowania nie będą czekać w nieskończoność, aż strona zakończy ładowanie”. (Ten konkretny artykuł dotyczy dynamicznego renderowania, które Google obecnie odradza na rzecz SSR — cytuj zasadę limitu czasu, a nie wzorzec.)
HTTPS: wymóg dla service workerów i osobno mały sygnał rankingowy
Zobaczysz, że posty o SEO dla PWA sugerują: „PWA wymagają HTTPS, a HTTPS poprawia rankingi, więc PWA są bardziej przyjazne SEO.” Dwa prawdziwe fakty, błędnie połączone.
Fakt pierwszy: service workery działają tylko w bezpiecznym kontekście. Według MDN: “Service workers are only available in secure contexts: this means that their document is served over HTTPS, although browsers also treat http://localhost as a secure context, to facilitate local development.” (tłumaczenie) „Service workery są dostępne tylko w bezpiecznych kontekstach: oznacza to, że ich dokument jest serwowany przez HTTPS, chociaż przeglądarki traktują również http://localhost jako bezpieczny kontekst, aby ułatwić lokalne programowanie.” To reguła platformy przeglądarki, a nie taktyka SEO — bez HTTPS nie ma service workera, kropka.
Fakt drugi: HTTPS to realny sygnał rankingowy Google, ale bardzo mały. Ogłoszenie Google z 2014 roku: “we’re starting to use HTTPS as a ranking signal. For now it’s only a very lightweight signal — affecting fewer than 1% of global queries, and carrying less weight than other signals such as high-quality content.” (tłumaczenie) „zaczynamy używać HTTPS jako sygnału rankingowego. Na razie to tylko bardzo lekki sygnał — wpływający na mniej niż 1 % globalnych zapytań i mający mniejszą wagę niż inne sygnały, takie jak treści wysokiej jakości.”
Sedno: każda strona z HTTPS dostaje ten sam mały sygnał — niezależnie od tego, czy jest PWA, czy nie. PWA nie dostaje dodatkowego kredytu SEO za HTTPS; po prostu nie może bez niego działać. Nie sprzedawaj HTTPS jako korzyści SEO z PWA.
Core Web Vitals: jedyne uzasadnione nakładanie się
Jeśli istnieje realne miejsce, gdzie „dobre PWA” i „dobre SEO” się spotykają, to jest to wydajność. Wytyczne Google dotyczące PWA zaczynają się od niezawodności — “A reliable Progressive Web App feels fast and dependable regardless of the network” (tłumaczenie) „Niezawodna progresywna aplikacja internetowa działa szybko i pewnie niezależnie od sieci” — a Core Web Vitals to potwierdzony (choć skromny) czynnik rankingowy. Dobrze zaprojektowane PWA, które ładuje się szybko i pozostaje responsywne, będzie zwykle dobrze wypadać w Vitals.
Ale przeczytaj uważnie związek przyczynowy: to inżynieria, a nie bycie PWA. Rozdmuchane PWA — ogromny pakiet JS, renderowanie blokujące renderowanie, zbyt gorliwy service worker — może łatwo osiągnąć gorsze wyniki Core Web Vitals niż zwykła strona renderowana po stronie serwera. Zwycięstwo w Vitals wynika z dobrego wykonania pracy nad wydajnością, co można zrobić z manifestem lub bez. Bycie PWA ani nie gwarantuje dobrych wyników Vitals, ani nie daje do nich skrótu.
Funkcje przypominające aplikacje to UX, a nie czynniki rankingowe
Dodawanie do ekranu głównego, tryb offline, powiadomienia push, nawigacja przypominająca aplikację — wszystkie to prawdziwe, wartościowe korzyści PWA i wszystkie to funkcje zaangażowania/utrzymania, a nie czynniki indeksowania czy rankingu. Lista kontrolna PWA Google wyraźnie pokazuje ten podział, umieszczając „installable” i „discoverable in search” w osobnych kategoriach.
Nie traktuj też „installable” jako jednej, uniwersalnej możliwości — różni się ona w zależności od przeglądarki i systemu operacyjnego, co jest kolejnym powodem, dla którego nie może być sygnałem SEO (Google nie miałby spójnego, międzyprzeglądarkowego zachowania do nagradzania). Zdarzenie beforeinstallprompt, które pozwala PWA pokazać własny niestandardowy interfejs instalacji, to mechanizm tylko w Chromium; według przewodnika instalowalności PWA od MDN jest ono “not supported on iOS.” (tłumaczenie) „nieobsługiwane na iOS.” W iOS Safari instalacja odbywa się tylko przez ręczny przepływ Share → Add to Home Screen (rozszerzony na Chrome, Edge, Firefox i Orion w iOS 16.4+, które wszystkie używają wymaganego przez Apple silnika WebKit na iOS i dlatego mają to samo ograniczenie), a nie przez automatyczny monit. Żadne z tych nie zmienia obrazu SEO — oznacza to po prostu, że „czy moje PWA jest instalowalne” nie jest faktem typu tak/nie niezależnym od tego, w jakiej przeglądarce i systemie operacyjnym jest odwiedzający.
Twitter Lite to studium przypadku, po które wszyscy sięgają jako „dowód, że PWA pomaga SEO” — a jego udokumentowane wyniki są realne (wzrost o 65 % liczby stron na sesję, wzrost o 75 % liczby wysłanych tweetów, spadek o 20 % współczynnika odrzuceń) — ale każdy z nich to metryka zaangażowania. Własne studium przypadku Google nigdy nie wspomina o SEO, wyszukiwaniu organicznym ani rankingach. Świetny wynik; zła kolumna.
Sklepy ecommerce PWA: krótka uwaga
Sklepy PWA dodają kilka zmarszczek, które warto wymienić, ponieważ pogłębiają ryzyka SPA. Routing po stronie klienta plus nawigacja fasetowa mogą generować adresy URL wyglądające na indeksowalne, które wszystkie prowadzą do tej samej powłoki, lub eksplozję adresów URL z parametrami. Stan koszyka i kasy żyje po stronie klienta i nigdy nie powinien blokować indeksowalnej treści produktu. A każda strona produktu musi niezależnie zwracać prawdziwy, unikalny HTML — pułapka powłoki aplikacji jest najdroższa dokładnie tam, gdzie masz najwięcej stron. Rozwiązania są te same co w SEO ecommerce i nawigacji fasetowej; warstwa PWA ich nie zmienia, po prostu czyni dyscyplinę SSR/prerenderowania ważniejszą.
Bing i PWA
Warto dodać: Bing nie opublikował żadnych wytycznych dotyczących rankingu ani indeksowania specyficznych dla PWA. Jego wytyczne dla webmasterów są niezależne od PWA (ogólna możliwość indeksowania, sitemapy, robots.txt, IndexNow), a obszerne dokumenty Microsoftu dotyczące PWA dotyczą wyłącznie monitów instalacyjnych w Edge, PWABuilder i pakowania w Microsoft Store — dystrybucji i instalacji, czyli osobnego toru od indeksowania w wyszukiwarce. Dlatego w przypadku Binga stosuj standardowe wytyczne dotyczące indeksowania renderowania JS; nie ma żadnego wyjątku PWA, którego trzeba się uczyć.
Najważniejszy wniosek
SEO dla PWA to SEO dla JavaScript/SPA plus dokładnie dwa dodatki: zignoruj manifest jako element SEO (służy do instalowalności) i skonfiguruj service workera tak, aby nigdy nie uwięził Googlebota w nieaktualnej lub offline’owej pamięci podręcznej. Jeśli to zrobisz, PWA będzie indeksowane dokładnie jak każda inna dobrze zbudowana strona — bez bonusu, bez kary, tylko te same zasady.
Podsumowanie AI
Skrócona wersja wersji zaawansowanej:
- PWA to przede wszystkim strona internetowa. To
manifest.json(instalowalność) + service worker (offline/pamięć podręczna) nałożone na to, co prawie zawsze jest stroną JS/SPA. Wszystkie zasady SEO dla JavaScript/SPA obowiązują bez zmian. - Brak przewagi w rankingu. John Mueller z Google: PWA “currently don’t have any advantage in Google Search.” (tłumaczenie) „Obecnie nie mają żadnej przewagi w Google Search.” Przejście na PWA nie poprawia pozycji.
- Manifest.json jest nieistotny dla SEO. Kontroluje monity instalacyjne, ikony,
start_url,display— nie ma dowodów, że systemy rankingowe go czytają. Lista kontrolna PWA od Google wymienia „instalowalne” i „możliwe do znalezienia w wyszukiwarce” jako osobne kategorie. - Jedynym realnym ryzykiem jest service worker. Renderer Google nie uruchamia service workerów podczas indeksowania (traktuje każde crawl jako pierwszą wizytę), więc strategia cache-first dla HTML może zindeksować nieaktualną lub offline’ową powłokę. Użyj network-first dla HTML, cache-first dla zasobów statycznych.
- HTTPS ≠ korzyść SEO dla PWA. To twardy wymóg dla service workerów (bezpieczny kontekst) oraz osobno „bardzo lekki” sygnał rankingowy, który otrzymuje każda strona z HTTPS. Nie łącz tych dwóch rzeczy.
- Core Web Vitals to jedyne uzasadnione nakładanie się — i to inżynieria wydajności, a nie etykieta PWA. Rozbudowane PWA może wypaść gorzej.
- Funkcje przypominające aplikacje (instalacja, offline, push) to zaangażowanie, nie ranking. Słynne zyski Twitter Lite to metryki zaangażowania; to studium przypadku nigdy nie wspomina o SEO. Instalowalność sama w sobie różni się w zależności od przeglądarki/systemu operacyjnego (iOS Safari nie ma
beforeinstallprompt, tylko ręczne Dodaj do ekranu głównego) — kolejny powód, dla którego nie może być sygnałem rankingowym. - Bing nie ma wytycznych specyficznych dla PWA; stosuj standardowe zasady indeksowania JS.
Oficjalna dokumentacja
Materiały źródłowe na temat PWA, renderowania i faktów, na których opiera się ten artykuł.
Google / web.dev
- Czym są progresywne aplikacje internetowe? — definicja Google i trzy filary: możliwości, niezawodność i instalowalność.
- What makes a good Progressive Web App? (PWA checklist) — rozdziela „Is installable” od „Discoverable in search” jako odrębne kategorie.
- Service workers (Learn PWA) — strategie buforowania i cykl życia service workera.
- Understand JavaScript SEO Basics — udokumentowany przez Google tryb awarii app-shell.
- Building Indexable Progressive Web Apps (2016) — oryginalny post Google o indeksowalności PWA.
- Twitter Lite case study — metryki zaangażowania (uwaga: nie ma tam żadnych twierdzeń o SEO/ruchu organicznym).
- HTTPS as a ranking signal (2014) — stwierdzenie o „bardzo lekkim sygnale”.
MDN / platform
- Service Worker API — wymóg bezpiecznego kontekstu (HTTPS).
- Making PWAs installable — różnice w instalowalności w przeglądarkach/systemach operacyjnych, w tym dlaczego
beforeinstallpromptnie jest obsługiwane na iOS.
Bing / Microsoft (nie istnieją wytyczne dotyczące rankingu specyficzne dla PWA — to dokumenty instalacji/dystrybucji)
- Bing Webmaster Guidelines — ogólna możliwość indeksowania; niezależne od PWA.
- Overview of Progressive Web Apps (PWAs) — skupienie na instalacji i dystrybucji w Edge.
Cytaty ze źródła
Wypowiedzi na piśmie. Jeśli cytat jest przekazywany przez stronę trzecią, a nie przez URL należący do Google, zastrzeżenie to mówi wprost.
Google — brak przewagi rankingowej PWA
- “PWAs currently don’t have any advantage in Google Search, and as far as I know, there are no plans to change this.” (tłumaczenie) „PWA obecnie nie mają żadnej przewagi w Google Search i o ile mi wiadomo, nie ma planów, aby to zmienić.” — John Mueller, Google, godziny biurowe Search Central (listopad 2021). Przeczytaj relację
- “By default, saying going to a PWA will make your rankings better — I don’t think that is the case.” (tłumaczenie) „Domyślnie, mówienie, że przejście na PWA poprawi Twoje rankingi — nie sądzę, żeby tak było.” — John Mueller, ta sama sesja. Przeczytaj relację
- “So just the fact that one of your competitors has moved from one framework to another, and has seen an improvement in search, that framework change from my point of view wouldn’t be responsible for that.” (tłumaczenie) „Więc sam fakt, że jeden z Twoich konkurentów przeszedł z jednego frameworka na inny i zauważył poprawę w wyszukiwarce, ta zmiana frameworka z mojego punktu widzenia nie byłaby za to odpowiedzialna.” — John Mueller, ta sama sesja. Przeczytaj relację
Google — czym jest PWA i ryzyko app-shell
- “Progressive Web Apps (PWA) are web apps built and enhanced with modern APIs to provide enhanced capabilities while still reaching any web user on any device with a single codebase.” (tłumaczenie) „Progressive Web Apps (PWA) to aplikacje internetowe zbudowane i ulepszone za pomocą nowoczesnych API, aby zapewnić rozszerzone możliwości, jednocześnie docierając do każdego użytkownika sieci na dowolnym urządzeniu za pomocą jednej bazy kodu.” — web.dev. Przejdź do cytatu
- “Some JavaScript sites may use the app shell model where the initial HTML does not contain the actual content and Google needs to execute JavaScript before being able to see the actual page content that JavaScript generates.” (tłumaczenie) „Niektóre strony JavaScript mogą używać modelu app shell, gdzie początkowy HTML nie zawiera rzeczywistej treści, a Google musi wykonać JavaScript, zanim będzie mógł zobaczyć rzeczywistą treść strony generowaną przez JavaScript.” — Google Search Central. Przejdź do cytatu
- “Enable search engine discovery through unique URLs, descriptive titles, meta descriptions, and structured data.” (tłumaczenie) „Umożliw odkrywanie przez wyszukiwarki za pomocą unikalnych URL-i, opisowych tytułów, meta opisów i danych strukturalnych.” — lista kontrolna PWA web.dev, „Discoverable in search.” Przejdź do cytatu
Google — service workery i indeksowanie (przekazane)
- “As we have to assume that someone clicking on your page from a SERP is a first-time visitor, running a service worker is usually not going to do much good.” (tłumaczenie) „Ponieważ musimy założyć, że ktoś klikający na Twoją stronę z SERP jest gościem odwiedzającym po raz pierwszy, uruchomienie service workera zwykle nie przyniesie wiele dobrego.” — Martin Splitt, Google. Przeczytaj relację
- “We’re not supporting that because users clicking onto your page from the search result might never have been there beforehand.” (tłumaczenie) „Nie wspieramy tego, ponieważ użytkownicy klikający na Twoją stronę z wyniku wyszukiwania mogli nigdy wcześniej tam nie być.” — Martin Splitt, Google (Google I/O 2019). Przeczytaj relację
- “I wouldn’t expect it to change — it’s computationally expensive to run service-workers in the background like this for indexing.” (tłumaczenie) „Nie spodziewałbym się, że to się zmieni — uruchamianie service-workerów w tle w ten sposób do indeksowania jest kosztowne obliczeniowo.” — John Mueller, Google (zgłoszone lipiec 2023). Przeczytaj relację
HTTPS: wymóg platformy a sygnał rankingowy
- “Service workers are only available in secure contexts: this means that their document is served over HTTPS, although browsers also treat http://localhost as a secure context, to facilitate local development.” (tłumaczenie) „Service workery są dostępne tylko w bezpiecznych kontekstach: oznacza to, że ich dokument jest serwowany przez HTTPS, chociaż przeglądarki traktują również http://localhost jako bezpieczny kontekst, aby ułatwić rozwój lokalny.” — MDN, Service Worker API. Skocz do cytatu
- “we’re starting to use HTTPS as a ranking signal. For now it’s only a very lightweight signal — affecting fewer than 1% of global queries, and carrying less weight than other signals such as high-quality content.” (tłumaczenie) „Zaczynamy uwzględniać HTTPS jako sygnał rankingowy. Na razie jest on bardzo lekki — dotyczy mniej niż 1% zapytań na świecie i ma mniejszą wagę niż inne sygnały, na przykład wartościowa treść”. — Google, „HTTPS jako sygnał rankingowy” (2014). Skocz do cytatu
Możliwość instalacji różni się w zależności od przeglądarki/systemu operacyjnego
- “This is not supported on iOS.”
(tłumaczenie) „To nie jest obsługiwane na iOS.”
— MDN, o zdarzeniu
beforeinstallpromptniestandardowego monitu o instalację. Skocz do cytatu
beforeinstallprompt do niestandardowego interfejsu instalacji.O limitach czasu renderowania (nieaktualny kontekst)
- “Rendering services won’t wait forever for a page to finish loading.” (tłumaczenie) „Usługi renderowania nie będą czekać w nieskończoność, aż strona zakończy ładowanie.” — Hamlet Batista, Search Engine Land. Przeczytaj artykuł
Czy powinienem przejść na PWA — i co to zrobi dla SEO?
Szybki przegląd pytań, które ludzie faktycznie zadają na ten temat.
„Rozważamy PWA. Czy to pomoże naszemu SEO?”
- Brak wrodzonej korzyści rankingowej — Google mówi, że PWA nie otrzymują żadnej przewagi w wyszukiwarce. → Zbuduj PWA dla korzyści użytkownika (możliwość instalacji, tryb offline, szybkie ponowne ładowanie), a nie dla rankingów. → Nie zaszkodzi też SEO, o ile Twoje renderowanie i service worker są poprawnie skonfigurowane (kontynuuj poniżej).
„Budujemy/mamy PWA. Czy moja treść jest faktycznie indeksowalna?”
- Czy początkowy HTML zawiera prawdziwą treść (SSR/prerender), czy jest pustą
powłoką aplikacji wypełnianą przez JS?
- Pusta powłoka, brak SSR → to pułapka powłoki aplikacji. Dodaj SSR lub prerendering zanim zaczniesz martwić się o cokolwiek specyficznego dla PWA. (Ten sam fix co dla każdego SPA.)
- SSR/prerender na miejscu → dobrze; przejdź do service workera.
„Jak mój service worker powinien cache’ować strony?”
- Dokumenty HTML → network-first (lub stale-while-revalidate, krótki TTL). Nigdy cache-first dla HTML.
- Statyczne zasoby (JS/CSS/obrazy/czcionki) → cache-first jest w porządku i dobre.
- Strona offline fallback → upewnij się, że nigdy nie może być wersją, którą świeży crawl indeksuje.
„Moje PWA straciło rankingi/ruch po starcie. Gdzie mam szukać?”
- Uruchom URL Inspection (test na żywo) w Search Console — czy Google widzi prawdziwą stronę, czy nieaktualną/offline/pustą?
- Jeśli nieaktualną lub pustą → podejrzewaj strategię cache’owania service workera (cache-first HTML) lub brakujący krok SSR.
- Jeśli treść jest, ale rankingi nadal spadły → spójrz na to, co jeszcze przebudowa zmieniła: linki wewnętrzne, treść, przekierowania, szybkość. Etykieta PWA rzadko jest przyczyną.
“Czy muszę zrobić coś specjalnego z manifestem pod kątem SEO?”
- Nie. Zachowaj go poprawnym pod kątem instalowalności; nie ma on roli w SEO. Zamiast tego poświęć wysiłek na URL-e, tytuły, meta, dane strukturalne i Core Web Vitals.
Lista kontrolna SEO dla PWA
Szybki przegląd, jak utrzymać Progressive Web App w stanie umożliwiającym crawling i indeksowanie:
- Prawdziwa treść jest renderowana po stronie serwera lub prerenderowana — a nie pusty szkielet aplikacji wypełniany JavaScriptem po załadowaniu.
- Każda trasa ma prawdziwy, unikalny URL przez History API (bez routingu hash/
#!). - Każda trasa zwraca własny canonical, tytuł i meta description w wyrenderowanym DOM-ie.
- Service worker serwuje HTML network-first (lub stale-while-revalidate, z krótkim TTL) — nigdy cache-first dla dokumentów HTML.
- Statyczne zasoby (JS/CSS/obrazy/czcionki) mogą być cache-first; to jest w porządku.
- Strona offline-fallback nigdy nie może być tym, co świeży crawl zaindeksuje.
- URL Inspection (test na żywo) pokazuje Google prawdziwą, aktualną stronę — porównaną z wersją na żywo.
- Manifest jest poprawny pod kątem instalowalności, ale nie traktujesz go jako dźwigni SEO.
- Instalowalność jest testowana per przeglądarka/system operacyjny, a nie zakładana jako uniwersalna (iOS Safari nie ma
beforeinstallprompt; to ręczne Dodaj do ekranu głównego) — i żadna z tych różnic nie jest traktowana jako problem SEO. - Serwowane przez HTTPS (wymagane dla service workerów tak czy inaczej).
- Core Web Vitals są zdrowe — sprawdź, czy pakiet JS i hydratacja nie obniżają LCP/INP.
- E-commerce: strony produktów zwracają prawdziwy unikalny HTML; nawigacja fasetowa/routing po stronie klienta nie generuje URL-i tylko ze szkieletem lub nieskończonych URL-i z parametrami.
PWA SEO — ściąga
Czy to wpływa na SEO?
| Komponent PWA | Co robi | Wpływ na SEO |
|---|---|---|
manifest.json | Prompt instalacji, ikony, start_url, display | Brak — nie jest czytany przez systemy rankingowe |
| Service worker | Offline, cachowanie w tle, push | Tylko ryzyko — może serwować Googlebotowi nieaktualny/offline HTML, jeśli jest źle skonfigurowany |
| HTTPS | Wymagane dla service workerów (bezpieczny kontekst) | Drobny sygnał rankingowy — każda strona z HTTPS go ma, PWA czy nie |
| Dodaj do ekranu głównego / push / offline | UX przypominający aplikację | Brak — zaangażowanie, nie ranking |
| Core Web Vitals | Ładowanie/interaktywność/stabilność | Realny (umiarkowany) czynnik rankingowy — to inżynieria, nie etykieta PWA |
| Podstawowe renderowanie JS/SPA | Jak strona jest zbudowana | Rzeczywiste pole bitwy — SSR/prerender, prawdziwe URL-e, metadane per trasa |
Cachowanie przez service worker według typu zasobu
| Zasób | Strategia | Dlaczego |
|---|---|---|
| Dokumenty HTML | Network-first / stale-while-revalidate | Google nigdy nie uruchamia Twojego SW; musi widzieć aktualny HTML |
| JS / CSS | Cache-first | Statyczne, wersjonowane, nie są indeksowanym dokumentem |
| Obrazy / czcionki | Cache-first | Statyczne, bezpieczne do agresywnego cachowania |
| Offline fallback | Serwuj tylko przy prawdziwym offline | Nigdy nie może być indeksowaną wersją |
Szybkie fakty
- Google daje PWA żadnej przewagi rankingowej (Mueller).
- Renderer Google nie uruchamia service workerów podczas indeksowania.
- Sygnał rankingowy HTTPS: “mniej niż 1% globalnych zapytań” (Google, 2014).
- Bing: brak wytycznych specyficznych dla PWA — traktuj jak każdą stronę JS.
Playbook incydentów: ruch z wyszukiwarki spadł po wydaniu PWA
- Zamroź ścieżkę wydania. Wstrzymaj dalsze wdrożenia service workera i routingu, zachowując stan produkcyjny z błędem oraz identyfikatory wydania.
- Potwierdź zakres. Podziel spadek według szablonu, katalogu, urządzenia i czasu wdrożenia. Awarii całego PWA nie należy zakładać na podstawie jednej zepsutej trasy.
- Porównaj trzy odpowiedzi. Zapisz surową odpowiedź HTTP, świeżo wyrenderowaną stronę z wyczyszczonym magazynem oraz stronę powracającego użytkownika kontrolowaną przez service workera. Sprawdź tytuł, canonical, dyrektywy robots, główną treść, linki i zachowanie statusu.
- Sprawdź rejestrację i politykę pamięci podręcznej. W DevTools Application zidentyfikuj aktywnego workera, jego zakres, oczekujące wersje, nazwy pamięci podręcznej i handler nawigacji. Potwierdź, że nawigacje HTML nie są uwięzione za starą odpowiedzią cache-first.
- Pomiń workera. Wyrejestruj go lub użyj opcji pomijania w DevTools, przeładuj i powtórz dotkniętą trasę. Jeśli defekt zniknie, worker lub jego pamięć podręczna jest prawdopodobną granicą; jeśli pozostanie, kontynuuj jako zwykły incydent JavaScript SEO.
- Przywróć bezpieczną ścieżkę nawigacji. Wycofaj workera lub przełącz żądania dokumentów na network-first z jawnym fallbackiem offline. Nie usuwaj ślepo wszystkich pamięci podręcznych, jeśli użytkownicy polegają na danych offline.
- Zweryfikuj i monitoruj. Przetestuj czystą przeglądarkę, aktualizującą się przeglądarkę i przeglądarkę offline. Następnie sprawdź reprezentatywne adresy URL i obserwuj wydajność wyszukiwania przez normalne okno ponownego indeksowania.
Traktowanie manifestu jako pliku SEO
Wypełnianie słów kluczowych w name, short_name lub metadanych ikon nie czyni stron bardziej indeksowalnymi. Używaj manifestu do zachowania instalacji i umieszczaj treści istotne dla wyszukiwania w indeksowalnym HTML z zwykłymi tytułami, linkami i canonicalami.
Buforowanie HTML na zawsze
Reguła cache-first, która traktuje nawigacje jak niezmienne zasoby, może utrzymywać starą treść, canonicaly lub dyrektywy robots po wydaniu. Buforuj agresywnie wersjonowane JS, CSS i obrazy; daj HTML strategię aktualizacji świadomą sieci.
Zwracanie powłoki offline jako udanej strony
Serwowanie tej samej powłoki aplikacji offline dla każdego niedostępnego adresu URL może wyglądać jak wiele różnych adresów URL zwracających identyczną cienką treść. Utrzymuj doświadczenie offline wyraźnie oddzielone od normalnej nawigacji i nie udawaj, że brakujący dokument jest żądaną stroną.
Ukrywanie nawigacji za kontrolkami niebędącymi linkami
Przycisk, który zmienia stan klienta, może działać w aplikacji, nie zapewniając indeksowalnej ścieżki <a href> do celu. Używaj prawdziwych linków dla tras, które wyszukiwarki i użytkownicy muszą śledzić, a następnie wzbogacaj przejście za pomocą JavaScript.
Testowanie tylko jako ciepły powracający użytkownik
Przeglądarka dewelopera z zainstalowanym workerem i wypełnioną pamięcią podręczną może maskować zepsutą pierwszą wizytę. Przetestuj czysty magazyn, aktualizację z poprzedniego workera i powracającą wizytę. To odrębne stany PWA.
Przykład: buforowanie zasobów i buforowanie dokumentów wymagają różnych reguł
Poniższa uproszczona logika service workera pokazuje granicę. Zasoby z hashem mogą być cache-first; nawigacje dokumentów powinny próbować sieci przed fallbackiem.
self.addEventListener('fetch', event => {
const request = event.request;
if (request.mode === 'navigate') {
event.respondWith(
fetch(request).catch(() => caches.match('/offline/'))
);
return;
}
if (['script', 'style', 'image', 'font'].includes(request.destination)) {
event.respondWith(
caches.match(request).then(cached => cached || fetch(request))
);
}
});Dokładna polityka produkcyjna zależy od wymagań aktualizacji i offline, ale lekcja SEO jest stabilna: HTML nie jest tym samym rodzajem niezmiennego zasobu co pakiet z odciskiem palca.
Przykład: trasa indeksowalna a stan tylko aplikacji
<!-- Search engines and users get a real destination. -->
<a href="/products/running-shoes/">Running shoes</a>
<!-- This changes app state but exposes no destination URL. -->
<button onclick="showCategory('running-shoes')">Running shoes</button>PWA może przechwycić link dla przejścia przypominającego aplikację bez usuwania jego indeksowalnego adresu URL.
Prompt: przegląd strategii buforowania service workera
Wklej źródło workera i listę tras. Nie dołączaj tajemnic ani prywatnych odpowiedzi API.
Audit this service worker for search and freshness risks. Classify each fetch route as
document navigation, versioned static asset, API response, media, or offline fallback.
For each route, state the current strategy, the stale-content failure mode, and a safer
strategy. Pay special attention to HTML served cache-first, redirect handling, offline
shells returned for real URLs, cache-version cleanup, and worker scope. Quote the exact
code that creates each finding. Do not claim that PWA features provide a ranking boost.
Route inventory:
[PASTE ROUTES AND CONTENT TYPES]
Service worker:
[PASTE SOURCE] Prompt: zbuduj macierz QA wydania PWA
Create a release QA matrix for this PWA. Cover a clean first visit, a returning visit
with the current worker, an upgrade from the previous worker, offline navigation, and a
worker-bypassed visit. For each state, list how to reproduce it and what to compare in
the raw response and rendered page: status behavior, title, canonical, robots, primary
content, internal links, and freshness. Use only the routes and requirements I provide;
flag missing evidence instead of inventing expected results.
Routes and requirements:
[PASTE ROUTE | EXPECTED CONTENT | OFFLINE REQUIREMENT | RELEASE CHANGE] Ramy SHELL dla przeglądów SEO PWA
- S: Odpowiedź serwera. Użyteczna pierwsza odpowiedź lub przemyślana strategia renderowania musi udostępniać stronę, a nie tylko pustą powłokę aplikacji.
- H: Hrefy. Ważne trasy używają linków do przeszukiwania ze stabilnymi adresami URL, a nie kontrolek istniejących tylko jako stan po stronie klienta.
- E: Oczekiwane metadane. Tytuły, kanonikalne, dyrektywy robots i dane strukturalne pozostają poprawne w stanie surowym i wyrenderowanym.
- L: Żywe dokumenty. Żądania nawigacji mają politykę świeżości odpowiednią dla HTML; nieaktualne dokumenty z pamięci podręcznej nie powinny po cichu przetrwać wydań.
- L: Testy cyklu życia. QA obejmuje instalację, aktywację, aktualizację, oczekującego workera, tryb offline i stan pominięcia, a nie jedną ciepłą sesję deweloperską.
Framework utrzymuje wąski zakres przeglądu specyficznego dla PWA. Jeśli wszystkie pięć punktów przejdzie, większość pozostałej pracy to zwykłe testy JavaScript, wydajności i indeksowalności.
Konsola DevTools: sprawdź aktywnego workera i pamięci podręczne
Uruchom to w konsoli DevTools przeglądarki na PWA. Raportuje rejestracje i nazwy pamięci podręcznych bez zmieniania żadnej z nich.
const registrations = await navigator.serviceWorker.getRegistrations();
console.table(registrations.map(r => ({
scope: r.scope,
active: r.active?.scriptURL || '',
waiting: r.waiting?.scriptURL || '',
installing: r.installing?.scriptURL || ''
})));
console.log('Caches:', await caches.keys());Konsola DevTools: porównaj pobranie sieciowe z odpowiedzią z pamięci podręcznej
const path = location.pathname;
const network = await fetch(path, { cache: 'no-store' });
const cached = await caches.match(path);
console.table({
network: { status: network.status, type: network.type },
cache: { found: Boolean(cached), status: cached?.status ?? '' }
});Wynik dowodzi, że odpowiedź istnieje w pamięci podręcznej; nie dowodzi, który handler fetch wygra dla każdej nawigacji. Potwierdź routing w źródle workera i w panelu Network.
Regex: znajdź ryzykowne handlery nawigacji cache-first
Użyj tego jako pomocy w przeglądzie, a nie parsera. Szuka warunku nawigacji, po którym w pobliżu następuje sprawdzenie pamięci podręcznej.
request\.mode\s*===?\s*['"]navigate['"][\s\S]{0,500}caches\.(?:match|open)\s*\( Zweryfikuj wydanie PWA SEO
| Test do uruchomienia | Oczekiwany wynik | Interpretacja błędu | Okno monitorowania | Wyzwalacz wycofania |
|---|---|---|---|---|
| Pobierz reprezentatywne trasy z pustym profilem przeglądarki | Każda trasa ładuje zamierzoną treść i metadane przy pierwszej wizycie | Aplikacja zależy od istniejącego workera lub pamięci podręcznej | Każde wydanie | Wycofaj, jeśli krytyczne trasy zawodzą dla nowych użytkowników |
| Uaktualnij z poprzedniego produkcyjnego workera bez czyszczenia pamięci | Nowy worker aktywuje się przewidywalnie, a dokumenty odświeżają się do wydanej wersji | Logika cyklu życia lub wersji pamięci podręcznej pozostawia użytkowników na starym HTML | Próba wydania i dzień wdrożenia | Wycofaj, jeśli poprzednia wersja nie może bezpiecznie się zaktualizować |
| Porównaj surowy HTML, wyrenderowany DOM i renderowanie z pominięciem workera | Tytuły, kanonikalne, dyrektywy robots, główna treść i linki pozostają równoważne znaczeniowo | Renderowanie po stronie klienta lub przechwytywanie przez workera zmienia dane krytyczne dla wyszukiwania | Przed wdrożeniem i po wdrożeniu | Wycofaj, jeśli strony stają się nieindeksowalne lub tracą główną treść |
| Nawiguj online, a następnie powtórz offline | Żądania online otrzymują żywe dokumenty; zachowanie offline jest jawne i ograniczone do zaprojektowanego zakresu | Offline’owa powłoka lub nieaktualna pamięć podręczna maskuje prawdziwe trasy | Każda zmiana workera | Wycofaj, jeśli użytkownicy online otrzymują treść offline lub nieaktualną |
| Poproś o nieistniejący URL online | Odpowiedź nie udaje poprawnej strony treści z ogólną powłoką aplikacji | Routing catch-all tworzy zachowanie soft-404 | Każda zmiana routingu | Wycofaj, jeśli dowolne URL-e zwracają indeksowalną treść powłoki |
Sprawdź się: PWA SEO
Pięć szybkich pytań o to, jak Progressive Web Apps współdziałają z wyszukiwarką. Wybierz odpowiedź na każde, a następnie sprawdź.
Zasoby warte Twojego czasu
Moje powiązane artykuły
- JavaScript SEO Issues & Best Practices — fundament renderowania, na którym opiera się każda PWA; app-shell, SSR i to, co renderer Google robi, a czego nie.
- The Beginner’s Guide to Technical SEO — gdzie renderowanie i możliwość przeszukiwania wpisują się w szerszy obraz.
Moje wystąpienia
- Jak działa wyszukiwarka (SlideShare) — moje omówienie przeszukiwania, renderowania, indeksowania i rankingu, czyli potoku, przez który musi przejść PWA. (Stałe zastrzeżenie: “This is my understanding of systems… not going to be 100% complete or accurate.” (tłumaczenie) „To moje rozumienie systemów… nie będzie w 100% kompletne ani dokładne”).
Z branży
- Google: Progressive Web Apps Don’t Rank Better Than Regular Sites (Search Engine Journal) — relacja z godzin biurowych Muellera, która stanowi podstawę obalania mitu.
- Google Says Progressive Web Apps (PWAs) Have No Advantage In Search (Search Engine Roundtable) — niezależny opis tej samej sesji.
- Service Worker – What SEOs Need to Know (SearchViu) — wypowiedzi Splitta/Muellera na temat tego, dlaczego renderer pomija service workery.
- Understand JavaScript SEO Basics (Google) — tryb awarii powłoki aplikacji, udokumentowany u źródła.
- What makes a good Progressive Web App? (PWA checklist) (web.dev) — instalowalność i wykrywalność jako osobne kategorie.
- Twitter Lite case study (web.dev) — prawdziwe liczby dotyczące zaangażowania i dowód, że nigdy nie chodziło o SEO.
Filmy
- Google Search Central (YouTube) — wyjaśnienia Martina Splitta dotyczące JavaScript SEO i renderowania obejmują dokładny potok (crawl → render → index), od którego zależy PWA, w tym sposób, w jaki bezstanowy renderer obsługuje JS. Kanał
Dziennik zmian
Zaktualizowano 18 lip 2026.
Podsumowanie redakcyjne i zapisane szczegóły zmian.Szczegóły zmian
-
Szczegółowe uwagi dotyczące zmian są obecnie dostępne po angielsku.
Pełne porównanie jest niedostępne — dla tej wersji nie zarchiwizowano wcześniejszej migawki.