Publicado el 12 de mayo de 2026
La instalación de apps web siempre requirió JavaScript. Cuando usas el evento beforeinstallprompt, el flujo de instalación reside por completo en la secuencia de comandos. El
nuevo <install> elemento cambia eso: coloca un solo elemento HTML en tu página
y el navegador renderiza un botón de instalación de confianza para ti, sin necesidad de JavaScript
requerido.

El equipo de Microsoft Edge, en colaboración con el equipo de Chrome, implementó el
<install> elemento en Chromium. Ahora está disponible para que lo pruebes
detrás de una marca en Chrome o Edge desde la versión 148, y como una
prueba de origen
que puedes usar en ambos navegadores a partir de la versión 148 y hasta la 153.
Pruébalo y descubre cómo se compara con la API de Web Install
imperativa
(navigator.install()), que tiene su propia prueba
de origen.
El problema
La instalación de apps web está fragmentada. Cada navegador tiene su propio conjunto de puntos de entrada, por ejemplo, íconos de la barra de direcciones, elementos de menú y mensajes. Los desarrolladores tienen un control limitado sobre cuándo y cómo se muestra el flujo de instalación.
Crear una experiencia similar a la de una tienda de aplicaciones que permita a los usuarios instalar otras apps desde tu sitio es más difícil, ya que la instalación se restringió históricamente a la página actual.
El elemento <install>
El navegador controla el contenido y la presentación del nuevo elemento HTML <install>. Al igual que otros elementos de permisos, como <geolocation>, el
control del navegador sobre el texto de la etiqueta, el idioma y la apariencia del botón significa
que puede confiar en el clic del usuario como un indicador genuino de intención.
Es poco probable que un usuario que haga clic en un botón con la etiqueta "Instalar aplicación maravillosa" se sorprenda cuando aparezca un mensaje de instalación.
Como el navegador renderiza el botón, obtienes una indicación visual de instalación de confianza con un código mínimo y sin necesidad de organizar la ceremonia beforeinstallprompt en JavaScript.
Instala la app actual
Si la página actual vincula a un manifiesto que tiene un
id
campo, solo necesitas un elemento:
<install></install>
El navegador renderiza el botón con texto e iconografía estandarizados y, cuando el usuario hace clic en él, se activa el flujo de instalación normal del navegador.
Instala una app diferente
Para instalar una app web que se encuentre en un origen diferente al de la página actual, usa el atributo installurl para dirigir a la otra app web:
<install installurl="https://awesome-app.com/"></install>
Si la página en https://awesome-app.com vincula a un
manifiesto que define un campo id, eso es todo lo que debes hacer.
Si no existe un campo id, usa el atributo manifestid para proporcionar un manifiesto calculado
id:
<install installurl="https://awesome-app.com/"
manifestid="https://awesome-app.com/?source=pwa">
</install>
Para obtener el id de manifiesto calculado, haz lo siguiente:
- Abre las Herramientas para desarrolladores.
- Ve a la pestaña Application.
- En la sección Identity, copia el valor de Computed App ID.
El uso del botón <install> para instalar apps de otro origen significa que puedes crear una
página de catálogo que permita a los usuarios instalar varias apps, cada una con su propio
<install> botón.
Proporciona contenido de resguardo
Si el navegador no admite el elemento <install>, se muestra el HTML que coloques
dentro del elemento:
<install installurl="https://awesome-app.com/">
<a href="https://awesome-app.com/">Launch Awesome App</a>
</install>
Detecta la compatibilidad
Si el contenido de resguardo no es suficiente para tu caso de uso y prefieres
implementar una experiencia del usuario diferente en navegadores que no admiten el
<install> elemento, usa JavaScript para detectar la compatibilidad:
if ('HTMLInstallElement' in window) {
// The <install> element is supported.
}
Cómo controlar eventos
El elemento <install> activa eventos que puedes escuchar para obtener errores de éxito, descarte,
y validación:
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);
}
});
Probar hoy mismo
Para probar el elemento <install> hoy, tienes dos opciones:
- Prueba el elemento de forma local solo en tu dispositivo.
- Prueba el elemento en condiciones reales, con tus usuarios, registrándote en la prueba de origen.
Realiza pruebas locales
Para probar el elemento en tu propio dispositivo hoy, haz lo siguiente:
- Usa Chrome o Edge versión 148 o posterior.
- Ve a
about://flags/#web-app-install-elementen una pestaña nueva. - Configura Web App Install Element como Enabled.
- Reinicia el navegador.
Prueba en tu sitio publicado con la prueba de origen
La prueba de origen permite que los usuarios reales de tu sitio de producción usen la función sin tener que habilitar la marca primero.
- Abre la página de registro de la prueba de origen del elemento
<install>origin trial registration page. - Accede.
- Haz clic en Registrar.
- Ingresa el origen de tu sitio y completa el resto del formulario.
- Una vez que se envía el formulario, obtienes una cadena de token.
- Agrega el token a las páginas de tu sitio con una etiqueta
<meta>:
<meta http-equiv="origin-trial" content="YOUR_TOKEN_HERE">
Como alternativa, puedes enviar el token como un encabezado de respuesta HTTP:
Origin-Trial: YOUR_TOKEN_HERE
La prueba de origen está disponible para Chrome y Edge en las versiones 148 a 153, y el mismo token funcionará en ambos navegadores. Para obtener más información sobre las pruebas de origen, consulta lo siguiente:
- Comienza a usar las pruebas de origen, para Chrome.
- Prueba APIs y funciones experimentales con pruebas de origen para Edge.
Observa cómo funciona
Consulta la demostración de la tienda de elementos <install> Element Store
demo, un catálogo de PWA que usa el elemento <install> para permitirte instalar varias apps de muestra.
Comparación con la API de Web Install
El elemento <install> no es la única forma en que experimentamos cómo
mejorar las instalaciones de apps en la Web.
Anteriormente, experimentamos con la API de Web Install (navigator.install()), que es una API de JavaScript imperativa que también permite que tu sitio active la instalación de apps web del mismo origen o de distintos orígenes. Para obtener más información, consulta La
API de Web Install está lista para
probarse.
La API de Web Install también tiene su propia prueba de origen.
Esta es una comparación entre los dos enfoques:
elemento |
API de navigator.install() |
|
|---|---|---|
| Enfoque | HTML declarativo | JavaScript imperativo |
| Código requerido | Un solo elemento HTML | JavaScript para llamar a navigator.install() y controlar la promesa que se muestra |
| Confianza del navegador | Alta: El navegador controla el contenido y la apariencia del botón, de forma similar a los elementos de permisos. | Baja: Requiere una activación del usuario (clic o toque) como indicador de confianza. |
| Instalación de distintos orígenes | Sí, con installurl |
Sí, pasando una URL a navigator.install() |
| Personalización | Mínima: El navegador decide cómo se ve el botón. | Completa: Diseñas tu propia IU y llamas a la API desde cualquier interacción. |
| Fallback | Integrado: El contenido secundario se renderiza si el elemento no es compatible. | Escribes tu propia detección de funciones y lógica de resguardo. |
| Ideal para | Botones de instalación desplegables con código mínimo; situaciones en las que es deseable una IU de confianza del navegador | Flujos de instalación personalizados, IUs de catálogo dinámicas, integración en interfaces existentes con mucho JavaScript |
Envíanos tu opinión
Buscamos activamente comentarios sobre ambos enfoques. Según tus necesidades, podríamos agregar compatibilidad con el elemento <install>, la API de navigator.install() o ambos.
Para compartir comentarios sobre el elemento <install>, abre un problema en el repositorio de WICG
dedicado a esta
propuesta.
Para compartir comentarios sobre la API de navigator.install(), agrega un comentario al
problema Developer Feedback: navigator.install versus <install>
element.