An installable progressive web app (PWA) is a web application that users can add to their home screen and launch like a native app, without downloading it from an app store. PWAs use a single codebase with web app manifests and service workers to deliver offline support, push notifications, and standalone UI. Unlike native apps built separately for iOS and Android, PWAs run in the browser and work across all platforms.
Should you build a PWA or a native app? This is one of the biggest tech choices your team will make. PWAs have matured into a real alternative to native apps. They cut costs and speed up launches — but only for the right use cases.
This guide helps you decide. You'll learn when PWAs win, when native apps are the better pick, and how to apply a simple decision framework to your project.
PWA vs Native App: Side-by-Side Comparison
Before diving into details, here's a quick look at how PWAs and native apps stack up:
| Feature | PWA | Native App |
|---|---|---|
| Codebase | One (HTML, CSS, JS) | Separate per platform (Swift, Kotlin) |
| Distribution | URL — no app store needed | App Store / Google Play |
| Updates | Instant, server-side | Requires user download |
| Dev cost | 40-60% less than dual native | Higher (two codebases) |
| Hardware access | Limited (no Bluetooth, NFC) | Full (GPS, camera, sensors) |
| Offline support | Service workers | Built-in |
| Background tasks | Restricted by browser | Unrestricted |
| Push notifications | Yes (iOS 16.4+) | Yes |
| App store presence | No (unless wrapped) | Yes |
| SEO | Fully indexable | Not indexable |
| Install friction | Low — try before install | Must download first |
| OS integration | Limited (no widgets) | Full (widgets, Siri, etc.) |
Need a deeper look at iOS-specific gaps? See our complete guide to PWA iOS limitations and Safari support.
What Makes a PWA Installable?
An installable PWA isn't just a responsive website. It meets specific browser requirements that let users add it to their home screen. If you're new to PWAs, start with our guide on what is a progressive web app.
To become installable, a PWA needs four things:
1. A Web App Manifest
This JSON file tells the browser how the app should look when installed. It includes the app name, icons, start URL, display mode, and theme colors. Use our PWA manifest generator to create one quickly, and the PWA icon generator for install-ready icons.
2. A Service Worker
This JavaScript file runs in the background. It handles caching, offline support, and push notifications. Without it, the browser won't allow installation.
3. HTTPS
All PWAs must load over HTTPS. Browsers block installation of insecure web apps — no exceptions.
4. User Engagement
Modern browsers check that users have visited your site more than once and spent time on it. Only then does the browser show an install prompt.
Once installed, the PWA opens in standalone mode — no browser bar, no tabs. It looks and feels like a native app.
When to Choose a PWA
PWAs shine in six scenarios:
Content-First Apps
News sites, blogs, e-commerce catalogs, and docs work great as PWAs. The focus is on delivering content fast. Offline caching helps users read without a connection. The Washington Post's PWA loads in 80ms on repeat visits.
Rapid Iteration
Startups testing product-market fit need speed. PWAs let you deploy updates instantly — no app store review. Fix a bug at 10 AM and every user has the fix by 10:01 AM. This also works for internal tools, dashboards, and beta products.
Multi-Platform Reach on a Budget
One codebase serves iOS, Android, and desktop. This costs 40-60% less than building two native apps. Small teams (under 10 developers) get the most benefit. It also works well in emerging markets where users have diverse devices.
SEO-Driven Acquisition
PWAs are fully indexable by Google. Native apps buried in app stores are not. If search drives your growth — B2B SaaS, educational platforms, service directories — a PWA lets users find you through Google and use the app immediately.
Low-Friction Onboarding
Users can try your PWA through a link before they install. No app store download. No 200MB install. This matters for low-commitment services, social sharing, and users in markets where storage space is tight.
Push Notifications Without an App Store
PWAs support push notifications across desktop and mobile. You can re-engage users when the app is closed — for order updates, news alerts, appointment reminders, or SaaS notifications. No app store overhead required.
When Native Apps Win
Be honest about these limits. Native apps remain the better choice in these cases:
Hardware Access
Need Bluetooth for fitness trackers? NFC for payments? AR camera features? Background location tracking? These require native. Web Bluetooth and Web NFC exist but have poor browser support.
Peak Performance
3D games, video editing, real-time collaboration with low latency, and complex animations at 60fps+ all need native. Direct GPU access and compiled languages (Swift, Kotlin) outperform JavaScript.
Deep OS Integration
Widgets, live activities, Siri shortcuts, system-level notifications with rich actions, and background app refresh — none of these work in PWAs. Users expect these features from apps in certain categories.
App Store Discovery
If your business model depends on app store rankings, featuring, or in-app purchases through platform payment systems, you need a native app. Many iOS users only discover apps through the App Store.
Complex Offline Needs
Offline maps, large media libraries, and database-heavy apps are easier to manage natively. Service workers can handle simple offline scenarios. Large-scale offline data sync is harder in the browser.
Platform-Specific Design
Some apps must follow iOS Human Interface Guidelines or Material Design to the letter. PWAs offer one consistent UI. That's a strength — until users expect platform-native patterns and your app feels "wrong."
The Hybrid Approach
Many companies build both. Use each for its strengths.
PWA as the entry point: Users find you through search or sharing. They try the web app instantly. Power users install the PWA. Those who need advanced features download the native app.
Native for premium features: Hardware access, maximum performance, platform integrations, and features that only work natively.
Real-World Examples
- X (Twitter): X Lite (PWA) works well on slow networks. The native app offers the full feature set.
- Starbucks: The PWA handles menu browsing and orders offline. It's 99.84% smaller than the native iOS app.
- Spotify: The web player covers casual listening. Native apps add offline downloads and high-quality audio.
When to go hybrid: You have resources for both platforms. Different user groups have different needs. You want to test features as a PWA before building them natively. Both SEO and app store presence matter.
Decision Framework
Use these four steps to choose:
Step 1: Check Core Requirements
Does your app need:
- Bluetooth, NFC, or advanced sensors?
- Maximum GPU performance?
- Widgets, live activities, or Siri integration?
- Large-scale offline data?
- Platform-specific UI?
If you checked 3 or more, go native. If 0-2, keep evaluating.
Step 2: Check Your Constraints
Resources: Small team? Limited budget? Tight deadline? Multi-platform needed? PWA is strongly favored.
Acquisition: Is search your main channel? Is SEO critical? Is install friction a concern? PWA is strongly favored.
Step 3: Check User Context
- Occasional users who are storage-sensitive → PWA
- Daily active users who expect deep OS features → Native
- Mixed audience on iOS, Android, and desktop → PWA or hybrid
Step 4: Prototype First
Build a PWA MVP. Measure installs, return visits, and feature usage. Collect user feedback. Identify gaps that truly need native. Then decide based on data, not guesses.
PWA Implementation Tips
If you go with a PWA, keep these points in mind:
Manifest Setup
Set the display mode to standalone for a native-like feel. Provide maskable icons. Define a clear start URL and scope. Use our PWA manifest generator for the correct structure:
{
"name": "Your App",
"short_name": "App",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#000000",
"icons": [
{ "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png" }
]
}
Caching Strategy
Pick the right approach for each resource type:
- Cache-first: Static files (CSS, images, fonts) that rarely change.
- Network-first: API responses that must be fresh.
- Stale-while-revalidate: News feeds and social content — serve cached, update in background.
Install Prompts
Don't rely on the browser's default prompt. Detect installability with the beforeinstallprompt event. Show a custom banner that explains the value. Respect the user's choice — don't spam.
Push Notifications
Request permission at the right moment — not on first visit. Explain the benefit first. Segment users and personalize content. See our PWA push notification guide for the full setup.
Platform Quirks
iOS: Users must manually add the PWA to their home screen. Push needs iOS 16.4+. No Web Bluetooth or NFC. Many more quirks covered in our PWA iOS limitations guide.
Android: Automatic install prompts based on engagement. Full push support. Web Bluetooth and NFC available.
Desktop: Excellent support in Chrome, Edge, and Firefox. PWAs install alongside desktop apps.
What's Coming Next
The gap between PWAs and native apps keeps shrinking:
- Project Fugu (Google/Microsoft) is adding File System Access, Web Share, Badging, Shortcuts, and Screen Wake Lock to the web.
- Apple added push notifications in iOS 16.4 — a big shift after years of limited PWA support.
- WebAssembly is closing the performance gap with near-native speed for heavy computation.
As these APIs mature, the cases where you truly need native will keep getting smaller.
Conclusion
The PWA vs native app choice isn't binary — it's a spectrum.
Choose a PWA when: You need multi-platform reach on a budget, fast iteration, SEO-driven discovery, content delivery, or low install friction.
Choose native when: You need hardware access, maximum performance, deep OS integration, app store presence, or platform-specific design.
Choose hybrid when: Different users have different needs, you want to validate with a PWA first, or both SEO and app store presence matter.
The web platform is more capable than ever. PWAs are a mature, production-ready option. Assess your needs honestly using the framework above, and let data — not assumptions — drive your decision.
Frequently Asked Questions
What is the difference between a PWA and a native app?
A PWA runs in the browser and uses web technologies (HTML, CSS, JavaScript). A native app is built with platform-specific code (Swift for iOS, Kotlin for Android). PWAs use one codebase for all platforms. Native apps need separate codebases. PWAs update instantly. Native apps need app store reviews.
Can PWAs work offline like native apps?
Yes. Service workers cache assets and data for offline use. However, complex offline needs — like offline maps or large media libraries — are easier to handle natively. PWAs work best for simple offline scenarios like reading cached content.
Do PWAs appear in app stores?
Not by default. But you can package PWAs for app stores using tools like PWABuilder or Trusted Web Activities (TWA) for Android. This gives you store presence while keeping a web-first codebase.
Why are PWAs not more popular?
Two main reasons. First, Apple limited PWA support on iOS for years (push notifications only arrived in iOS 16.4). Second, many developers and users still don't know PWAs exist. Awareness is growing as browser support improves.
What are the main disadvantages of PWAs?
Limited hardware access (no Bluetooth, NFC, or advanced sensors). Restricted background processing. No widgets or deep OS integration. Lower performance for graphics-heavy apps. No automatic install prompts on iOS. iOS-specific limitations add further constraints for Apple users.
Can I convert a PWA to a native app later?
Yes. Many companies start with a PWA to test their idea, then build native apps after proving value. Frameworks like Capacitor or React Native let you share some web code with native wrappers. Your PWA can keep running as a lightweight entry point alongside native apps.
How do I track PWA installs and usage?
Use standard web analytics (Google Analytics, Plausible) with PWA-specific events. Track the beforeinstallprompt event for install rates. Use the display-mode media query to detect standalone launches. Service workers can log offline usage for later sync.
