PWA vs native app: do you really need the app stores?
A progressive web app is a website that can be installed to the home screen, work offline and, on supported platforms, send push notifications. A native app is built for iOS and Android and distributed through the app stores, whether written in Swift and Kotlin or with a cross-platform framework. The gap between them has narrowed, but it has not closed.
The short answer
Start with a progressive web app when users mainly need forms, content, dashboards or ordering, and you want one codebase that works instantly from a link. Choose a native or cross-platform app when you need deep device features, reliable background work, or a presence in the App Store and Google Play. Many products begin as a PWA and add a store app once demand is proven.
PWA vs Native app at a glance
| Criterion | PWA | Native app |
|---|---|---|
| Installation | From the browser, no store needed | Through the App Store and Google Play |
| Distribution | Shared by link and found through search | Store listing and store search |
| Updates | Instant on next load | Store review and user updates |
| Device access | Camera, location and more; limits vary by browser | Full access to platform APIs |
| Push notifications | Supported; on iOS only once installed to home screen | Fully supported on both platforms |
| Background tasks | Limited, especially on iOS | Background sync, location and audio supported |
| Codebase | One web codebase for every device | One per platform, or one with React Native or Flutter |
| Best fit | Portals, booking, ordering, internal tools | Consumer apps, hardware integration, heavy offline use |
Choose PWA when
- Users arrive from search, email or social links and should not have to install anything first
- The app is mostly forms, content, dashboards or checkout
- You want to validate the idea before committing to store releases
- Staff use it internally and you want to avoid store distribution entirely
- Updates need to reach every user immediately
Choose Native app when
- You need Bluetooth, NFC, background location or other APIs browsers restrict
- Being found in the App Store or Google Play matters to your growth
- Reliable push notifications on iOS are central to the product
- Users work offline for long periods with large amounts of data
- You need in-app purchases or deep integration with widgets, health data or wearables
Where PWAs work well
For customer portals, booking systems, ordering flows and internal tools, a PWA built with Next.js or React often covers everything users need. It loads from a link, can be indexed by search engines, installs to the home screen and caches data for spotty connections. You maintain one codebase and ship updates without waiting for store review.
Where native still wins
Browser support for device features is uneven, and iOS Safari in particular limits background work and some hardware APIs. Web push on iPhone only works after the user adds the app to the home screen, which many never do. If the product depends on these features, or on being discovered in the app stores, a native or cross-platform app is the honest recommendation.
A staged approach
A practical path is to launch as a PWA with a shared API, measure how people use it, then add a React Native app that talks to the same backend. Little work is wasted because the API, business logic and much of the TypeScript code carry over.
Frequently asked questions
Can a PWA be listed in app stores?
Google Play accepts PWAs packaged as Trusted Web Activities. Apple's App Store generally expects an app with native functionality, so a thin website wrapper risks rejection.
Do PWAs work offline?
Yes, with a service worker that caches pages and data. How much works offline depends on how carefully caching and data syncing are designed.
Is a PWA cheaper than a native app?
Usually, because one web codebase serves every device and there is no store release process. The saving shrinks if you later need a native app anyway.
Still deciding?
Tell me about your product, users and constraints, and I will recommend the option that fits, even if it is not the one I use most.
Ask for a recommendation