Panduan PWA SEO

Progressive Web App SEO — why "going PWA" _(terjemahan)_ “going PWA” doesn't meningkatkan rankings, why manifest.json adalah SEO-irrelevant, how sebuah misconfigured service worker dapat sajikan Googlebot sebuah stale cache, dan where Core Web Vitals dan HTTPS actually (dan don't) overlap dengan SEO.

Pertama kali diterbitkan: 3 Jul 2026 · Terakhir diperbarui: 3 Agu 2026 · Advanced
Bahasa

sebuah PWA adalah sebuah situs web enhanced dengan sebuah manifest dan sebuah service worker — ini adalah masih sebuah normal (biasanya JavaScript/SPA) situs untuk Google, dengan no inherent peringkat advantage. manifest.json adalah SEO-irrelevant (ini controls installability, not pengindeksan). one nyata PWA-spesifik risk adalah service worker: Google's renderer doesn't run service workers when pengindeksan, so sebuah cache-pertama HTML strategy dapat hand Googlebot sebuah stale atau offline halaman. Fix itu dengan network-pertama untuk HTML, dan rest adalah ordinary JS/SPA SEO.

TL;DR — sebuah PWA adalah sebuah manifest + sebuah service worker layered pada top dari what adalah almost selalu sebuah JS/SPA situs — so rendering aturan dari JavaScript/SPA SEO apply unchanged, plus two PWA-spesifik concerns. Google gives PWAs no peringkat advantage (Mueller). manifest.json governs installability, not pengindeksan, dan there’s no evidence peringkat sistem read ini. service worker adalah nyata risk: Google’s renderer melakukan not run service workers when pengindeksan, so sebuah cache-pertama HTML strategy dapat indeks sebuah stale atau offline shell — gunakan network-pertama untuk HTML, cache-pertama untuk static assets. HTTPS adalah sebuah hard requirement untuk service workers dan separately sebuah tiny sinyal peringkat; don’t chain itu ke “PWAs rank better.” (terjemahan) “PWAs peringkat better.” Core Web Vitals adalah satu-satunya legitimate overlap, dan ini adalah engineering, not PWA label.

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 basics

sebuah PWA adalah sebuah situs web pertama

single sebagian besar berguna frame: sebuah Progressive Web App adalah sebuah normal situs web dengan two things ditambahkan pada top. Per Google’s own definition, PWAs “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.” (terjemahan) “adalah web apps dibangun dan enhanced dengan modern APIs untuk menyediakan enhanced capabilities while masih reaching apa pun web pengguna pada apa pun device dengan sebuah single codebase.” three pillars Google names adalah Capable, Reliable, dan Installable — note itu none dari three adalah “rankable.” (terjemahan) “rankable.”

Architecturally, itu codebase adalah almost selalu sebuah JavaScript framework running sebuah single-halaman-application pattern. Which berarti: everything itu governs JS/SPA indexability governs PWA indexability, dengan no modification. nyata <a href> tautan dan History-API routing (not hash fragments) untuk addressability; rendering sisi server atau prerendering untuk konten availability; per-route canonical, judul, dan meta di rendered DOM. jika Anda’ve read JavaScript SEO dan SPA SEO material, Anda sudah know 90% dari PWA SEO — app-shell failure mode, di particular, adalah one Google explicitly documents: “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.” (terjemahan) “beberapa JavaScript situs dapat gunakan app shell model where initial HTML melakukan not berisi actual konten dan Google perlu untuk execute JavaScript sebelum menjadi able untuk see actual halaman konten itu JavaScript generates.” sebuah PWA itu ships sebuah empty shell dengan no SSR/prerender inherits itu masalah directly.

So honest scope dari sebuah PWA-spesifik SEO artikel adalah kecil: manifest, dan service worker. Everything else adalah JS/SPA SEO wearing sebuah manifest.

core myth: “going PWA” (terjemahan) “going PWA” melakukan not meningkatkan rankings

ini adalah headline. Google memiliki telah unusually direct tentang ini. John Mueller, di sebuah Search Central office-hours session, said PWAs “currently don’t have any advantage in Google Search, and as far as I know, there are no plans to change this,” (terjemahan) “currently don’t memiliki apa pun advantage di Google Search, dan sebagai far sebagai I know, tidak ada plans untuk perubahan ini,” dan — ditanyakan whether converting untuk sebuah PWA akan help — “By default, saying going to a PWA will make your rankings better — I don’t think that is the case.” (terjemahan) “oleh default, saying going untuk sebuah PWA akan membuat Anda rankings better — I don’t think itu adalah case.”

He juga pre-empted usual counter-argument, itu “our competitor went PWA and their rankings jumped.” (terjemahan) “kami competitor went PWA dan mereka rankings jumped.” His jawaban: “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.” (terjemahan) “So hanya fact itu one dari Anda competitors memiliki moved dari one framework untuk lainnya, dan memiliki seen sebuah improvement di search, itu framework perubahan dari my poin dari view wouldn’t menjadi responsible untuk itu.” dan pada why: “These are essentially different ways of making a website… for the most part, we see these as normal HTML pages.” (terjemahan) “ini adalah essentially berbeda cara dari membuat sebuah situs web… untuk paling bagian, kami see ini sebagai normal HTML halaman.”

Where PWA relaunches melakukan correlate dengan peringkat lifts, ini adalah confounds itu come dengan apa pun big rebuild: modernized internal linking, refreshed dan expanded konten, genuine speed improvements, dan biasanya sebuah marketing push tied untuk relaunch. None dari itu memerlukan PWA label. jika Anda rebuild sebuah 10-untuk-15-year-old organically-grown situs, Anda perubahan sebuah dozen things di once — attributing hasil untuk “PWA” (terjemahan) “PWA” adalah sebuah correlation error.

Mueller’s office-hours statements above adalah relayed oleh mesin pencari Journal dan independently oleh mesin pencari Roundtable covering yang sama Nov 2021 session; I memiliki not replayed original video, so treat them sebagai reported-official.

Manifest.json: installability ≠ indexability

manifest.json file exists untuk membuat Anda app installable. -nya fields — name, short_name, icons, start_url, display, theme_color — drive install prompt, home-screen icon, splash screen, dan whether app opens standalone atau di sebuah browser tab. itu’s entire job.

There’s no evidence Google’s peringkat atau pengindeksan sistem read manifest sebagai sebuah signal. cleanest external confirmation adalah Google’s own PWA checklist, which lists “Is installable” (terjemahan) “adalah installable” dan “Discoverable in search” (terjemahan) “Discoverable di search” sebagai two separate, independent checklist categories — where discoverability adalah defined sebagai ordinary SEO fundamentals: “Enable search engine discovery through unique URLs, descriptive titles, meta descriptions, and structured data.” (terjemahan) “Enable mesin pencari penemuan melalui unique URLs, descriptive judul, meta deskripsi, dan data terstruktur.” Installability (manifest-driven) dan discoverability (classic SEO) adalah treated sebagai parallel concerns, not one feeding lainnya. So: pertahankan sebuah valid manifest because ini adalah what membuat app installable — hanya don’t file ini di bawah SEO.

Google doesn’t publish sebuah halaman stating di exact kata itu manifest.json adalah excluded dari peringkat; ini adalah sebuah well-didukung inference dari “no advantage” (terjemahan) “no advantage” statement, checklist’s separation dari two categories, dan manifest’s total absence dari Google’s peringkat-factor docs — phrase ini sebagai “no evidence it’s read,” (terjemahan) “no evidence ini adalah read,” not “confirmed ignored.” (terjemahan) “confirmed ignored.”

Service workers: one nyata PWA-spesifik SEO risk

Here’s fact itu penting sebagian besar, dan ini adalah PWA-spesifik: Google’s rendering service melakukan not run Anda service worker when ini renders sebuah halaman untuk pengindeksan. reasoning, dari Martin Splitt: “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.” (terjemahan) “sebagai kami memiliki untuk assume itu someone clicking pada Anda halaman dari sebuah SERP adalah sebuah pertama-time pengunjung, running sebuah service worker adalah biasanya not going untuk melakukan much baik.” sebuah service worker’s whole poin adalah speeding up repeat visits dari sebuah cache — dan Googlebot adalah, oleh design, selalu treated sebagai sebuah pertama-time pengunjung, so there’s nothing untuk ini untuk speed up. Splitt again: “We’re not supporting that because users clicking onto your page from the search result might never have been there beforehand.” (terjemahan) “kami’re not supporting itu because pengguna clicking onto Anda halaman dari search hasil mungkin tidak pernah memiliki telah there beforehand.” Mueller memiliki confirmed ini adalah stable policy, not sebuah temporary state: “I wouldn’t expect it to change — it’s computationally expensive to run service-workers in the background like this for indexing.” (terjemahan) “I wouldn’t expect ini untuk perubahan — ini adalah computationally expensive untuk run service-workers di background like ini untuk pengindeksan.”

ini three rep statements adalah relayed oleh SearchViu (Splitt di Google I/O 2019/2020; Mueller reported July 2023); I’ve confirmed Splitt dan Mueller quotes sebagai exact substrings pada itu halaman tetapi mereka’re sebuah ketiga-party relay, not sebuah Google-owned URL. Note juga itu “never runs” (terjemahan) “tidak pernah runs” adalah slightly too absolute — Google’s Splitt memiliki indicated web workers dapat sometimes execute; safe framing adalah “the rendering service doesn’t run service workers by design,” (terjemahan) “ rendering service doesn’t run service workers oleh design,” not “under no circumstance.” (terjemahan) “di bawah no circumstance.”

So why adalah itu sebuah risk? Because Anda service worker melakukan run di pengguna nyata’ browser, dan jika Anda told ini untuk sajikan HTML cache-pertama — mengembalikan saved copy, skip network — lalu sebuah nyata repeat pengunjung sees sebuah fast cached halaman, tetapi itu’s sebuah strategy Googlebot tidak pernah executes. danger adalah reverse case: sebuah caching pattern itu, di bawah apa pun error atau fallback condition, hands back sebuah stale document atau offline-fallback halaman. Because rendering adalah stateless dan WRS treats setiap fetch sebagai fresh, sebuah misconfigured caching strategy adalah how sebuah PWA ends up dengan Googlebot pengindeksan sebuah outdated atau empty offline shell alih-alih live konten.

** caching-strategy aturan dari thumb:**

  • HTML documents → network-pertama (atau stale-while-revalidate dengan sebuah pendek TTL). Get live halaman; gunakan cache hanya sebagai sebuah offline fallback, dan pastikan itu fallback adalah tidak pernah what sebuah fresh crawl akan indeks.
  • Static assets (JS, CSS, images, fonts) → cache-pertama adalah fine dan desirable — mereka don’t perubahan per permintaan dan aren’t dapat diindeks document.

cara audit ini: compare what Googlebot sees terhadap what sebuah repeat pengunjung’s browser menyajikan dari cache. gunakan pemeriksaan URL di Search Console (live test) untuk see rendered HTML Google actually gets, dan periksa ini terhadap live halaman. jika mereka diverge, Anda service worker atau SSR setup adalah pertama suspect. dan watch rendering timeouts pada hybrid setups — sebagai Hamlet Batista noted dari dynamic-rendering era, “Rendering services won’t wait forever for a page to finish loading.” (terjemahan) “rendering services won’t wait forever untuk sebuah halaman untuk finish memuat.” (itu spesifik artikel adalah tentang dynamic rendering, which Google now discourages di favor dari SSR — cite timeout principle, not pattern.)

HTTPS: sebuah service-worker requirement, dan separately sebuah tiny sinyal peringkat

Anda’ll see PWA SEO posts imply “PWAs need HTTPS, and HTTPS boosts rankings, therefore PWAs are more SEO-friendly.” (terjemahan) “PWAs perlu HTTPS, dan HTTPS boosts rankings, therefore PWAs adalah more SEO-friendly.” Two benar facts, wrongly chained.

Fact one: service workers hanya run di sebuah secure context. Per 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.” (terjemahan) “Service workers adalah hanya available di secure contexts: ini berarti itu mereka document adalah disajikan di atas HTTPS, although browser juga treat undefined sebagai sebuah secure context, untuk facilitate local development.” itu’s sebuah browser platform aturan, not sebuah SEO tactic — no HTTPS, no service worker, full stop.

Fact two: HTTPS adalah sebuah nyata Google sinyal peringkat, tetapi sebuah minuscule one. Google’s own 2014 announcement: “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.” (terjemahan) “kami’re starting untuk gunakan HTTPS sebagai sebuah sinyal peringkat. untuk now ini adalah hanya sebuah very lightweight signal — affecting fewer daripada 1% dari global kueri, dan carrying less weight daripada lainnya signals such sebagai tinggi-quality konten.”

poin: apa pun HTTPS situs gets itu sama tiny signal — PWA atau not. sebuah PWA doesn’t get extra SEO credit untuk HTTPS; ini hanya dapat’t function without ini. Don’t sell HTTPS sebagai sebuah PWA SEO benefit.

Core Web Vitals: one legitimate overlap

jika there’s sebuah nyata place where “good PWA” (terjemahan) “baik PWA” dan “good SEO” (terjemahan) “baik SEO” meet, ini adalah performa. Google’s PWA guidance leads dengan reliability — “A reliable Progressive Web App feels fast and dependable regardless of the network” (terjemahan) “sebuah reliable Progressive Web App feels fast dan dependable regardless dari network” — dan Core Web Vitals adalah sebuah confirmed (jika modest) peringkat factor. sebuah well-engineered PWA itu memuat fast dan stays responsive akan tend untuk score well pada Vitals.

tetapi read causation carefully: ini adalah engineering, not PWA-ness. sebuah bloated PWA — huge JS bundle, render-blocking hydration, sebuah di atas-eager service worker — dapat easily post worse Core Web Vitals daripada sebuah plain server-rendered halaman. Vitals win comes dari doing performa berfungsi well, which Anda dapat melakukan dengan atau without sebuah manifest. menjadi sebuah PWA neither guarantees baik Vitals nor grants sebuah shortcut untuk them.

App-like fitur adalah UX, not peringkat factors

tambahkan-untuk-home-screen, offline mode, push notifications, app-like navigation — semua genuine, valuable PWA benefits, dan semua engagement/retention fitur, not pengindeksan atau peringkat inputs. Google’s PWA checklist membuat split explicit oleh putting “installable” (terjemahan) “installable” dan “discoverable in search” (terjemahan) “discoverable di search” di separate buckets.

Don’t treat “installable” (terjemahan) “installable” sebagai sebuah single, universal capability either — ini varies oleh browser dan OS, which adalah one more alasan ini dapat’t menjadi sebuah SEO signal (Google akan memiliki no consistent, cross-browser perilaku untuk reward). beforeinstallprompt event itu lets sebuah PWA tampilkan -nya own custom install UI adalah sebuah Chromium-hanya mechanism; per MDN’s PWA installability guide, ini adalah “not supported on iOS.” (terjemahan) “not didukung pada iOS.” pada iOS Safari, installation happens hanya melalui manual Share → tambahkan untuk Home Screen flow (extended untuk Chrome, Edge, Firefox, dan Orion pada iOS 16.4+, semua dari which gunakan Apple’s diperlukan WebKit mesin pada iOS dan so share itu limitation), not sebuah automatic prompt. None dari itu perubahan SEO picture — ini hanya berarti “is my PWA installable” (terjemahan) “adalah my PWA installable” isn’t sebuah yes/no fact independent dari which browser dan OS sebuah pengunjung adalah pada.

Twitter Lite adalah case study everyone reaches untuk sebagai “proof PWAs help SEO” (terjemahan) “proof PWAs help SEO” — dan -nya documented hasil adalah nyata (sebuah 65% increase di halaman per session, 75% increase di Tweets dikirim, 20% decrease di bounce rate) — tetapi setiap one dari itu adalah sebuah engagement metric. Google’s own case study dari ini tidak pernah mentions SEO, pencarian organik, atau rankings di semua. Great hasil; wrong column.

Ecommerce PWA storefronts: sebuah pendek callout

PWA storefronts tambahkan sebuah few wrinkles worth naming, because mereka compound SPA risks. Client-side routing plus faceted navigation dapat generate dapat di-crawl-looking URLs itu semua resolve untuk yang sama shell, atau sebuah explosion dari parameter URLs. Cart dan checkout state lives client-side dan seharusnya tidak pernah gate dapat diindeks product konten. dan setiap product halaman harus independently kembalikan nyata, unique HTML — app-shell trap adalah sebagian besar expensive exactly where Anda memiliki paling halaman. fixes adalah yang sama ones dari ecommerce dan faceted-navigation SEO; PWA layer doesn’t perubahan them, ini hanya membuat SSR/prerender discipline more penting.

Bing dan PWAs

Worth sebuah line: Bing memiliki published no PWA-spesifik peringkat atau pengindeksan guidance. -nya webmaster guidelines adalah PWA-agnostic (umum crawlability, sitemaps, robots.txt, IndexNow), dan Microsoft’s extensive PWA docs adalah entirely tentang Edge install prompts, PWABuilder, dan Microsoft Store packaging — distribution dan installation, sebuah separate track dari web-search pengindeksan. So untuk Bing, default untuk ordinary JS-rendering crawlability guidance; there’s no PWA exception untuk learn.

intinya

PWA SEO adalah JavaScript/SPA SEO plus exactly two additions: ignore manifest sebagai sebuah SEO input (ini adalah untuk installability), dan configure service worker so ini tidak pernah traps Googlebot di sebuah stale atau offline cache. Get itu right dan sebuah PWA indeks exactly like apa pun lainnya well-dibangun situs — no bonus, no penalty, hanya yang sama aturan.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.