Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(brand new ✨) Web Install API #1051

Open
diekus opened this issue Feb 17, 2025 · 3 comments
Open

(brand new ✨) Web Install API #1051

diekus opened this issue Feb 17, 2025 · 3 comments

Comments

@diekus
Copy link

diekus commented Feb 17, 2025

Hola (again) TAG!

I'm requesting a TAG review of the Web Install API.

The Web Install API provides a way to democratise and decentralise web application acquisition, by enabling "do-it-yourself" developers to have control over the application discovery and distribution process, providing them with the tools they need to allow a web site to install a web app. This means end users have the option to more easily discover new applications and experiences that they can acquire with reduced friction.

Further details:

You should also know that...

This is an updated design based on previous reviews and feedback from multiple parties, including TAG. The design has been streamlined to be consistent across all calls.

@zcorpan
Copy link

zcorpan commented Feb 21, 2025

A comment on the self-review:

How does your feature handle non-"fully active" documents?
This feature does not interact with non-"fully active" documents.

This should be considered when writing the spec. It's possible to have a reference to the navigator object of a non-"fully active" document, and call install() on it. It should probably do something like https://html.spec.whatwg.org/#dom-navigation-navigate step 3 and 7

@jyasskin
Copy link
Contributor

Hi! First, thank you for adjusting the proposal in response to some of our previous feedback, in particular removing install_sources and postponing navigator.getInstalledApps(). I don't see adjustments or explanations in response to some of the other comments:

We don't expect to review this again in detail before our comments from last time are more fully addressed.

@jyasskin jyasskin added the Progress: pending editor update TAG is waiting for a spec/explainer update label Feb 26, 2025
@diekus
Copy link
Author

diekus commented Feb 27, 2025

Hola @jyasskin

Thanks for your prompt review. I have modified the explainer to address the two points you mention are still pending, and I'd like to expand on them in this issue as well.

First and foremost, I want to express that I firmly believe that both solutions are desired. As stated in the explainer, we believe that a declarative implementation is a simple and effective solution, and should be considered as an additional method of installation in the future.

For the current solution, we want to go with an imperative implementation since it allows more control over the overall installation UX:

  • Allows the source to detect if an installation occurred with ease. (resolves/rejects a promise).
  • Supports install_url. The current reality of the web is such that some websites intentionally do not expose their manifest nor user experience until the user has authenticated. We believe that having the ability to offer an install_url (one where the only content may simply be a link to the manifest) is a key advantage for both developers and end-users. The declarative version does not cleanly support this concept (as a fallback navigation to an install_url that was specified as the href on non-supporting UA's might leave the user confusingly stranded on a blank page.
  • Code can be used to detect if an origin has permission to install apps (and/or if the UA supports the API at all), and UX can be tailored to change accordingly (for example, remove a button or display a link instead).
  • The developer ergonomics of handling a promise are better than responding to an a tag navigation.
  • Keeps the user in the context, which can be beneficial in certain scenarios (if the developer wants to take the user out of the current context, they can do so with a a tag).

Overall it gives developers more control to create really compelling UX experiences for end users, which are the ones that will benefit from frictionless app acquisition in the end.

Regarding the idea of a try-before-you-buy scenario, it's a really good call and great idea! I have added a section in the explainer as well to mention it. I do think that is an implementation detail, up to the UA. Some browsers might want to show a prompt, some a confirmation dialog, some might want to do a rich-install-prompt... and some might even load the app for the users to see before confirming that they want to install it! (like the neat link you sent about Arc's peek). All this is up to the browser and what they consider is the best UX to present to the user before installing an app.

I hope these points address your concerns and we can continue to discuss the Web Install feature!

@jyasskin jyasskin added Progress: in progress and removed Progress: pending editor update TAG is waiting for a spec/explainer update labels Feb 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment