Support

Browse by category

All categories
Back to Feature Requests
shipped 12 votes

PWA Install Button

Submitted by core team

Shipped in v0.10.0 (PR #29). See /docs/pwa-install for the user-facing install guide, .kb/decisions/D15-pwa-install.md for the architecture, and /help/pwa-diagnostics for the live health check.

What it does

A header install button that opens a static, per-platform install guide. Click behavior adapts to the detected browser + OS:

The button does not try to capture beforeinstallprompt or fire a native prompt. That approach was prototyped and reverted — it produced more support-ticket traffic than it prevented (sticky install state, invisible dismiss cooldowns, platform-specific edge cases). The static-modal approach matches production PWAs like Twitter/X, Squoosh, Excalidraw, and Starbucks.

Architecture

src/
  lib/
    pwa-install.ts                  — synchronous platform + brand detection
    use-pwa-install.ts              — tiny React hook: { platform, isInstalled }
  components/
    InstallButton.tsx               — header trigger
    InstallButton.css               — styling
    InstallGuideModal.tsx           — per-platform static guide, portal'd to document.body
    InstallGuideModal.css           — styling
    PwaDiagnosticsPanel.tsx         — live health check UI
    PwaDiagnosticsPanel.css         — styling
  pages/
    docs/pwa-install.astro          — user-facing install help page
    help/pwa-diagnostics.astro      — diagnostics route (unauthed; for bug-report triage)

Diagnostics page

/help/pwa-diagnostics is a live capability report: platform classification, SW + manifest + storage state, IDB pin count. A Copy Report (markdown) button produces a paste-ready snippet for /bug-report submissions. No auth — everything it exposes is client-observable.

Accessibility

Prerequisites (all met)