When Not To Choose PWA

Choose native, cross-platform native, or desktop when the product depends on platform guarantees the web cannot provide reliably.

Native Triggers

RequirementWhy PWA is weak
Deep background executionBrowsers throttle, stop, or do not support background APIs uniformly
Exact alarms or remindersWeb notifications and background work are permission and platform constrained
Restricted OS APIsSMS, calls, contacts, low-level file access, and device management are native territory
Heavy Bluetooth/USB/HID workflowsBrowser support and permissions vary sharply
High-performance native UIBrowser rendering and input latency may not meet product expectations
Store-only monetizationStore policies and in-app purchase rules can dominate architecture
Compliance-sensitive local dataNative secure storage, MDM, or platform attestation may be required
Offline must never lose workNative storage, backups, and background sync may be more controllable

Better Defaults

Product shapeConsider
Android-first with permissionsAndroid Kotlin Compose
Cross-platform mobile with standard APIsExpo or React Native
Branded UI across platformsFlutter
Local-first desktop power toolTauri or Electron
Content/reporting surfaceStatic Astro before PWA
API integration or shared state productBackend plus thin UI

The Hard Line

Do not pick PWA because it sounds cheaper if the app’s main value is a native capability. Pick PWA when the web version is already a valid product and installation/offline capabilities make it better.