TECHNICAL · SEO GLOSSARY

Progressive Web App (PWA) SEO

The SEO considerations for Progressive Web Apps — web apps with offline capability, push notifications, and app-like UX — which often use service workers and client-side rendering patterns that require specific handling for Google indexing.

Definition

A Progressive Web App (PWA) is a web application that uses modern browser APIs (Service Worker, Web App Manifest, Push API) to deliver app-like experiences: offline access, home screen installation, background sync, and push notifications. From an SEO perspective, PWAs present specific challenges: (1) **Service worker intercept** — a service worker can intercept all HTTP requests and return cached responses, potentially serving stale HTML to Googlebot that differs from what the server returns or what users see; (2) **App Shell pattern** — many PWAs use an "App Shell" architecture where a minimal HTML shell is served and content is loaded dynamically — similar to client-side rendering, this can result in Googlebot receiving empty content on first fetch; (3) **Navigation interception** — PWAs often use client-side routing that intercepts `<a>` clicks and loads content via JavaScript rather than full page navigations, which can confuse crawlers; (4) **Manifest and splash screen** — the Web App Manifest (`manifest.json`) affects how the app appears when installed, but has no direct SEO effect.

Why it matters for SEO

A PWA with server-side rendering (Next.js, Nuxt, SvelteKit with PWA plugins) avoids most SEO issues — the SSR provides complete crawlable HTML and the service worker adds offline/install capability without interfering with crawling. A PWA built on a pure SPA with client-side rendering (Create React App + PWA template, Vue CLI + PWA plugin) has the standard SPA SEO problems compounded by service worker interception: Googlebot may receive a cached empty shell rather than real content. The audit distinguishes between PWA + SSR (acceptable) and PWA + CSR (critical rendering issue).

How DeepSEOAnalysis checks this

The audit checks for service worker registration in page HTML (`<script>navigator.serviceWorker.register(...)</script>`) and verifies that crawled pages return real content — not an empty shell — in the raw HTTP response. It checks for the Web App Manifest link in `<head>` (`<link rel="manifest" href="/manifest.json">`) and validates that core SEO signals (title, meta description, H1, structured data) are present in the server response rather than injected client-side. Pages with service workers but empty server HTML are flagged with PWA + SSR migration guidance.

Useful tools and resources

See how your site scores on Progressive Web App (PWA) SEO.

The free DeepSEOAnalysis audit checks progressive web app (pwa) seo and 100+ other signals. Full report, no signup.

Run a free audit →