A Progressive Web App (PWA) is a website that can be installed on a phone or desktop, runs offline and sends push notifications. You build it once with web technology and it reaches Android, iOS, Windows, macOS and ChromeOS. For many businesses that is enough, and it costs far less than maintaining separate native apps.
What makes a site a PWA
Three pieces turn a normal site into a PWA:
- HTTPS. Service workers only run on secure origins.
- A web app manifest. A JSON file with the app name, icons, theme color and start URL.
- A service worker. A script that sits between your page and the network and decides what to cache.
{
"name": "Acme Orders",
"short_name": "Orders",
"start_url": "/?source=pwa",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#3154ff",
"icons": [{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }]
}
Caching strategies that work
The service worker chooses a strategy per request type:
- Cache first for fonts, icons and versioned JavaScript. These files never change under the same URL.
- Network first for API data where freshness matters, with a cached copy as fallback when the connection drops.
- Stale while revalidate for content such as product images, where an old copy is acceptable for a moment while a new one downloads.
Libraries like Workbox implement these patterns, and Next.js, Vite and Angular have plugins that generate the service worker for you. Version your cache names, delete old caches on activation and show users a message when a new version is ready. A stuck service worker that serves a stale app is the most common PWA bug.
What works on each platform
On Android with Chrome, installation, push notifications, background sync and shortcuts work well. On iOS, Safari supports installation through "Add to Home Screen" and, since iOS 16.4, web push for installed apps. iOS still limits background execution and offers fewer hardware APIs than Android. Check your required features, such as Bluetooth, NFC or background location, against current browser support before you commit. The site caniuse.com and the MDN compatibility tables list this by API.
When a PWA is the right choice
- You run a content, commerce or booking site and want repeat visits and an app icon on the home screen.
- Your team already builds in React, Vue or Angular and has no native developers.
- You want users to try the product without an app store download.
- Your budget does not cover two or three separate native codebases.
When to build native
Choose native or a cross-platform framework such as Flutter or React Native when you need deep hardware access, heavy 3D graphics, reliable background tasks or presence in the app stores as a discovery channel. Games, fitness trackers and apps that depend on Bluetooth devices usually fall in this group.
Measure the result
Track install rate, repeat visits and conversion for PWA users against browser users. Run Lighthouse to check installability and performance. A well-built PWA loads its shell from cache in well under a second on repeat visits, which shows up in engagement numbers.
A starting plan
- Move the site to HTTPS and make it responsive.
- Add the manifest and icons, including a maskable icon for Android.
- Register a service worker that caches the app shell and an offline fallback page.
- Add push notifications only after users have a reason to opt in.
- Test on real iOS and Android devices.
Common questions
Can a PWA appear in the app stores?
Yes. Google Play accepts PWAs wrapped in a Trusted Web Activity, and tools such as Bubblewrap and PWABuilder generate the package. Microsoft Store also lists PWAs. Apple's App Store requires a native wrapper, for example through Capacitor, and it expects the app to offer more than a repackaged website.
Do PWAs work offline for every feature?
Only the features you design for offline use. A service worker can serve cached pages and queue form submissions for later with Background Sync, but anything that needs live server data, such as payments or inventory checks, needs a connection. Decide which tasks matter offline, show a clear offline banner and sync changes when the connection returns.
How do PWAs affect SEO?
A PWA is a normal website to search engines, so the usual rules apply: crawlable URLs, server-rendered content and fast pages. Faster repeat loads and higher engagement can help indirectly. Avoid building the whole app as a client-rendered shell with no content in the initial HTML, since that hurts indexing.
How much does it cost compared with a native app?
A PWA built on an existing website typically costs a fraction of building and maintaining separate iOS and Android apps, because one codebase serves every platform and updates ship instantly without app store review. Native apps cost more but offer deeper device access. We compare both options with a quick feature checklist during a consultation.
How do I test a PWA?
Run the Lighthouse PWA checks, use the Application panel in Chrome DevTools to inspect the manifest and service worker, and simulate offline mode in the Network panel. Then install the app on real iPhone and Android devices, since emulators miss platform-specific behavior.
We build PWAs for retail, healthcare and service businesses. If you want to know whether a PWA suits your product, book a free consultation and we will compare it against native options for your case.

