When a client asks "should we build a native app or a web app," that's no longer the simple question it used to be in 2026. Progressive web apps (PWAs) have come a long way on installability, offline support, push notifications, and hardware API access. But iOS/Safari limitations still stand, and some tightened further over the past year. This piece sorts out which app types PWA is still the right call for.
What Modern PWAs Can Do
Two technologies form a PWA's foundation: the Web App Manifest (a JSON file describing home-screen install, icon, and appearance) and the service worker (a background script that intercepts and caches network requests). Together, they deliver: installability (adding to the home screen and launching like a native app), offline support (cached content reachable without a connection), push notifications, and limited access to filesystem/hardware APIs (camera, location, share targets).
A basic service worker registration still takes just a few lines:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js').then((registration) => {
console.log('Service worker registered:', registration.scope);
});
}The manifest file is what signals to the browser "this is an installable app":
{
"name": "Example App",
"short_name": "Example",
"start_url": "/?source=pwa",
"display": "standalone",
"background_color": "#fdfcf9",
"theme_color": "#123338",
"icons": [
{ "src": "/icons/192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/512.png", "sizes": "512x512", "type": "image/png" }
]
}The display: standalone setting makes the app launch without a browser chrome, like a native app — one of the details that makes it hardest for users to distinguish a PWA from native in daily use.
Where iOS/Safari Still Holds PWAs Back
On Android, PWAs now deliver an experience very close to native. On iOS/Safari, the picture is different:
- Push notifications: Supported via the Push API and Notification API on iOS 16.4+, with one critical constraint — they only work when the PWA is installed to the home screen; a browser tab can't receive push even with permission granted.
- EU restriction: Under the Digital Markets Act, Apple removed standalone PWA support in the EU; PWAs in EU countries now open in Safari tabs with no push support.
- Storage limits: Safari imposes a hard 50MB cap on Cache API storage and aggressively evicts cached data when device storage runs low.
- No background sync: iOS Safari doesn't support background sync, which makes syncing offline changes harder.
The practical effect: once you factor in the multi-step install process, the reachable audience for push notifications is roughly 10–15x smaller than native app push. If push is a critical re-engagement channel for a business, that gap isn't one you can ignore.
Install Friction and Discoverability
A PWA's biggest disadvantage is not being listed on the App Store or Google Play — users don't "discover" a PWA, they reach it via a link and manually add it to their home screen. That extra step meaningfully lowers install rates versus native apps. App-store discoverability still heavily favors native apps, which is a real disadvantage specifically for consumer apps that rely on organic discovery.
PWA vs Native vs Capacitor/Tauri Wrappers
Clarifying the difference between the three paths makes the decision easier:
Criterion | PWA | Capacitor/Tauri Wrapper | Full Native |
|---|---|---|---|
Development cost | Lowest (single codebase) | Medium (single codebase + native bridge) | Highest (separate per platform) |
App store distribution | None (restricted on iOS) | Yes | Yes |
Hardware API access | Limited | Broad (via native plugins) | Full |
Push notifications (iOS) | Restricted, install-gated | Native-level | Native-level |
Update speed | Instant (deploy = update) | May need app-store review | Requires app-store review |
For more on the desktop version of this decision, see our Tauri vs Electron comparison — similar logic applies to mobile wrappers.
A Decision Framework by App Type
This simple framework points most projects in the right direction:
- Content/information-driven apps (news, blog, e-commerce storefront): PWA is nearly always the right call. A fast PWA tuned for Core Web Vitals reaches a wider audience with less friction than native, for both SEO and user experience — it can be indexed and searched like a normal web page, while a native app is undiscoverable outside the app store.
- Consumer apps where push is critical (social, messaging): Go native or a Capacitor/Tauri wrapper; iOS push restrictions can cause real business loss here.
- Enterprise/internal tools: PWA is usually ideal — users already arrive via a link, there's no app-store review to wait on, and updates roll out instantly.
- Apps needing heavy hardware access (camera processing, background location): Full native or a strong wrapper is required; a PWA's hardware API access still falls short for these scenarios.
My take: trying to settle "PWA or native" with one universal answer is the wrong frame. The real question is "which feature is non-negotiable for this app," and the answer follows from there.
Beyond that, a hybrid approach is increasingly common: a product launches as a PWA, then moves to the app store via a wrapper like Capacitor once the user base grows and push or deep hardware access becomes a genuine need. That's a reasonable strategy — it keeps early development speed while deferring the cost of working around platform limits until the product has matured. You don't have to commit early; what matters is making sure today's constraints don't box you in tomorrow.
If you want to evaluate PWA performance against Core Web Vitals, see our Core Web Vitals checklist; to nail down your rendering strategy, check our SSR vs SSG vs ISR breakdown. Still deciding on a framework? Our Astro vs Next.js comparison is a useful companion.
PWA-or-Not Checklist
1. Is push notification a critical feature? (If yes, weigh the iOS restrictions)
2. Do you need app-store discoverability?
3. Do you need deep hardware access like camera or location?
4. Is this an enterprise/internal tool, or a consumer app?
5. Does instant deployment (no app-store review) matter to you?If most of your answers are "no," a PWA is probably the more efficient path. For more web development content, follow our Web Development section.
Frequently Asked Questions
Do PWAs actually work on iOS in 2026?
Yes, with limits: service workers and offline mode work, and push notifications are supported on iOS 16.4+ for PWAs installed to the home screen. In the EU, standalone PWA support was removed under Apple's DMA compliance, so PWAs there open in Safari tabs without push.
Is PWA push as effective as native app push?
No. Because of install friction and iOS restrictions, the reachable audience runs roughly 10–15x smaller than native push. Factor that gap in if push is critical to your product.
Does a PWA or Capacitor make more sense for a small team?
If you don't need hardware access or an app-store presence, a PWA delivers faster with less development overhead. If you need to be on the app store, Capacitor meets that need while keeping a single codebase.
Is moving from PWA to native easy?
You can carry most of your web-side business logic and UI over to the app store via a wrapper like Capacitor — a far cheaper middle step than writing native from scratch.


