Skip to content

[Feature] Use navigator.install() for PWA installation with a fallback #526

Description

@chdenat

Context

Studio currently uses its existing JavaScript-based PWA installation flow. The Web Install API should become the primary installation entry point when the browser exposes navigator.install().

Requested behavior

  • Use navigator.install() from the Web Awesome Install button when supported.
  • Keep the call directly behind the user activation supplied by the Install button.
  • Detect when the Web Install API is unavailable or cannot install Studio.
  • Fall back to the existing beforeinstallprompt installation flow in those cases.
  • Open the existing browser-specific manual instructions when no native prompt is available.
  • Keep the existing dismiss and settings entry points.

Acceptance criteria

  • Supported browsers call navigator.install() when the user selects Install.
  • Browsers without the Web Install API use the current native installation prompt when available.
  • Browsers where installation is unavailable use the existing manual fallback instructions.
  • A rejected Web Install API call does not leave an unusable installation dialog open.
  • The Install action uses the Web Awesome button and the Font Awesome desktop-arrow-down icon.
  • Automated tests cover the Web Install API, the existing prompt fallback, and the manual fallback.

Technical notes

The primary integration belongs in src/components/AppUpdate.jsx.

The existing fallback is implemented through the current PWA installation flow in:

  • src/core/ui/AppUpdateManager.js
  • src/components/AppUpdate.jsx
  • src/components/Settings/application/style/PWASettings.jsx

The implementation must use feature detection because the Web Install API is not available in every browser.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions