Decision Guide

Pick PWA when the web gives you enough platform capability and the main value is shipping a reachable product quickly.

Fast Decision

QuestionIf yesIf no
Can the product run as a normal web app first?Start web/PWAConsider native, desktop, or backend-first
Is offline useful but recoverable?Use service worker plus IndexedDBAvoid PWA for safety-critical offline behavior
Are required APIs available in target browsers?Feature-detect and testUse native or a wrapper with native modules
Is store distribution optional?Browser install firstPlan signing, review, and wrapper policy before implementation
Can one codebase satisfy UX expectations?PWA is likely enoughNative or Flutter may be a better product fit

Good Product Shapes

  • SME ledgers, field forms, inspection checklists, CRMs, admin tools, internal dashboards, learning apps, and reporting surfaces.
  • Apps where the browser version remains the canonical product and installation improves retention.
  • Static or mostly static Astro/Vite apps that need a better returning-user surface.
  • Workflow apps that need offline drafts, queued uploads, or cached reference data.

Weak Product Shapes

  • Always-on GPS, long-running sensor capture, alarm-grade scheduling, call/SMS automation, Bluetooth-heavy workflows, or OS automation.
  • Apps that must be invisible in the background and still do important work.
  • Apps where store subscriptions, in-app purchases, platform review, or native ad networks define the business model.
  • Pixel-perfect native UX where web controls and browser process boundaries are a liability.

Recommendation

Start with a browser-installable PWA for web-first workflow products. Add store wrappers only after the browser product works and there is a concrete distribution reason.

For a solo developer, the biggest trap is pretending a PWA avoids platform work. It avoids a native UI rewrite, but you still own install testing, offline data, service worker updates, notification permission UX, browser differences, and wrapper policy.