[Web Install] Developer Feedback: navigator.install vs <install> element
@LiaHiscock is already working on this.
Since Apr 7, 2026.
- Dominant language
- HTML
- Stars
- 21
- Forks
- 4
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 4
Description
Purpose
This issue is intended as an open discussion for the community to share feedback on their experience using Web Install, specifically any preferences between:
- The imperative approach:
navigator.install()(any of the 3 signatures) - The declarative approach:
<install>element
Background
The Origin Trial for the imperative version (navigator.install) has been ongoing, and an Origin Trial for the declarative version (<install> element) will begin soon.
With both approaches now available for experimentation, we’re interested in hearing from developers about:
- Which approach feels more natural to use
- Where one approach may work better than the other in real‑world scenarios
- Any tradeoffs you’ve noticed from a developer or user experience perspective
- Any reasons you'd want to use both approaches
Your feedback is critical to the future of Web Install and helps us build a clearer understanding of how each approach supports (or doesn't) your specific needs.
Discussion Prompts
To help get the conversation started, here are a few example considerations (but please feel free to share any additional thoughts):
| # | Consideration | navigator.install() (Imperative) | <install> element (Declarative) |
|---|---|---|---|
| 1 | UI and styling control | Developers have full control over UI and styling | Element styling is constrained by the user agent |
| 2 | Integration with immersive or custom-rendered UI (e.g., WebXR / WebGL) | Can be triggered from script in custom or non‑DOM UI environments | Not supported** |
| 3 | Updating button state/appearance for already installed apps | Not available.* Installation status is not exposed to the page, so developers cannot reliably implement this behavior themselves. | Could be implemented by the user agent without exposing installation status to the page. |
* getInstalledRelatedApps is available in Chromium-based browsers for same-origin install state requests.
** The experimental html-in-canvas proposal makes this possible. Additional thoughts can be left here:
WICG/install-element issue #9
If you have:
- Agreements or opposing views
- Additional use cases
- Implementation challenges
- DX/UX considerations
…we’d love to hear your thoughts in this thread.
Resources
-
Related discussion:
MicrosoftEdge/MSEdgeExplainers issue #893 -
Rationale for why there are currently two approaches:
install-element PR #11 comment -
UX/DX Checklist (Christian Liebel):
install-element issue #15
``
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.