PWA vs React Native: When a Web App Is Enough
PWA vs React Native in 2026: what progressive web apps can and can't do on iOS and Android, a capability table, and when a web app is genuinely enough.
Full-Stack, Mobile & AI Engineer
"Why not just build a PWA?" is a fair question. A progressive web app costs less, ships without store review, and updates instantly. For some products it's the smartest choice available. For others it quietly caps retention, because the features that keep people coming back are exactly the ones browsers restrict, especially on iPhones.
This is a practical React Native vs PWA comparison for 2026: what a PWA can really do on iOS and Android today, where React Native pulls ahead, and a short test to tell which one your product needs.
Key takeaways
- A PWA is enough for content, tools and occasional-use products that don't need deep device access or App Store presence.
- On iOS, PWAs can send push notifications (since iOS 16.4) but only after the user adds them to the Home Screen, which many never do.
- Web Bluetooth, background location and most background tasks aren't available to PWAs on iOS.
- React Native wins for habit-forming apps, device-heavy products, offline-first field work and anything that should be discoverable in the App Store.
- You don't have to choose forever: Expo can build the web version from the same React Native codebase.
What a PWA is (and isn't)
A progressive web app is a website with extras: a web app manifest (so it can be installed with an icon), a service worker (for offline caching and push) and responsive design. It runs in the browser engine, so it can only do what the browser allows. On iOS, every browser uses Apple's WebKit, so Safari's limits apply to all of them.
The capability table
| Capability | PWA on Android (Chrome) | PWA on iOS (WebKit) | React Native app |
|---|---|---|---|
| Install with an icon | Yes, with an install prompt | Yes, via Share → Add to Home Screen | Yes, from the stores |
| Store listing | Possible via Trusted Web Activity on Google Play | No | Yes, App Store and Google Play |
| Push notifications | Yes | Yes, only when installed to the Home Screen (iOS 16.4+) | Yes |
| Offline use | Yes, via service worker | Yes, with tighter storage limits | Yes, full control |
| Camera | Yes | Yes | Yes, plus advanced pipelines |
| Bluetooth devices | Web Bluetooth (Chrome) | No | Yes |
| Background location and tasks | Very limited | No | Yes, within OS rules |
| Payments | Any web provider; Google Pay | Any web provider; Apple Pay on the web | Native IAP, Apple Pay, Google Pay, providers |
| Updates | Instant | Instant | Store releases plus over-the-air JavaScript updates |
| Home-screen widgets, watch apps | No | No | Yes, with native extensions |
Where PWAs genuinely win
- Speed of change. Deploy ten times a day, no review queue.
- Reach without install. A link opens the product. No store page, no download.
- SEO. Public pages can rank in Google, which an app can't.
- Cost. One web codebase, no device testing matrix, no store accounts.
If your product is a dashboard, a booking form people use twice a year, a content site or an internal tool, those advantages outweigh everything else.
Where React Native pulls ahead
- Retention on iPhone. Push notifications that reach every user, not only those who installed the web app to their Home Screen, are a big deal for any habit-based product.
- Device features. Bluetooth, background location, health data, advanced camera work and reliable offline storage.
- Trust and discovery. Many users look for an app in the store, especially in fitness, finance and dating.
- Platform polish. Native navigation, gestures, haptics and system UI that feel at home on each OS.
From the field: SuraSole's smart-insole app streams pressure data from both feet over Bluetooth Low Energy and reconnects in the background, and LYOS builds trip stories from background location. Neither could run as a PWA on an iPhone today, because WebKit doesn't expose Bluetooth or background location to web apps.
PWA pitfalls on iPhone that catch teams out
If you do go the PWA route, plan around these:
- No install prompt. Safari doesn't show an "Install" banner. Users have to find Share → Add to Home Screen, so you'll need on-page instructions, and many people still won't do it.
- Push only after install. Notifications only work for users who installed the web app, and they must grant permission from inside it. Your reach is a fraction of an app's.
- Storage can be cleared. Browsers can evict website data under storage pressure or after long inactivity, so treat on-device data as a cache and keep the source of truth on your server.
- Background work stops. When the PWA isn't open, it can't sync, track or process anything, apart from handling incoming push.
- Every iOS browser is Safari underneath. Telling users to "use Chrome" on an iPhone doesn't change anything, because all iOS browsers use WebKit.
None of these is a deal-breaker for a tool people open deliberately. Together, they're why habit-based products usually end up as apps.
A five-question test
Answer yes or no:
- Do users need it several times a week?
- Does it need Bluetooth, background location, health data or heavy offline use?
- Will most users be on iPhones?
- Do push notifications drive your core metric?
- Do customers expect to find you in the App Store?
Mostly "no": a PWA is probably enough. Mostly "yes": build a React Native app. Mixed: start with React Native and Expo, which can also build the web version, so you're not maintaining two products.
The hybrid route
You can mix the two approaches deliberately:
- React Native app plus a web build from the same Expo codebase, for users who won't install.
- PWA first, app later, keeping your API and business logic separate from the UI so the app can reuse them.
- Trusted Web Activity on Android to list a PWA on Google Play, while building a native-feeling iOS app with React Native.
FAQ
Can a PWA replace a native app?
For content, tools and occasional-use products, often yes. For apps that need Bluetooth, background location, reliable push on iPhone, App Store presence or deep offline use, no. On iOS, PWAs only get push notifications after being added to the Home Screen.
Do PWAs work on iPhone?
Yes, in Safari and other iOS browsers, which all use WebKit. They can be added to the Home Screen and, since iOS 16.4, receive push notifications once installed. Features like Web Bluetooth and background location aren't available.
Is React Native better than a PWA?
Neither is better in general. React Native is better for frequent, device-heavy or store-discovered apps. A PWA is better for SEO-driven, occasional-use and fast-changing products. Many teams use both, building the web version from the same Expo codebase.
Can I put a PWA on the Google Play Store?
Yes. Using a Trusted Web Activity, you can package a PWA as an Android app and publish it on Google Play. The App Store has no equivalent, and Apple rejects apps that are only a repackaged website.
Next steps
If you're weighing a PWA against a React Native app, send me your core flow and the device features you need. I'll tell you honestly whether the web is enough. Get in touch, or see how I work as a React Native developer.
Sources
- Progressive web apps, MDN
- Web Push for Web Apps on iOS and iPadOS, WebKit blog
- Trusted Web Activity, Chrome for Developers
- App Review Guidelines (4.2 minimum functionality), Apple
- Developing for the web with Expo, Expo
Related
React Native for Web in 2026: When One Codebase Is Enough
React Native for Web in 2026: how Expo builds iOS, Android and web from one codebase, where it shines, where Next.js wins, and the gotchas to plan for.
React Native Alternatives in 2026: Capacitor, Ionic, Lynx, MAUI and More
The real React Native alternatives in 2026: Flutter, Kotlin and Compose Multiplatform, Capacitor, Lynx, .NET MAUI, native and more, compared honestly.
React Native vs Native iOS and Android: When Cross-Platform Is the Wrong Call
React Native vs native Swift and Kotlin: where cross-platform saves real money, the cases where native wins, and the hybrid most teams end up with.
