SEO glossary
What is a PWA?
Learn what PWA means as an implementation acronym—web manifest fields, service worker registration, HTTPS requirements, and the audit checklist teams use to ship installable web apps.
Definition
PWA (Progressive Web App) is the industry acronym for a standards-based installable web app stack: HTTPS, a valid web app manifest, a registered service worker, and meetable Lighthouse criteria—implemented via concrete files and registration code rather than a single framework feature.
PWA: an implementation acronym, not a product category
PWA abbreviates Progressive Web App, but in engineering standups it means something more concrete than a vision statement: a checklist of shippable artifacts—manifest.webmanifest, sw.js, HTTPS, icons—that unlock install prompts in Chrome, Edge, and Samsung Internet.
This entry covers the acronym from an audit and implementation angle: which files to create, how to register them, what Lighthouse inspects, and where teams break SEO while chasing the install badge. For the strategic “what capabilities does a Progressive Web App unlock?” narrative, see the Progressive Web App glossary page.
Minimum viable PWA stack
| Requirement | Implementation artifact |
|---|---|
| Secure origin | Valid TLS on production domain |
| Manifest | JSON linked via <link rel="manifest"> |
| Service worker | navigator.serviceWorker.register('/sw.js') |
| Icons | 192×192 and 512×512 PNG (maskable recommended) |
| Display mode | standalone or fullscreen in manifest |
Missing any installability pillar blocks “Add to Home Screen” on most platforms.
Web app manifest field reference
{
"name": "Crawlox Site Audit",
"short_name": "Crawlox",
"start_url": "/?utm_source=pwa",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#0f172a",
"icons": [
{ "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" }
]
}
SEO-relevant notes:
name/short_nameaffect install UI—not Google titles. Keep<title>tags authoritative for search snippets.start_urlshould resolve to indexable content or redirect to it; avoidnoindexon default launch URL.scopelimits which paths the installed app controls—mis-scoping can trap users off crawlable sections.
Service worker registration checklist
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js');
});
}
Inside sw.js, define fetch strategy explicitly:
| Request type | Recommended strategy | SEO risk if wrong |
|---|---|---|
| HTML documents | Network-first | Cache-only shell → thin indexed pages |
| Static assets (JS/CSS) | Cache-first + revision hash | Low |
| Images | Stale-while-revalidate | Low if alt text in HTML |
| API JSON | Network-only | Bots may not need API if SSR |
Never return offline.html for navigation requests without attempting network—crawlers do not execute your retry UI.
Lighthouse PWA audit mapping
Chrome Lighthouse “Installable” category roughly maps to:
- Served over HTTPS.
- Registers a service worker controlling page and
start_url. - Manifest includes
name,icons,start_url,display,theme_color. start_urlresponds 200 when offline (after precache)—test carefully for SEO side effects.
Passing audits proves technical installability—not business readiness. Ship only after HTML parity tests pass.
Pre-deploy verification script (conceptual)
□ manifest validates in Web App Manifest validator
□ service worker activates without console errors
□ curl -A Googlebot homepage → full HTML body (not offline shell)
□ start_url matches canonical preference
□ icons exist and return 200
□ theme-color matches brand (UX, not SEO)
□ Cache-Control on HTML ≠ immutable long-term cache
Automate manifest JSON schema tests in CI.
Framework shortcuts
| Stack | PWA wiring |
|---|---|
| Vite PWA plugin | Generates manifest + injects registerSW |
| Next.js | next-pwa or custom worker in public/ |
| Nuxt | @vite-pwa/nuxt module |
| Workbox | Precache recipes with revision manifests |
Generated workers still need human review of navigation route rules.
PWA implementation mistakes that hurt SEO
- App shell only in cache —
/blog/post-1serves empty#appoffline. - Skipping SSR on marketing routes — installable but invisible to search.
- Canonical drift —
start_urlquery params indexed separately; use consistent canonical tags. - Blocking robots on
sw.js— unnecessary; allow fetch so browsers install correctly. - Long
max-ageon HTML at CDN — stale meta tags after deploy; pair with Cache-Control discipline.
PWA vs native wrapper (SEO clarity)
Capacitor and Cordova wrap WebViews—the indexed web URLs remain your SEO surface. Store listings are separate. Do not noindex the web app because a native build exists.
Acronym disambiguation
| Term | Meaning in conversation |
|---|---|
| PWA (this page) | Files, audits, registration code |
| Progressive Web App | Capability model and UX philosophy |
| TWA (Trusted Web Activity) | Android Chrome tab showing your PWA full-screen |
| SPA | Architecture—orthogonal to PWA |
Maintenance cadence
- Bump
CACHE_VERSIONinsw.json deploy; purge old precaches. - Re-run Lighthouse after manifest icon changes.
- Monitor Search Console indexed pages after worker strategy changes.
- Document which routes are network-first in runbooks.
How Crawlox helps with PWA implementation audits
Crawlox requests pages without service worker interception—mirroring crawler behavior. After PWA rollout, compare Crawlox HTML snapshots to browser DevTools with worker disabled. Mismatches reveal worker strategies serving incomplete documents to bots. Fix network-first rules for HTML before chasing Lighthouse install badges.
Related terms
Frequently asked questions
What files are required for a PWA?
At minimum: HTTPS, a manifest.json (or link rel=manifest), a registered service worker JS file, and icons referenced by the manifest. Frameworks may generate these automatically.
What Lighthouse score makes a PWA?
Lighthouse has installability checks (manifest, service worker, HTTPS) rather than a single PWA score. Passing installability audits is the practical bar.
Can I pass PWA audits without hurting SEO?
Yes. Register workers for assets, use network-first for HTML documents, and keep SSR content in the initial response. Avoid offline-only shells for crawlable URLs.
What is the difference between PWA and AMP?
AMP is a restricted HTML format for fast mobile documents. PWA is a set of APIs layered on normal websites. They solve different problems and are not interchangeable.
Do PWAs need to be SPAs?
No. Multi-page SSR sites can ship a manifest and service worker. The acronym describes implementation artifacts, not React vs server templates.
References
Explore authoritative guidance and frameworks related to pwa.
Explore every glossary definition
Return to the glossary to search by term, alias, starting letter, or category.