A partir de Chrome 122, puedes suscribirte a la prueba de origen para el miembro scope_extensions del manifiesto de la app, que permite que los sitios que controlan varios subdominios y dominios de nivel superior se presenten como una sola app web. En este documento, se explica por qué el equipo de Chrome presenta esta función y cuándo te convendría usarla.
Descripción general
Algunas aplicaciones web tienen varios orígenes, por ejemplo, example.com como la app principal y, luego, space_1.example.com, …, space_n.example.com, a veces combinados con special-example.com, como subexperiencias, todo bajo el mismo techo de la app principal. Este tipo de arquitectura de sitios tiene implicaciones en el contexto de las apps web progresivas.
Entre las limitaciones, se incluyen la imposibilidad de compartir service workers, cualquier tipo de dispositivo, almacenamiento local y permisos entre orígenes. Además, la navegación entre orígenes en una AWP independiente muestra una IU de ventana (barra "fuera del alcance") que indica que el usuario salió de la experiencia de la AWP. Puedes aprender a solucionar algunos de estos problemas en los artículos Apps web progresivas en sitios de varios orígenes y Cómo compilar varias apps web progresivas en el mismo dominio.
La API de Scope Extensions permite que las apps web superen algunos de los desafíos que la política del mismo origen impone en este tipo de arquitectura de sitios. Permite que las apps web extiendan su alcance a otros orígenes para ayudar a lograr una experiencia unificada, dado el acuerdo entre el origen principal de la app web y los orígenes asociados.
Objetivos
El objetivo principal de la API de Scope Extensions es permitir que los sitios que controlan varios subdominios y dominios de nivel superior se comporten como una app web contigua cuando se trata de la IU de la app web y la captura de vínculos. Por ejemplo, permitir que el sitio example.com que abarca example.com.co.uk y support.example.com se comporte lo más posible como una sola aplicación web.

Las extensiones de alcance permiten que las PWA de varios orígenes se comporten como una app web contigua cuando se trata de la IU de la app web.
En la práctica, esto se traduce en dos objetivos más específicos:
- Navegación entre orígenes: Permite a los usuarios navegar entre orígenes asociados sin interrumpir la experiencia del usuario invocando la IU de la ventana que le informa al usuario que se está alejando de la PWA.
- Captura de vínculos de origen cruzado: Permite que las apps web capturen la navegación del usuario a sitios con los que están afiliadas.
Navegación dentro del alcance de origen cruzado
De forma predeterminada, cuando los usuarios navegan entre orígenes en una AWP independiente, se les muestra una IU de ventana que indica que se están moviendo fuera de la experiencia de la AWP. En Chrome, esta IU consta de una barra "fuera del alcance" que contiene la URL del nuevo origen. Esto interrumpe la experiencia del usuario, ya que se espera que los usuarios sigan navegando dentro del mismo contexto de la aplicación, pero podrían percibir que se los saca de él.

Barra "Fuera del alcance" que se muestra en Chrome cuando los usuarios navegan por diferentes orígenes en una PWA independiente.
Con las extensiones de alcance, la IU de la ventana no se mostrará cuando los usuarios naveguen a cualquiera de los orígenes asociados, por lo que la AWP se presentará como una experiencia unificada.
Captura de vínculos entre orígenes
La captura de vínculos se refiere a la capacidad de una app para capturar vínculos dentro de su alcance. La forma en que se implementa varía entre los navegadores y los sistemas operativos. Por ejemplo, en Chrome en ChromeOS, los vínculos dentro del alcance de una PWA instalada abren de forma predeterminada una pestaña del navegador con una indicación en la barra de direcciones de que hay una app que puede controlar estos vínculos, lo que permite que el usuario habilite la captura automática de vínculos a partir de ese momento.

Fragmento de la barra de direcciones de Chrome para una pestaña en ChromeOS que muestra una indicación visual de que una AWP puede controlar el vínculo y la opción para recordar esa decisión.
Si un usuario hace clic en un vínculo que está fuera del alcance de la PWA (incluidos los vínculos a subdominios o dominios de nivel superior), no se reconocerá que pertenece a ella. Por ejemplo, los vínculos se abrirán en una pestaña del navegador sin ninguna indicación al usuario de que hay una app que puede controlar el vínculo. La API de Scope Extensions permite extender el alcance de la PWA para que los orígenes asociados se traten como vínculos dentro del alcance.
Implementación
Para implementar extensiones de alcance, es necesario establecer la relación entre el origen principal y los orígenes asociados.
Declara la lista de orígenes asociados
Agrega un miembro del manifiesto de la app web scope_extensions al origen principal de la AWP para permitir que la app web extienda su alcance a otros orígenes.
Manifiesto de la app web (https://example.com)
{
"name": "Example",
"display": "standalone",
"start_url": "/index.html",
"scope_extensions": [
{ "origin": "https://*.example.com" },
{ "origin": "https://example.co.uk" },
{ "origin": "https://*.example.co.uk" }
]
}
Confirma las asociaciones
Cada uno de los orígenes enumerados confirma la asociación con la app web a través de un archivo de configuración /.well-known/web-app-origin-association. Este archivo debe llamarse web-app-origin-association y publicarse en esta ubicación exacta, ya que es un URI conocido.
/.well-known/web-app-origin-association (origen asociado)
{
"web_apps": [{ "web_app_identity": "https://example.com" }]
}
Demostración
La demostración consta de dos sitios:
- AWP principal: Es la AWP real que declara la lista de orígenes asociados a través del miembro
scope_extensionsen su manifiesto de la app web. - Origen en alcance extendido: Es un origen fuera del alcance de la PWA principal, pero asociado a ella después de que la PWA principal lo haya incluido en la lista como origen asociado y de que se haya confirmado la relación a través de su archivo
web-app-origin-association.
Para realizar las siguientes pruebas, debes habilitar la marca about://flags/#enable-desktop-pwas-scope-extensions (disponible a partir de Chrome v115).
Cómo probar la navegación de origen cruzado
Como condición previa para estas pruebas, abre la AWP principal en un navegador, instálala como una AWP y ábrela para ejecutarla en modo independiente. La PWA contiene vínculos a un origen en el alcance extendido y a un origen que no está en el alcance extendido.

PWA de demostración con vínculos al origen en el alcance extendido y al origen no incluido en el alcance extendido.
Navegación predeterminada entre orígenes (no en el alcance extendido)
- Haz clic en el vínculo al origen que no está en el alcance extendido dentro de la PWA de pantalla completa.
- Como resultado, se realiza la navegación y se muestra la barra de fuera del alcance.

La barra "Fuera del alcance" se muestra de forma predeterminada para una navegación de origen cruzado para una PWA en modo independiente.
Navegación de origen cruzado con extensiones de alcance (en alcance extendido)
- Regresa a la página principal de la PWA.
- Haz clic en el vínculo al origen que no está en el alcance extendido.
- De forma predeterminada, debería mostrarse una barra de "fuera del alcance", pero no se muestra debido a la asociación de extensiones de alcance.

No se muestra la barra "Fuera del alcance" en la navegación de origen cruzado después de que se realizó la asociación de origen con las extensiones de alcance.
Prueba la captura de vínculos de origen cruzado
- Abre e instala la PWA principal en un dispositivo ChromeOS.
- Haz clic en el siguiente vínculo: origen asociado.
- El vínculo se abre en una nueva pestaña del navegador y se muestra un mensaje para abrirlo en la PWA instalada.

Si se hace clic en un vínculo al origen asociado de una PWA, se abre el vínculo en una pestaña nueva y se muestra un ícono de "Abrir en la app" que permite al usuario habilitar la captura automática de vínculos.
Prueba de origen
Si deseas probar esta API en tu aplicación en el campo con usuarios reales, puedes hacerlo con una prueba de origen. Las pruebas de origen te permiten probar funciones experimentales con tus usuarios. Para ello, debes obtener un token de prueba vinculado a tu dominio. Luego, puedes implementar tu app y esperar que funcione en un navegador que admita la función que estás probando (en este caso, está disponible en Chrome de la versión 121 a la 126). Para obtener tu propio token y ejecutar una prueba de origen, completa el formulario de solicitud.
Comentarios
El equipo de Chrome busca comentarios sobre la utilidad de esta API. Para ayudar al equipo a desarrollar esta API con comentarios sobre su utilidad y nuevos casos de uso que no se incluyen en la versión actual, abre un problema en GitHub.
Recursos adicionales
- API de Scope Extensions: prueba de origen
- Chrome Status: Extensiones de alcance de apps web
- Explicación de las extensiones de alcance para aplicaciones web
- Intención de experimentar
- Posición de Mozilla sobre los estándares
- Posición de Apple sobre los estándares
- Error de Chromium
- Apps web progresivas en sitios con varios orígenes
- Cómo compilar varias apps web progresivas en el mismo dominio
Agradecimientos
Agradecemos especialmente al equipo que desarrolló esta API. Alan Cutter y Lu Huang especificaron las extensiones de alcance, con la colaboración de Matt Giuca. La API fue implementada por Alan Cutter de Google Chrome y Hassan Talat, Kristin Lee y Lu Huang de Microsoft Edge.