PWA-SEO
Progressive Web App SEO — warum "going PWA" tut nicht verbessern Rankings, warum the manifest.json ist SEO-irrelevant, wie ein misconfigured Dienst worker kann serve Googlebot ein stale cache, und wo Core Web Vitals und HTTPS tatsächlich (und don't) overlap mit SEO.
Sprachen
ein PWA ist ein Website enhanced mit ein manifest und ein Dienst worker — es ist still ein normal (usually JavaScript/SPA) Website zu Google, mit kein inherent Ranking advantage. The manifest.json ist SEO-irrelevant (es controls installability, nicht indexing). The one real PWA-specific risk ist the Dienst worker: Google's renderer tut nicht ausführen Dienst workers wenn indexing, so ein cache-erste HTML strategy kann hand Googlebot ein stale oder offline Seite. Fix that mit network-erste für HTML, und the rest ist ordinary JS/SPA SEO.
Evidence for this claim A progressive web app is still a web application; installability features do not replace indexable HTML and URLs. Scope: Current official or standards documentation. Confidence: high · Verified: web.dev: Progressive web apps Evidence for this claim JavaScript applications must expose crawlable links, meaningful content, metadata, and status behavior to Google. Scope: Current official or standards documentation. Confidence: high · Verified: Google: JavaScript SEO basicsTL;DR — ein PWA (Progressive Web App) ist ein normal Website mit two extras bolted auf: ein manifest that lets Menschen install es zu their home screen, und ein Dienst worker that kann machen es arbeiten offline. zu Google es ist still just ein Website — going PWA tut nicht boost Ihre Rankings. The one thing that kann tatsächlich hurt Sie ist ein badly festlegen-up Dienst worker that zeigt Google ein old, cached Seite statt Ihre live one.
war ein PWA tatsächlich ist
ein Progressive Web App ist ein Website das ist been enhanced zu feel mehr like ein native app. Two pieces machen es ein PWA:
- ein Web app manifest (
manifest.json) — ein small file that tells the browser Ihre app’s name, icons, und colors, so ein visitor kann tap “hinzufügen zu Home Screen” und erhalten ein app-style icon und splash screen. - ein Dienst worker — ein bit von JavaScript that läuft in the background und kann cache files so the Website loads fast auf repeat visits und even funktioniert offline.
das ist es. Underneath, ein PWA ist almost immer ein regular JavaScript Website (React, Vue, Angular, und so auf). es ist ein normal Website wearing ein app costume.
The big myth zu bust
The meisten common thing Menschen believe ist: “wenn wir turn unser Website into ein PWA, wir’ll ranken better.” Google hat said plainly that dies ist nicht true. Google’s John Mueller put es directly: PWAs “currently don’t haben any advantage in Google Suche.” dort ist kein “PWA bonus” in the Ranking Systeme.
The manifest file tut nicht helfen SEO either. es controls wie the app installs — the icon, the name, the splash screen — none von welche Google reads wenn deciding wie zu ranken Sie.
The one thing that kann tatsächlich hurt
The Dienst worker ist the part zu sein careful mit. weil es kann serve ein cached (saved) copy von Ihre Seiten, ein bad setup kann end up showing Google ein stale oder even blank “Sie sind offline” version von ein Seite statt the real, up-zu-date one. das ist wie ein PWA loses Traffic after launch — nicht weil es “became ein PWA,” aber weil the caching war pointed the wrong Weg.
war zu tatsächlich tun
- machen sure Ihre real Seite Inhalt loads für Suchmaschinen, nicht just ein empty shell that fills in mit JavaScript afterward.
- festlegen Ihre Dienst worker so es fetches fresh HTML aus the network erste, und nur falls back zu the cache für speed auf things like images und stylesheets.
- halten die Grundlagen right: real, unique URLs; ein good title und meta description auf every Seite; ein fast, zuverlässig experience.
Being ein PWA ist great für Ihre users — installable, fast, offline-friendly. Just don’t expect es zu move Sie up in Google, und don’t let the Dienst worker feed Google the wrong Seite. The Fortgeschritten tab hat the mechanics, the caching strategies, und the quotes.
Evidence for this claim A progressive web app is still a web application; installability features do not replace indexable HTML and URLs. Scope: Current official or standards documentation. Confidence: high · Verified: web.dev: Progressive web apps Evidence for this claim JavaScript applications must expose crawlable links, meaningful content, metadata, and status behavior to Google. Scope: Current official or standards documentation. Confidence: high · Verified: Google: JavaScript SEO basicsTL;DR — ein PWA ist ein manifest + ein Dienst worker layered auf top von war ist almost immer ein JS/SPA Website — so the rendering rules aus JavaScript/SPA SEO anwenden unchanged, plus two PWA-specific concerns. Google gives PWAs kein Ranking advantage (Mueller). The
manifest.jsongoverns installability, nicht indexing, und es gibt kein Belege the Ranking Systeme lesen es. The Dienst worker ist the real risk: Google’s renderer tut nicht ausführen Dienst workers wenn indexing, so ein cache-erste HTML strategy kann index ein stale oder offline shell — verwenden network-erste für HTML, cache-erste für static assets. HTTPS ist ein hard requirement für Dienst workers und separately ein tiny Ranking signal; don’t chain diese into “PWAs ranken better.” Core Web Vitals ist the nur legitimate overlap, und es ist the engineering, nicht the PWA label.
ein PWA ist ein Website erste
The single meisten nützlich frame: ein Progressive Web App ist ein normal Website mit two things hinzugefügt auf top. Per Google’s own definition, PWAs “sind Web apps erstellt und enhanced mit modern APIs zu bereitstellen enhanced capabilities während still reaching any Web user auf any device mit ein single codebase.” The three pillars Google names sind Capable, zuverlässig, und Installable — note that none von the three ist “rankable.”
Architecturally, that codebase ist almost immer ein JavaScript framework running ein
single-Seite-application pattern. welche bedeutet: everything that governs JS/SPA
indexability governs PWA indexability, mit kein modification. Real <a href> Links
und History-API routing (nicht hash fragments) für addressability; server-side rendering
oder prerendering für Inhalt availability; per-route canonical, title, und meta in the
rendered DOM. wenn Sie’ve lesen the JavaScript SEO und SPA SEO material, Sie already know
90% von PWA SEO — the app-shell failure mode, in particular, ist one Google explicitly
documents: “einige JavaScript Websites may verwenden the app shell model wo the initial HTML
tut nicht contain the actual Inhalt und Google benötigt zu execute JavaScript vor
being able zu sehen the actual Seite Inhalt that JavaScript generates.” ein PWA that
ships ein empty shell mit kein SSR/prerender inherits that problem directly.
So the honest scope von ein PWA-specific SEO article ist small: the manifest, und the Dienst worker. Everything else ist JS/SPA SEO wearing ein manifest.
The core myth: “going PWA” tut nicht verbessern Rankings
dies ist the headline. Google hat been unusually direct über es. John Mueller, in ein Suche Central office-hours session, said PWAs “currently don’t haben any advantage in Google Suche, und als far als I know, dort sind kein plans zu ändern dies,” und — asked whether converting zu ein PWA would helfen — “standardmäßig, saying going zu ein PWA will machen Ihre Rankings better — I don’t think that ist the case.”
He auch pre-empted the usual counter-argument, that “unser competitor went PWA und their Rankings jumped.” His Antwort: “So just the fact that one von Ihre competitors hat moved aus one framework zu another, und hat seen ein improvement in Suche, that framework ändern aus my point von view wouldn’t sein responsible für that.” und auf warum: “These sind essentially different ways von making ein Website… für the meisten part, wir sehen these als normal HTML Seiten.”
wo PWA relaunches tun correlate mit Ranking lifts, es ist the confounds that come mit any big rebuild: modernized internal linking, refreshed und expanded Inhalt, genuine speed improvements, und usually ein marketing push tied zu the relaunch. None von that requires the PWA label. wenn Sie rebuild ein 10-zu-15-Jahr-old organically-grown Website, Sie ändern ein dozen things bei once — attributing the Ergebnis zu “PWA” ist ein correlation error.
Mueller’s office-hours statements above sind relayed durch Suchmaschine Journal und independently durch Suchmaschine Roundtable covering the gleich Nov 2021 session; I haben nicht replayed the original video, so treat them als reported-official.Manifest.json: Installierbarkeit ≠ Indexierbarkeit
The manifest.json file exists zu machen Ihre app installable. Its fields —
name, short_name, icons, start_url, display, theme_color — drive the
install prompt, the home-screen icon, the splash screen, und whether the app opens
standalone oder in ein browser tab. das ist the entire job.
es gibt kein Belege Google’s Ranking oder indexing Systeme lesen the manifest als ein signal. The cleanest external confirmation ist Google’s own PWA checklist, welche Listen “ist installable” und “Discoverable in Suche” als two separate, independent checklist categories — wo discoverability ist defined als ordinary SEO fundamentals: “ermöglichen Suchmaschine discovery durch unique URLs, descriptive titles, meta descriptions, und structured data.” Installability (manifest-driven) und discoverability (classic SEO) sind treated als parallel concerns, nicht one feeding the other. So: halten ein valid manifest weil es ist war macht the app installable — just don’t file es under SEO.
Google tut nicht veröffentlichen ein Seite stating in exact words that manifest.json ist excluded aus Ranking; dies ist ein well-supported inference aus the “kein advantage” statement, the checklist’s separation von the two categories, und the manifest’s total absence aus Google’s Ranking-factor docs — phrase es als “kein Belege es ist lesen,” nicht “confirmed ignored.”Dienst workers: the one real PWA-specific SEO risk
hier’s the fact that matters meisten, und es ist PWA-specific: Google’s rendering Dienst tut nicht ausführen Ihre Dienst worker wenn es renders ein Seite für indexing. The reasoning, aus Martin Splitt: “als wir haben zu assume that someone clicking auf Ihre Seite aus ein SERP ist ein erste-time visitor, running ein Dienst worker ist usually nicht going zu tun much good.” ein Dienst worker’s whole point ist speeding up repeat visits aus ein cache — und Googlebot ist, durch design, immer treated als ein erste-time visitor, so es gibt nothing für es zu speed up. Splitt again: “wir sind nicht supporting that weil users clicking onto Ihre Seite aus the Suche Ergebnis might never haben been dort beforehand.” Mueller hat confirmed dies ist stable policy, nicht ein temporary state: “I wouldn’t expect es zu ändern — es ist computationally expensive zu ausführen Dienst-workers in the background like dies für indexing.”
These three rep statements sind relayed durch SearchViu (Splitt bei Google I/O 2019/2020; Mueller reported July 2023); I’ve confirmed the Splitt und Mueller quotes als exact substrings auf that Seite aber sie sind ein Drittanbieter- relay, nicht ein Google-owned URL. Note auch that “never läuft” ist slightly too absolute — Google’s Splitt hat indicated Web workers kann sometimes execute; the safe framing ist “the rendering Dienst tut nicht ausführen Dienst workers durch design,” nicht “under kein circumstance.”So warum ist that ein risk? weil Ihre Dienst worker tut ausführen in real users’ browsers, und wenn Sie told es zu serve HTML cache-erste — zurückgeben the saved copy, skip the network — then ein real repeat visitor sees ein fast cached Seite, aber das ist ein strategy Googlebot never executes. The danger ist the reverse case: ein caching pattern that, under any error oder fallback condition, hands back ein stale Dokument oder the offline-fallback Seite. weil rendering ist stateless und the WRS treats every fetch als fresh, ein misconfigured caching strategy ist wie ein PWA ends up mit Googlebot indexing ein outdated oder empty offline shell statt live Inhalt.
The caching-strategy rule von thumb:
- HTML documents → network-erste (oder stale-während-revalidate mit ein short TTL). erhalten the live Seite; verwenden the cache nur als ein offline fallback, und machen sure that fallback ist never war ein fresh crawlen would index.
- Static assets (JS, CSS, images, fonts) → cache-erste ist fine und desirable — they don’t ändern per Anfrage und sind nicht the indexable Dokument.
wie zu audit es: vergleichen war Googlebot sees against war ein repeat visitor’s browser serves aus cache. verwenden URL Inspection in Search Console (live testen) zu sehen the rendered HTML Google tatsächlich erhält, und prüfen es against the live Seite. wenn they diverge, Ihre Dienst worker oder SSR setup ist the erste suspect. und watch rendering timeouts auf hybrid setups — als Hamlet Batista noted aus the dynamic-rendering era, “Rendering services wird nicht wait forever für ein Seite zu finish loading.” (That specific article ist über dynamic rendering, welche Google now discourages in favor von SSR — cite the timeout principle, nicht the pattern.)
HTTPS: ein Dienst-worker requirement, und separately ein tiny Ranking signal
Sie’ll sehen PWA SEO posts imply “PWAs benötigen HTTPS, und HTTPS boosts Rankings, therefore PWAs sind mehr SEO-friendly.” Two true facts, wrongly chained.
Fact one: Dienst workers nur ausführen in ein secure Kontext. Per MDN: “Dienst workers sind nur verfügbar in secure contexts: dies bedeutet that their Dokument ist served over HTTPS, although browsers auch treat http://localhost als ein secure Kontext, zu facilitate local development.” das ist ein browser Plattform rule, nicht ein SEO tactic — kein HTTPS, kein Dienst worker, full stop.
Fact two: HTTPS ist ein real Google Ranking signal, aber ein minuscule one. Google’s own 2014 announcement: “wir sind starting zu verwenden HTTPS als ein Ranking signal. für now es ist nur ein very lightweight signal — affecting fewer than 1% von global Anfragen, und carrying weniger weight than other signals such als high-quality Inhalt.”
The point: any HTTPS Website erhält that gleich tiny signal — PWA oder nicht. ein PWA tut nicht erhalten extra SEO credit für HTTPS; es just kann nicht function ohne es. Don’t sell HTTPS als ein PWA SEO benefit.
Core Web Vitals: die eine legitime Überschneidung
wenn es gibt ein real place wo “good PWA” und “good SEO” meet, es ist performance. Google’s PWA guidance leads mit reliability — “ein zuverlässig Progressive Web App feels fast und dependable regardless von the network” — und Core Web Vitals sind ein confirmed (wenn modest) Ranking factor. ein well-engineered PWA that loads fast und stays responsive will tend zu score well auf Vitals.
aber lesen the causation carefully: es ist the engineering, nicht the PWA-ness. ein bloated PWA — huge JS bundle, render-blocking hydration, ein over-eager Dienst worker — kann easily post worse Core Web Vitals than ein plain server-rendered Seite. The Vitals win comes aus doing the performance arbeiten well, welche Sie could tun mit oder ohne ein manifest. Being ein PWA neither guarantees good Vitals nor grants ein shortcut zu them.
App-like features sind UX, nicht Ranking factors
hinzufügen-zu-home-screen, offline mode, push notifications, app-like navigation — alle genuine, valuable PWA benefits, und alle engagement/retention features, nicht indexing oder Ranking inputs. Google’s PWA checklist macht the split explicit durch putting “installable” und “discoverable in Suche” in separate buckets.
Don’t treat “installable” als ein single, universal capability either — es varies durch
browser und OS, welche ist one mehr Grund es kann nicht sein ein SEO signal (Google would haben
kein consistent, cross-browser behavior zu reward). The beforeinstallprompt event that
lets ein PWA zeigen its own custom install UI ist ein Chromium-nur mechanism; per MDN’s PWA
installability Leitfaden, es ist “nicht supported auf iOS.” auf iOS Safari, installation happens
nur durch the manual teilen → hinzufügen zu Home Screen flow (extended zu Chrome, Edge,
Firefox, und Orion auf iOS 16,4+, alle von welche verwenden Apple’s erforderlich WebKit Engine auf iOS
und so teilen that limitation), nicht ein automatic prompt. None von that Änderungen the SEO
picture — es just bedeutet “ist my PWA installable” ist nicht ein yes/no fact independent von welche
browser und OS ein visitor ist auf.
Twitter Lite ist the case study everyone reaches für als “proof PWAs helfen SEO” — und its dokumentiert Ergebnisse sind real (ein 65% increase in Seiten per session, 75% increase in Tweets sent, 20% decrease in bounce rate) — aber every one von diese ist ein engagement metric. Google’s own case study von es never mentions SEO, organic Suche, oder Rankings bei alle. Great Ergebnis; wrong column.
E-Commerce PWA storefronts: ein short callout
PWA storefronts hinzufügen ein few wrinkles worth naming, weil they compound the SPA risks. Client-side routing plus faceted navigation kann generieren crawlable-looking URLs that alle lösen zu the gleich shell, oder ein explosion von parameter URLs. Cart und checkout state lives client-side und sollte never gate the indexable Produkt Inhalt. und jede Produkt Seite must independently zurückgeben real, unique HTML — the app-shell trap ist meisten expensive exactly wo Sie haben the meisten Seiten. The fixes sind the gleich ones aus E-Commerce und faceted-navigation SEO; the PWA layer tut nicht ändern them, es just macht the SSR/prerender discipline mehr wichtig.
Bing und PWAs
Worth ein line: Bing hat published kein PWA-specific Ranking oder indexing guidance. Its webmaster guidelines sind PWA-agnostic (general crawlability, sitemaps, robots.txt, IndexNow), und Microsoft’s extensive PWA docs sind entirely über Edge install prompts, PWABuilder, und Microsoft Shop packaging — distribution und installation, ein separate verfolgen aus Web-Suche indexing. So für Bing, Standard zu ordinary JS-rendering crawlability guidance; es gibt kein PWA exception zu learn.
The bottom line
PWA SEO ist JavaScript/SPA SEO plus exactly two additions: ignore the manifest als ein SEO input (es ist für installability), und configure the Dienst worker so es never traps Googlebot in ein stale oder offline cache. erhalten diese right und ein PWA indexes exactly like any other well-erstellt Website — kein bonus, kein penalty, just the gleich rules.
AI summary
ein condensed nehmen auf the Advanced version:
- ein PWA ist ein Website erste. es ist ein
manifest.json(installability) + ein Dienst worker (offline/caching) layered auf war ist almost immer ein JS/SPA Website. alle the JavaScript/SPA SEO rules anwenden unchanged. - kein Ranking advantage. Google’s John Mueller: PWAs “currently don’t haben any advantage in Google Suche.” “Going PWA” tut nicht verbessern Rankings.
- Manifest.json ist SEO-irrelevant. es controls install prompts, icons,
start_url,display— es gibt kein Belege the Ranking Systeme lesen es. Google’s PWA checklist Listen “installable” und “discoverable in Suche” als separate categories. - The one real risk ist the Dienst worker. Google’s renderer tut nicht ausführen Dienst workers wenn indexing (es treats every crawlen als ein erste-time besuchen), so ein cache-erste HTML strategy kann index ein stale oder offline shell. verwenden network-erste für HTML, cache-erste für static assets.
- HTTPS ≠ ein PWA SEO perk. es ist ein hard requirement für Dienst workers (secure Kontext) und separately ein “very lightweight” Ranking signal every HTTPS Website erhält. Don’t chain the two.
- Core Web Vitals ist the nur legit overlap — und es ist the performance engineering, nicht the PWA label. ein bloated PWA kann score worse.
- App-like features (install, offline, push) sind engagement, nicht Ranking. Twitter
Lite’s famous gains sind engagement metrics; that case study never mentions SEO.
Installability itself varies durch browser/OS (iOS Safari hat kein
beforeinstallprompt, nur manual hinzufügen zu Home Screen) — one mehr Grund es kann nicht sein ein Ranking signal. - Bing hat kein PWA-specific guidance; Standard zu ordinary JS crawlability.
Offizielle Dokumentation
Primary-Quelle material auf PWAs, rendering, und the facts dies article rests auf.
Google / Web.dev
- What are Progressive Web Apps? — Google’s definition und the three pillars (Capable, zuverlässig, Installable).
- What makes a good Progressive Web App? (PWA checklist) — separates “ist installable” aus “Discoverable in Suche” als distinct categories.
- Service workers (Learn PWA) — caching strategies und the Dienst-worker lifecycle.
- Understand JavaScript SEO Basics — the app-shell failure mode Google documents.
- Building Indexable Progressive Web Apps (2016) — Google’s original PWA-indexability post.
- Twitter Lite case study — the engagement metrics (note: kein SEO/organic claims anywhere in es).
- HTTPS as a ranking signal (2014) — the “very lightweight signal” statement.
MDN / Plattform
- Service Worker API — the secure-Kontext (HTTPS) requirement.
- Making PWAs installable — browser/OS installability differences, einschließlich warum
beforeinstallpromptist nicht supported auf iOS.
Bing / Microsoft (kein PWA-specific Ranking guidance exists — these sind install/distribution docs)
- Bing Webmaster Guidelines — general crawlability; PWA-agnostic.
- Overview of Progressive Web Apps (PWAs) — Edge install und distribution focus.
Quotes aus the Quelle
auf-the-record statements. wo ein quote ist relayed durch ein third party anstatt ein Google-owned URL, the caveat says so.
Google — kein PWA Ranking advantage
- “PWAs currently don’t haben any advantage in Google Suche, und als far als I know, dort sind kein plans zu ändern dies.” — John Mueller, Google, Suche Central office-hours (Nov 2021). Read the coverage
- “standardmäßig, saying going zu ein PWA will machen Ihre Rankings better — I don’t think that ist the case.” — John Mueller, gleich session. Read the coverage
- “So just the fact that one von Ihre competitors hat moved aus one framework zu another, und hat seen ein improvement in Suche, that framework ändern aus my point von view wouldn’t sein responsible für that.” — John Mueller, gleich session. Read the coverage
Google — war ein PWA ist, und the app-shell risk
- “Progressive Web Apps (PWA) sind Web apps erstellt und enhanced mit modern APIs zu bereitstellen enhanced capabilities während still reaching any Web user auf any device mit ein single codebase.” — Web.dev. Jump to quote
- “einige JavaScript Websites may verwenden the app shell model wo the initial HTML tut nicht contain the actual Inhalt und Google benötigt zu execute JavaScript vor being able zu sehen the actual Seite Inhalt that JavaScript generates.” — Google Suche Central. Jump to quote
- “ermöglichen Suchmaschine discovery durch unique URLs, descriptive titles, meta descriptions, und structured data.” — Web.dev PWA checklist, “Discoverable in Suche.” Jump to quote
Google — Dienst workers und indexing (relayed)
- “als wir haben zu assume that someone clicking auf Ihre Seite aus ein SERP ist ein erste-time visitor, running ein Dienst worker ist usually nicht going zu tun much good.” — Martin Splitt, Google. Read the coverage
- “wir sind nicht supporting that weil users clicking onto Ihre Seite aus the Suche Ergebnis might never haben been dort beforehand.” — Martin Splitt, Google (Google I/O 2019). Read the coverage
- “I wouldn’t expect es zu ändern — es ist computationally expensive zu ausführen Dienst-workers in the background like dies für indexing.” — John Mueller, Google (reported July 2023). Read the coverage
HTTPS: Plattform requirement vs. Ranking signal
- “Dienst workers sind nur verfügbar in secure contexts: dies bedeutet that their Dokument ist served over HTTPS, although browsers auch treat http://localhost als ein secure Kontext, zu facilitate local development.” — MDN, Dienst Worker API. Jump to quote
- “wir sind starting zu verwenden HTTPS als ein Ranking signal. für now es ist nur ein very lightweight signal — affecting fewer than 1% von global Anfragen, und carrying weniger weight than other signals such als high-quality Inhalt.” — Google, “HTTPS als ein Ranking signal” (2014). Jump to quote
Installability varies durch browser/OS
- “dies ist nicht supported auf iOS.”
— MDN, auf the
beforeinstallpromptcustom-install-prompt event. Jump to quote
beforeinstallprompt für ein custom install UI.auf rendering timeouts (dated Kontext)
- “Rendering services wird nicht wait forever für ein Seite zu finish loading.” — Hamlet Batista, Suchmaschine Land. Read the article
sollte I go PWA — und war will es tun für SEO?
ein quick walk durch the questions Menschen tatsächlich bring zu dies topic.
“wir sind considering ein PWA. Will es helfen unser SEO?”
- kein inherent Ranking benefit — Google says PWAs erhalten kein advantage in Suche. → erstellen ein PWA für the user benefits (installable, offline, fast repeat loads), nicht für Rankings. → es wird nicht hurt SEO either, als long als Ihre rendering und Dienst worker sind festlegen up correctly (fortfahren below).
“wir sind building/have ein PWA. ist my Inhalt tatsächlich indexable?”
- tut the initial HTML contain the real Inhalt (SSR/prerender), oder ist es ein empty
app shell filled durch JS?
- Empty shell, kein SSR → dies ist the app-shell trap. hinzufügen SSR oder prerendering vor worrying über anything PWA-specific. (gleich fix als any SPA.)
- SSR/prerender in place → good; move zu the Dienst worker.
“wie sollte my Dienst worker cache Seiten?”
- HTML documents → network-erste (oder stale-während-revalidate, short TTL). Never cache-erste für HTML.
- Static assets (JS/CSS/images/fonts) → cache-erste ist fine und good.
- Offline fallback Seite → machen sure es kann never sein the version ein fresh crawlen indexes.
“My PWA lost rankings/traffic after launch. wo tun I look?”
- ausführen URL Inspection (live testen) in Search Console — ist Google seeing the real Seite oder ein stale/offline/empty one?
- wenn stale oder empty → suspect the Dienst-worker caching strategy (cache-erste HTML) oder ein missing SSR step.
- wenn the Inhalt’s dort aber Rankings still dropped → look bei war else the rebuild changed: interne Links, Inhalt, redirects, speed. The PWA label ist rarely the cause.
“tun I benötigen zu tun anything special mit the manifest für SEO?”
- kein. halten es valid für installability; es hat kein SEO role. Spend the effort auf URLs, titles, meta, structured data, und Core Web Vitals stattdessen.
PWA-SEO-Checkliste
Scannable pass für keeping ein Progressive Web App crawlable und indexable:
- Real Inhalt ist server-rendered oder prerendered — nicht ein empty app shell filled durch JavaScript after load.
- Every route hat ein real, unique URL via the History API (kein hash/
#!routing). - jede route returns its own canonical, title, und meta description in the rendered DOM.
- Dienst worker serves HTML network-erste (oder stale-während-revalidate, short TTL) — never cache-erste für HTML documents.
- Static assets (JS/CSS/images/fonts) kann sein cache-erste; das ist fine.
- The offline-fallback Seite kann never sein war ein fresh crawlen indexes.
- URL Inspection (live testen) zeigt Google the real, current Seite — compared against the live Seite.
- The manifest ist valid für installability, aber Sie sind nicht treating es als ein SEO lever.
- Installability ist tested per browser/OS, nicht assumed universal (iOS Safari hat kein
beforeinstallprompt; es ist manual hinzufügen zu Home Screen) — und none von that variance ist treated als ein SEO issue. - Served over HTTPS (erforderlich für Dienst workers anyway).
- Core Web Vitals sind healthy — überprüfen the JS bundle und hydration sind nicht dragging LCP/INP down.
- E-Commerce: Produkt Seiten jede zurückgeben real unique HTML; faceted-nav/client routing ist nicht spawning shell-nur oder infinite parameter URLs.
PWA-SEO — Spickzettel
tut es affect SEO?
| PWA component | war es tut | SEO effect |
|---|---|---|
manifest.json | Install prompt, icons, start_url, display | None — nicht lesen durch Ranking Systeme |
| Dienst worker | Offline, background caching, push | Risk nur — kann serve Googlebot stale/offline HTML wenn misconfigured |
| HTTPS | erforderlich für Dienst workers (secure Kontext) | Tiny Ranking signal — every HTTPS Website erhält es, PWA oder nicht |
| hinzufügen-zu-home-screen / push / offline | App-like UX | None — engagement, nicht Ranking |
| Core Web Vitals | Load/interactivity/stability | Real (modest) Ranking factor — es ist the engineering, nicht the PWA label |
| Underlying JS/SPA rendering | wie the Seite ist erstellt | The actual battleground — SSR/prerender, real URLs, per-route metadata |
Dienst-worker caching durch resource type
| Resource | Strategy | warum |
|---|---|---|
| HTML documents | Network-erste / stale-während-revalidate | Google never läuft Ihre SW; es must sehen live HTML |
| JS / CSS | Cache-erste | Static, versioned, nicht the indexable doc |
| Images / fonts | Cache-erste | Static, safe zu cache aggressively |
| Offline fallback | Serve nur truly offline | Must never sein the indexed version |
Fast facts
- Google gives PWAs kein Ranking advantage (Mueller).
- Google’s renderer tut nicht ausführen Dienst workers wenn indexing.
- HTTPS Ranking signal: “fewer than 1% von global Anfragen” (Google, 2014).
- Bing: kein PWA-specific guidance — treat als any JS Website.
Incident playbook: Suche Traffic dropped after ein PWA release
- Freeze the release path. Stop further Dienst-worker und routing deployments während Sie preserve the failing production state und release identifiers.
- Confirm scope. Segment the drop durch template, directory, device, und deployment time. ein PWA-wide failure sollte nicht sein assumed aus one broken route.
- vergleichen three responses. speichern the raw HTTP response, ein fresh rendered Seite mit storage cleared, und ein returning-user Seite controlled durch the Dienst worker. prüfen the title, canonical, robots directives, primary copy, Links, und status behavior.
- Inspect registration und cache policy. in DevTools Application, identifizieren the active worker, its scope, waiting versions, cache names, und navigation handler. Confirm HTML navigations sind nicht trapped behind ein old cache-erste response.
- Bypass the worker. Unregister es oder verwenden DevTools’ bypass Option, reload, und repeat the affected route. wenn the defect disappears, the worker oder its cache ist the likely boundary; wenn es bleibt, fortfahren als ein ordinary JavaScript SEO incident.
- Restore ein safe navigation path. Roll back the worker oder switch Dokument Anfragen zu network-erste mit ein explicit offline fallback. nicht delete alle caches blindly wenn users depend auf offline Daten.
- Validate und monitor. testen ein clean browser, ein updating browser, und ein offline browser. Then inspect representative URLs und watch Suche performance durch the normal recrawl window.
Treating the manifest als ein SEO file
Stuffing Keywords into name, short_name, oder icon metadata tut nicht machen Seiten mehr
indexable. verwenden the manifest für installation behavior und put Suche-relevant Inhalt
in crawlable HTML mit ordinary titles, Links, und canonicals.
HTML für immer cachen
ein cache-erste rule that treats navigations like immutable assets kann halten old copy, canonicals, oder robots directives alive after ein release. Cache versioned JS, CSS, und images aggressively; geben HTML ein network-aware aktualisieren strategy.
Returning the offline shell als ein successful Seite
Serving the gleich offline app shell für every unavailable URL kann look like viele different URLs returning identical thin content. halten the offline experience clearly separate aus normal navigation und nicht pretend ein missing Dokument ist the requested Seite.
Hiding navigation behind non-Link controls
ein button that Änderungen client state may arbeiten in the app während providing kein crawlable
<a href> path zu the destination. verwenden real Links für routes Suchmaschinen und users
benötigen zu folgen, then enhance the transition mit JavaScript.
Testing nur als ein warm returning user
ein developer browser mit ein installed worker und populated cache kann mask ein broken erste besuchen. testen clean storage, ein upgrade aus the previous worker, und ein returning besuchen. diese sind distinct PWA states.
Beispiel: asset caching und Dokument caching benötigen different rules
The following simplified Dienst-worker logic zeigt the boundary. Hashed assets kann sein cache-erste; Dokument navigations sollte try the network vor falling back.
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))
);
}
});The exact production policy depends auf aktualisieren und offline requirements, aber the SEO lesson ist stable: HTML ist nicht the gleich kind von immutable asset als ein fingerprinted bundle.
Beispiel: crawlable route versus app-nur state
<!-- 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>ein PWA kann intercept the Link für ein app-like transition ohne removing its crawlable URL.
Prompt: prüfen ein Dienst-worker caching strategy
Paste the worker Quelle und ein route inventory. nicht enthalten secrets oder private API responses.
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: erstellen ein PWA release QA matrix
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] The SHELL framework für PWA SEO Bewertungen
- S: Server response. ein usable erste response, oder ein deliberate rendering strategy, must expose the Seite anstatt nur ein empty app shell.
- H: Hrefs. wichtig routes verwenden crawlable Links mit stable URLs, nicht controls that exist nur als client-side state.
- E: Expected metadata. Titles, canonicals, robots directives, und structured data bleiben correct in raw und rendered states.
- L: Live documents. Navigation Anfragen haben ein freshness policy appropriate für HTML; stale cached documents nicht silently outlive releases.
- L: Lifecycle Tests. QA deckt ab install, activate, aktualisieren, waiting-worker, offline, und bypass states statt one warm developer session.
The framework keeps PWA-specific prüfen narrow. wenn alle five pass, meisten remaining arbeiten ist ordinary JavaScript, performance, und indexability QA.
DevTools Console: inspect the active worker und caches
ausführen dies in the browser DevTools Console auf the PWA. es Berichte registrations und cache names ohne changing either one.
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());DevTools Console: vergleichen ein network fetch mit ein cached response
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 ?? '' }
});The Ergebnis proves that ein response exists in ein cache; es tut nicht prove welche fetch handler will win für every navigation. Confirm routing in the worker Quelle und the Network panel.
Regex: finden risky cache-erste navigation handlers
verwenden dies als ein prüfen aid, nicht ein parser. es looks für ein navigation condition followed nearby durch ein cache lookup.
request\.mode\s*===?\s*['"]navigate['"][\s\S]{0,500}caches\.(?:match|open)\s*\( Validate ein PWA SEO release
| testen zu ausführen | Expected Ergebnis | Failure interpretation | Monitoring window | Rollback trigger |
|---|---|---|---|---|
| Fetch representative routes mit ein empty browser profile | jede route loads its intended Inhalt und metadata auf the erste besuchen | The app depends auf ein pre-existing worker oder cache | Every release | Roll back wenn critical routes fail für neu users |
| Upgrade aus the previous production worker ohne clearing storage | The neu worker activates predictably und documents refresh zu the released version | Lifecycle oder cache-version logic strands users auf old HTML | Release rehearsal und deployment day | Roll back wenn the prior version kann nicht aktualisieren safely |
| vergleichen raw HTML, rendered DOM, und worker-bypassed rendering | Titles, canonicals, robots directives, primary copy, und Links bleiben equivalent in meaning | Client rendering oder worker interception Änderungen Suche-critical output | vor deployment und after deployment | Roll back wenn Seiten werden non-indexable oder lose primary Inhalt |
| Navigate online, then repeat offline | Online Anfragen receive live documents; offline behavior ist explicit und limited zu its designed scope | ein offline shell oder stale cache ist masking real routes | Every worker ändern | Roll back wenn online users receive offline oder obsolete Inhalt |
| Anfrage ein nonexistent URL online | The response tut nicht masquerade als ein valid Inhalt Seite mit the generic app shell | Catch-alle routing creates soft-404 behavior | Every routing ändern | Roll back wenn arbitrary URLs zurückgeben indexable shell Inhalt |
testen yourself: PWA SEO
Five quick questions auf wie Progressive Web Apps interact mit Suche. Pick ein Antwort für jede, then prüfen.
Resources worth Ihre time
My related writing
- JavaScript SEO Issues & Best Practices — the rendering foundation every PWA sits auf; app-shell, SSR, und war Google’s renderer tut und tut nicht tun.
- The Beginner’s Guide to Technical SEO — wo rendering und crawlability fit in the bigger picture.
My speaking
- How Search Works (SlideShare) — my walkthrough von crawling, rendering, indexing, und Ranking, the pipeline ein PWA hat zu pass durch. (Standing disclaimer: “dies ist my understanding von Systeme… nicht going zu sein 100% vollständig oder accurate.”)
aus rund the industry
- Google: Progressive Web Apps Don’t Rank Better Than Regular Sites (Suchmaschine Journal) — the Mueller office-hours coverage that anchors the myth-bust.
- Google Says Progressive Web Apps (PWAs) Have No Advantage In Search (Suchmaschine Roundtable) — independent schreiben-up von the gleich session.
- Service Worker – What SEOs Need to Know (SearchViu) — the Splitt/Mueller statements auf warum the renderer skips Dienst workers.
- Understand JavaScript SEO Basics (Google) — the app-shell failure mode, dokumentiert bei the Quelle.
- What makes a good Progressive Web App? (PWA checklist) (Web.dev) — installability und discoverability als separate categories.
- Twitter Lite case study (Web.dev) — the real engagement numbers, und proof they waren never über SEO.
Videos
- Google Suche Central (YouTube) — Martin Splitt’s JavaScript SEO und rendering explainers abdecken the exact pipeline (crawlen → render → index) ein PWA depends auf, einschließlich wie the stateless renderer handles JS. Channel
Änderungsprotokoll
Aktualisiert am 18. Juli 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.