Data di pubblicazione: 12 maggio 2026
L'installazione di app web ha sempre richiesto JavaScript. Quando utilizzi l'evento beforeinstallprompt, il flusso di installazione risiede interamente nello script. Il
nuovo <install> elemento cambia questa situazione: inserisci un singolo elemento HTML nella pagina
e il browser esegue il rendering di un pulsante di installazione attendibile, senza richiedere JavaScript.

Il team di Microsoft Edge, in collaborazione con il team di Chrome, ha implementato l'elemento
<install> in Chromium. Ora è disponibile per i test
dietro un flag in Chrome o Edge dalla versione 148 e come un
origin trial
che puoi utilizzare in entrambi i browser a partire dalla versione 148 e fino alla versione 153.
Provalo e scopri come si confronta con l'API Web Install
imperativa
(navigator.install()), che ha la sua origin
trial.
Il problema
L'installazione di app web è frammentata. Ogni browser ha il proprio insieme di punti di ingresso, ad esempio icone della barra degli indirizzi, voci di menu e prompt. Gli sviluppatori hanno un controllo limitato su quando e come viene visualizzato il flusso di installazione.
Creare un'esperienza simile a quella di un app store che consenta agli utenti di installare altre app dal tuo sito è più difficile, perché l'installazione è stata storicamente limitata alla pagina corrente.
L'elemento <install>
I contenuti e la presentazione del nuovo elemento HTML <install> sono controllati dal
browser. Analogamente ad altri elementi di autorizzazione come <geolocation>, il controllo del browser sul testo dell'etichetta, sulla lingua e sull'aspetto del pulsante significa che può considerare il clic dell'utente come un segnale di intento autentico.
È improbabile che un utente che fa clic su un pulsante con l'etichetta "Installa applicazione fantastica" si sorprenda quando viene visualizzato un prompt di installazione.
Poiché il browser esegue il rendering del pulsante, ottieni un'interfaccia di installazione attendibile con un codice minimo e senza dover orchestrare la cerimonia beforeinstallprompt in JavaScript.
Installare l'app corrente
Se la pagina corrente rimanda a un manifest con un
id
campo, è sufficiente un solo elemento:
<install></install>
Il browser esegue il rendering del pulsante con testo e iconografia standardizzati e, quando l'utente fa clic, viene avviato il normale flusso di installazione del browser.
Installare un'altra app
Per installare un'app web che si trova su un'origine diversa dalla pagina corrente, utilizza l'attributo installurl per rimandare all'altra app web:
<install installurl="https://awesome-app.com/"></install>
Se la pagina all'indirizzo https://awesome-app.com rimanda a un
manifest che definisce un campo id, non devi fare altro.
Se non esiste un campo id, utilizza l'attributo manifestid per fornire un
manifest id calcolato:
<install installurl="https://awesome-app.com/"
manifestid="https://awesome-app.com/?source=pwa">
</install>
Per ottenere l'id del manifest calcolato:
- Apri DevTools.
- Vai alla scheda Applicazione.
- Nella sezione Identità, copia il valore ID app calcolato.
L'utilizzo del pulsante <install> per installare app di altre origini ti consente di creare una
pagina di catalogo che consente agli utenti di installare più app, ognuna con il proprio
<install> pulsante.
Fornire contenuti di riserva
Se il browser non supporta l'elemento <install>, viene visualizzato il codice HTML inserito
nell'elemento:
<install installurl="https://awesome-app.com/">
<a href="https://awesome-app.com/">Launch Awesome App</a>
</install>
Rilevare il supporto
Se i contenuti di riserva non sono sufficienti per il tuo caso d'uso e preferisci
implementare un'esperienza utente diversa sui browser che non supportano l'
<install> elemento, utilizza JavaScript per rilevare il supporto:
if ('HTMLInstallElement' in window) {
// The <install> element is supported.
}
Gestire gli eventi
L'elemento <install> attiva eventi che puoi ascoltare per errori di successo, chiusura,
e convalida:
const button = document.querySelector('install');
button.addEventListener('promptaction', () => {
console.log('Installation succeeded');
});
button.addEventListener('promptdismiss', () => {
console.log('User dismissed the install prompt');
});
button.addEventListener('validationstatuschanged', (e) => {
if (e.target.invalidReason === 'install_data_invalid') {
console.error('Invalid install data:', e.target.invalidReason);
}
});
Prova subito
Per provare l'elemento <install> oggi, hai due opzioni:
- Testa l'elemento localmente solo sul tuo dispositivo.
- Testa l'elemento in condizioni reali, con i tuoi utenti, registrandoti alla prova dell'origine.
Testare localmente
Per testare l'elemento sul tuo dispositivo oggi:
- Utilizza Chrome o Edge versione 148 o successive.
- Vai a
about://flags/#web-app-install-elementin una nuova scheda. - Imposta Elemento di installazione dell'app web su Attivato.
- Riavvia il browser.
Testare il sito pubblicato utilizzando la prova dell'origine
La prova dell'origine consente agli utenti reali del tuo sito di produzione di utilizzare la funzionalità senza dover prima attivare il flag.
- Apri la pagina di registrazione della prova dell'origine dell'elemento
<install>. - Accedi.
- Fai clic su Registrati.
- Inserisci l'origine del tuo sito e compila il resto del modulo.
- Una volta inviato il modulo, riceverai una stringa di token.
- Aggiungi il token alle pagine del tuo sito utilizzando un tag
<meta>:
<meta http-equiv="origin-trial" content="YOUR_TOKEN_HERE">
In alternativa, puoi inviare il token come intestazione della risposta HTTP:
Origin-Trial: YOUR_TOKEN_HERE
La prova dell'origine è disponibile sia per Chrome che per Edge nelle versioni da 148 a 153 e lo stesso token funzionerà in entrambi i browser. Per saperne di più sulle origin trial, vedi:
- Guida introduttiva alle origin trial per Chrome.
- Testare API e funzionalità sperimentali utilizzando le origin trial per Edge.
Guarda come funziona
Dai un'occhiata alla <install> Element Store
demo, un
catalogo PWA che utilizza l'elemento <install> per consentirti di installare diverse
app di esempio.
Confronto con l'API Web Install
L'elemento <install> non è l'unico modo in cui stiamo sperimentando come
migliorare le installazioni di app sul web.
In precedenza, abbiamo sperimentato l'API Web Install (navigator.install()), un'API JavaScript imperativa che consente anche al tuo sito di attivare l'installazione di app web della stessa origine o di origini diverse. Per saperne di più, consulta The
Web Install API is ready for
testing.
Anche l'API Web Install ha la sua prova dell'origine.
Ecco come si confrontano i due approcci:
elemento |
API navigator.install() |
|
|---|---|---|
| Approccio | HTML dichiarativo | JavaScript imperativo |
| Codice richiesto | Un singolo elemento HTML | JavaScript per chiamare navigator.install() e gestire la promessa restituita |
| Attendibilità del browser | Alta: il browser controlla i contenuti e l'aspetto del pulsante, in modo simile agli elementi di autorizzazione | Bassa: richiede un'attivazione dell'utente (clic, tocco) come indicatore di fiducia |
| Installazione multiorigine | Sì, con installurl |
Sì, passando un URL a navigator.install() |
| Personalizzazione | Minima: il browser decide l'aspetto del pulsante | Completa: puoi progettare la tua UI e chiamare l'API da qualsiasi interazione |
| Fallback | Integrato: i contenuti secondari vengono visualizzati se l'elemento non è supportato | Scrivi la tua logica di rilevamento delle funzionalità e di fallback |
| Ideale per | Pulsanti di installazione drop-in con codice minimo; scenari in cui è auspicabile un'interfaccia utente attendibile dal browser | Flussi di installazione personalizzati, UI di catalogo dinamiche, integrazione in interfacce esistenti con un utilizzo intensivo di JavaScript |
Facci sapere la tua opinione
Stiamo cercando attivamente feedback su entrambi gli approcci. A seconda delle tue esigenze, potremmo aggiungere il supporto per l'elemento <install>, l'API navigator.install() o entrambi.
Per condividere il tuo feedback sull'elemento <install>, apri un problema nel repository WICG
dedicato a questa
proposta.
Per condividere il tuo feedback sull'API navigator.install(), aggiungi un commento al
problema Feedback degli sviluppatori: elemento navigator.install rispetto a <install>.