Presentamos la API de Cross-Origin Storage

Publicado: 10 de noviembre de 2026

Las apps web modernas suelen depender de recursos grandes, como frameworks de JavaScript, motores de juegos y modelos de IA. A pesar de que los sitios usan recursos idénticos, cada uno debe descargar y almacenar su propia copia de cada uno.

Con la API de Cross-Origin Storage propuesta (COS, por sus siglas en inglés), el cliente especifica el contenido que busca por su hash y lo recupera de cualquier URL para compartirlo en los sitios designados (o en todos los sitios). Esto significa que se puede compartir un recurso exacto y conocido entre sitios, independientemente de la publicación del recurso. Esta propuesta conlleva beneficios de seguridad y desafíos de protección.

Casos de uso

Escribimos extensamente sobre la importancia de almacenar en caché los modelos y cualquier recurso con la API de Cache Storage. La API de Cross-Origin Storage va un paso más allá y podría ser beneficiosa cuando varios sitios web relacionados (o no) necesitan acceder al mismo recurso:

  • Modelos de IA: Los modelos como Gemma o las variantes de Llama pesan desde aproximadamente un gigabyte hasta decenas de gigabytes. Almacenar y recuperar una copia a través de COS evita descargas duplicadas masivas. Esta es una de las principales motivaciones de la propuesta.
  • Módulos de Wasm: Los frameworks como Flutter envían archivos de Wasm que se solicitan millones de veces al día en miles de orígenes distintos, siempre con bytes idénticos.
  • Bibliotecas y frameworks de JavaScript populares: Agrupar el código de terceros por separado y en su totalidad (como la biblioteca de React completa y sin optimizar) permite que varias apps compartan una copia almacenada en caché a través de COS.
  • Motores de juegos: Los juegos de navegador creados con motores como Godot o Unity pueden compartir el entorno de ejecución del motor a través de COS y recuperar solo los recursos específicos del juego a través de la red. Los portales de juegos que alojan muchos juegos casuales en diferentes orígenes o iframes son los que más se benefician.
  • Fuentes web grandes: Las fuentes de íconos, las fuentes de emojis y las fuentes con una amplia cobertura de Unicode se descargan en una gran cantidad de páginas. Compartirlos una vez a través de COS ayuda tanto al rendimiento como a la sustentabilidad.
Dos juegos de Three.js no relacionados, Descent y Quake, comparten una copia del motor a través de COS, inspeccionada en las Herramientas para desarrolladores.
Dos juegos de Three.js no relacionados, Descent (en la pestaña en segundo plano) y Quake (en la pestaña en primer plano), comparten una copia del motor a través de COS, inspeccionada en Herramientas para desarrolladores. Esta captura de pantalla es de una compilación experimental de Chromium y es posible que no refleje el diseño final.

El flujo básico para trabajar con COS

La API de COS presenta un método navigator.crossOriginStorage.getFileHandle() a través del cual las apps web almacenan y recuperan archivos entre límites de origen, identificados por un hash criptográfico. La explicación tiene un ejemplo que muestra el flujo básico para trabajar con la API.

Probar hoy mismo

En este momento, hay dos formas de experimentar con el COS:

  • Instala una extensión de navegador desde Chrome Web Store, Complementos de Firefox o App Store de Safari para rellenar la superficie de la API y todas las integraciones. Puedes probar el flujo de la API en cualquier navegador. O carga la extensión sin empaquetar desde su código fuente.
  • Experimento en Chromium: Hay una implementación experimental de Chromium. Descárgalo para macOS en Apple Silicon o Linux x86_64 desde goo.gle/cos-chromium, luego abre about://flags, busca "Almacenamiento de origen cruzado", configúralo como Habilitado y reinicia cuando se te solicite. Esta compilación incluye una integración de Herramientas para desarrolladores: busca Almacenamiento de origen cruzado en la pestaña Aplicación.

Interés en el ecosistema

COS es una propuesta en etapa inicial, y varios proyectos ya incluyen compatibilidad experimental, por lo general, detrás de una marca de habilitación y con capas como una mejora progresiva:

  • Emscripten comparte el resultado de Wasm generado.
  • Flutter comparte su entorno de ejecución de Skia Wasm.
  • Transformers.js comparte los pesos de los modelos y los entornos de ejecución de Wasm de los que dependen.
  • WebLLM comparte modelos y entornos de ejecución.
  • wllama comparte modelos de IA.
  • Nuxt.js carga dependencias compartidas desde el almacenamiento de origen cruzado y mantiene un complemento de Vite para COS.
  • Prompt API Polyfill comparte modelos de IA en sus backends de WebLLM y Transformers.js.
  • Prebid.js tiene una distribución de CDN lista para COS de la biblioteca de licitación de encabezado.

Estandarización

El almacenamiento de origen cruzado es una propuesta de WICG en etapa inicial. Puedes leer la revisión de diseño de TAG del W3C inicial.

Agradecemos los comentarios sobre la API y la propuesta. Puedes informar problemas, mostrar asistencia o abrir solicitudes de extracción en el repositorio de almacenamiento de origen cruzado.

Recursos

Además, consulta estas herramientas y demostraciones:

Lectura adicional de referencia

Charlas y podcasts