Decision Ladder
Use this when deciding between static web, PWA, native mobile, desktop, or store wrappers.
| First true condition | Pick |
|---|---|
| It is docs, reports, or a mostly static public surface | Static Astro or static web |
| It is a web workflow app that benefits from install/offline | PWA |
| It needs Android-only APIs or deep background work | Android Kotlin Compose |
| It needs iOS and Android with native APIs at launch | Expo or React Native |
| It needs one rendered UI across mobile/desktop/web | Flutter |
| It is a local-first desktop tool | Tauri or Electron |
| It needs store discovery but the web app remains canonical | PWA wrapper, TWA, or Microsoft Store package |
| It depends on policy-sensitive native monetization | Native-first store app |
PWA Default
Use PWA when the browser product is already valid and install/offline makes it more convenient. Do not use PWA to dodge native requirements.