Detect standalone (installed) mode
A dismissible install prompt
Show it only when not already installed. Usebeforeinstallprompt where available (Android / desktop Chrome), fall back to manual instructions on iOS Safari.
<InstallAppPopover /> near the app root, dismissible and out of the critical path.
Gotchas
- Hide install prompts when
useIsPwaMode()istrue— the app is already installed. - Leave the manifest to the platform — it serves
/manifest.webmanifest, the Apple touch icon, and meta tags. Don’t add your own<link rel="manifest">or JSON; it conflicts.