Progressive Web Apps — When and When Not to Build One
A PWA isn't a compromise. Done right, it beats native for most use cases. Here's what a PWA actually gives you, where it falls short, and how to decide if it's right for your product.

Progressive Web Apps (PWAs) have been "the future" for a decade. In 2026, that future is finally here — for the right use cases.
A PWA is a web app that behaves like a native app: installable, offline-capable, push-notification-enabled. It's still a website, but with superpowers.
What a PWA gives you
Installability — Users can install your web app to their home screen
Offline support — Service workers cache assets and data
Push notifications — Web push works on Android and iOS
Fast loads — Cached assets load instantly on repeat visits
Cross-platform — One codebase, all devices
Where PWAs shine
Content-heavy apps — News, blogs, docs
E-commerce — Product browsing, cart, checkout
Utility apps — Calendars, note-taking, task managers
Internal tools — Dashboards, admin panels
Marketing-led products — SEO + mobile presence
Where PWAs fall short
Heavy native features — Bluetooth, NFC, complex camera, background location
High-performance games — WebGL is close, but still not native
iOS quirks — Push notifications and install prompts work but are limited vs. native
App store presence — PWAs don't live in stores (though this is changing)
Technical building blocks
Manifest (manifest.json) — Defines app name, icons, theme color, display mode
Service worker — Caches assets, intercepts network requests
Push notifications — Web Push API + a push service (Firebase, OneSignal)
HTTPS — Required for service workers
Offline strategy
Not all content needs to be offline. Prioritize:
- App shell (nav, layout, static assets)
- Recently viewed content
- User data (drafts, cart, preferences)
Use cache-first for static, network-first for fresh data, stale-while-revalidate for hybrid.
Install and update
- Show install prompt after engagement (not immediately)
- Use custom install UI (not the default browser prompt)
- Handle updates gracefully (show "new version available" banner)
- Test updates on iOS and Android separately
Common mistakes
- Caching everything (bloats storage)
- Caching nothing (defeats the point)
- No install prompt
- No update strategy
- Ignoring iOS limitations
- Testing only on Android
Key takeaways
- PWAs are production-ready for content, commerce, utilities
- Not ideal for heavy native features or high-perf games
- Manifest + service worker + HTTPS are the foundation
- Cache strategically, not everything
- Test on both iOS and Android
Further reading
About the author
Senior Web Engineer →Senior Web Engineer · Quality Assurance Labs



