We built a field service application for a utility company. Their technicians work in areas with spotty cellular coverage — rural substations, underground facilities, remote sites. A native app would need two codebases (iOS + Android) and complex offline sync. We built a PWA.
The result: one codebase, works offline for days, syncs when connectivity returns, installable on any device, and auto-updates without app store review cycles. Development cost: 40% of what native would have been. The technicians preferred it to the previous native app.
At Pillai Infotech, PWAs are our default recommendation for mobile-first applications unless native capabilities (AR, Bluetooth, background GPS) are required.
What PWAs Are (and Aren't) in 2026
A PWA is a web application that meets three criteria:
- Reliable: Loads instantly, works offline or on slow networks
- Fast: Responds to user interactions in under 100ms
- Installable: Lives on the home screen, launches full-screen, feels like a native app
Technically, a PWA requires: HTTPS, a web app manifest, and a service worker. But the real value comes from what you build with these foundations.
2026 PWA Capabilities
| Capability | Chrome/Edge | Safari/iOS | Firefox |
|---|---|---|---|
| Installable | Full | Full | Desktop only |
| Push notifications | Full | Full (iOS 16.4+) | Full |
| Offline support | Full | Full | Full |
| Background sync | Full | No | No |
| File system access | Full | Limited | No |
| Badging (app icon badge) | Full | Full | No |
The big 2024-2025 milestone: iOS push notifications for PWAs. This was the last major gap between PWA and native. With iOS 16.4+, PWAs can send push notifications on iPhones — the feature that blocked PWA adoption for many consumer apps.
Offline-First Architecture
Caching Strategies
- Cache First: Serve from cache, update in background. Best for: static assets (CSS, JS, images), fonts. Fastest perceived performance.
- Network First: Try network, fall back to cache if offline. Best for: API calls, real-time data. Ensures freshest content when online.
- Stale While Revalidate: Serve from cache immediately, update cache from network in background. Best for: content that changes but stale data is acceptable (news feeds, product listings).
Offline Data with IndexedDB
For complex offline scenarios (forms, queue management, offline editing), use IndexedDB with a sync queue:
// Queue mutations when offline, sync when online
async function submitForm(data) {
if (navigator.onLine) {
return await fetch('/api/submit', { method: 'POST', body: JSON.stringify(data) });
}
// Offline: queue in IndexedDB
const db = await openDB('app', 1, {
upgrade(db) { db.createObjectStore('syncQueue', { autoIncrement: true }); }
});
await db.add('syncQueue', { url: '/api/submit', data, timestamp: Date.now() });
// Register for background sync (Chrome)
if ('serviceWorker' in navigator && 'SyncManager' in window) {
const reg = await navigator.serviceWorker.ready;
await reg.sync.register('sync-queue');
}
}
PWA vs Native: The Decision Framework
| Requirement | PWA | Native | Recommendation |
|---|---|---|---|
| Offline CRUD | Excellent | Excellent | PWA (lower cost) |
| Push notifications | Good | Excellent | PWA (sufficient for most) |
| Camera/AR | Basic | Full | Native (advanced features) |
| Bluetooth/NFC | Chrome only | Full | Native |
| App store presence | Via TWA/PWABuilder | Native | Depends on discovery strategy |
| Development cost | 1x | 2-3x | PWA (one codebase) |
Our rule of thumb at Pillai Infotech: If your app doesn't need Bluetooth, advanced AR, or background GPS tracking, start with a PWA. You can always add native wrappers (Capacitor, TWA) later for app store distribution.
Framework PWA Support
- Next.js: next-pwa plugin or @serwist/next. Good service worker integration.
- Nuxt: @vite-pwa/nuxt — excellent, near-zero config. Our recommendation for PWAs.
- SvelteKit: @vite-pwa/sveltekit — similar to Nuxt's integration.
- Angular: @angular/pwa — built-in schematics, opinionated and solid.
- Plain: Workbox (Google's library) — works with any framework. Maximum control.
For choosing between frameworks, see our Next.js vs Nuxt comparison and full-stack trends guide.
Frequently Asked Questions
Can PWAs be published on app stores?
Yes. Google Play accepts PWAs wrapped as Trusted Web Activities (TWA). Microsoft Store accepts PWAs directly. Apple App Store accepts PWAs via Capacitor (adds a thin native wrapper). PWABuilder.com automates the packaging process for all three stores.
Do PWAs work offline on iOS?
Yes, since iOS 11.3. Service workers cache assets and data for offline use. The limitation: iOS clears service worker cache after ~7 days of inactivity. For apps used regularly, this isn't an issue. For rarely-used apps, consider native.
Are PWAs SEO-friendly?
Yes — PWAs are web pages. Search engines crawl and index them like any website. With SSR or SSG, your PWA has the same SEO capabilities as a traditional website. This is a significant advantage over native apps, which aren't indexed by search engines.
How do PWAs handle updates?
Service workers check for updates on each visit. When a new version is detected, it's downloaded in the background. You control when the new version activates — immediately or on next navigation. No app store review, no user action required.
What's the storage limit for PWA offline data?
Chrome: up to 80% of available disk space. Safari: ~1GB per origin (evicted after 7 days of inactivity). Firefox: up to 2GB per origin. For most applications, these limits are more than sufficient. For data-heavy offline apps, use IndexedDB with a sync strategy.
Should I use Capacitor or TWA for app store distribution?
TWA for Android-only, play store distribution (zero native code). Capacitor if you need native APIs or iOS App Store distribution. Capacitor wraps your PWA in a native shell and provides plugins for camera, biometrics, and other native features.