The question “should we build a native app or a PWA?” comes up in almost every mobile product conversation. The answer depends on specifics — and the specifics have shifted significantly as browsers have expanded their capabilities.

Here’s a clear framework for making this decision.

What PWAs Can Do Now

Progressive Web Apps have gained capabilities that used to require native development:

  • Push notifications — supported on Android (Chrome) and iOS (Safari 16.4+, March 2023)
  • Offline functionality — via Service Workers, PWAs can cache content and function without network
  • Camera and microphone access — via browser APIs
  • Geolocation — standard web API
  • Bluetooth and NFC — Web Bluetooth and Web NFC (Chrome only, limited OS support)
  • File system access — File System Access API (limited, security-scoped)
  • Background sync — deferred operations when connectivity is restored
  • Installable — users can add PWAs to their home screen; installed PWAs run in their own window

The gap between PWAs and native apps has narrowed substantially. For most content and productivity applications, a PWA is now a credible choice.

What Native Apps Still Do Better

Despite the progress, native apps maintain advantages in:

Performance for complex UI. Native rendering is still faster than browser rendering for complex animations, large lists, and real-time graphics. The difference matters for games, video editing, and high-frequency data dashboards.

Device integration depth. Native apps have deeper access to device APIs — particularly on iOS, where Apple restricts web API access more aggressively than Chrome on Android. Continuous background location, NFC payments, ARKit/ARCore, Face ID/fingerprint payments, and advanced camera controls all work more reliably (or exclusively) in native.

App Store distribution. App stores provide discoverability, one-tap installation, and a trusted distribution channel. PWA installation requires users to navigate browser menus — a significantly higher friction path for consumer apps where discoverability matters.

iOS performance and API access. Apple’s WebKit engine (which all iOS browsers must use) implements fewer web APIs and with more restrictions than Chrome. If your primary audience is iOS users, native iOS often delivers better experience.

The Decision Framework

Work through these questions:

1. Does the app need to be findable in app stores? If discoverability through App Store/Play Store search matters for your growth strategy, native or React Native. PWAs are not distributed through app stores (with minor exceptions for PWAs wrapped in Bubblewrap for Play Store).

2. What device features does the app need? List every hardware/OS capability you need: camera, NFC, Bluetooth, biometric auth, background processes. Check whether each is available in PWA via web APIs. If your list includes features that require native APIs, native.

3. What’s the primary OS? Android users get a better PWA experience than iOS users due to Chrome’s API surface. If your audience is primarily iOS, the PWA capability restrictions push toward native.

4. What’s the required performance profile? Games, real-time data, complex animations: native. Content, productivity, forms, CRUD: PWA is competitive.

5. What’s the development budget? PWA is one codebase that runs everywhere. Native means separate iOS (Swift/Swift UI) and Android (Kotlin/Compose) codebases — or React Native/Flutter as a cross-platform middle ground. For similar functionality, PWA development costs are significantly lower.

The Middle Ground: React Native and Flutter

When native performance and API access matter but a single codebase is desirable, React Native and Flutter are the options:

React Native — JavaScript/TypeScript codebase that renders native UI components. Large ecosystem, familiar for web developers. Meta and Microsoft use it at scale. Performance has improved significantly with the new architecture (Fabric renderer).

Flutter — Dart codebase with its own rendering engine (Skia/Impeller). Consistent cross-platform appearance. Strong performance. Google maintains it. Growing ecosystem but smaller than React Native’s.

Both options deliver near-native performance with one codebase, at the cost of JavaScript/Dart expertise rather than native iOS/Android expertise.

A Practical Guide by App Category

App TypeRecommended ApproachReason
Marketing site / brochurePWANo native APIs needed
Internal business toolPWAControlled distribution, no app store needed
B2B SaaS dashboardPWA or React NativeDepends on mobile requirements
Consumer social appReact NativeApp store discovery, notifications
E-commercePWA or React NativePWA if iOS restrictions are acceptable
Real-time gameNativePerformance requirements
IoT control appNativeBluetooth/device integration
Health and fitnessReact Native or NativeBackground location, HealthKit integration
Media playerReact NativeBalance of performance and cost

Cost Comparison

For equivalent functionality:

PlatformRelative CostNotes
PWA1xSingle codebase, web technologies
React Native1.5–2xCross-platform, some platform-specific work
Flutter1.5–2xSimilar to React Native
Native iOS + Android2.5–3xSeparate codebases

The best choice depends on your specific requirements. If you’re not sure which direction is right for your project, talk to us — we’ll work through the requirements with you and give you a direct recommendation.