Introdução à API Storage entre origens

Publicado em: 10 de novembro de 2026

Os apps da Web modernos geralmente dependem de recursos grandes, como frameworks de JavaScript, mecanismos de jogo e modelos de IA. Apesar de os sites usarem recursos idênticos, cada um precisa baixar e armazenar a própria cópia de cada um.

Com a proposta da API Cross-Origin Storage (COS), o cliente especifica o conteúdo que está procurando pelo hash e o busca em qualquer URL para compartilhar nos sites designados (ou em todos os sites). Isso significa que um recurso exato e conhecido pode ser compartilhado entre sites, independentemente de veicular o recurso. Essa proposta traz benefícios de segurança e desafios de proteção.

Casos de uso

Já escrevemos bastante sobre a importância de armazenar modelos em cache e armazenar qualquer recurso em cache com a API Storage Cache. A API Cross-Origin Storage vai além e pode ser útil quando vários sites relacionados (ou não) precisam acessar o mesmo recurso:

  • Modelos de IA: modelos como as variantes do Gemma ou do Llama pesam de aproximadamente um gigabyte a dezenas de gigabytes. Armazenar e recuperar uma cópia pelo COS evita downloads duplicados em massa. Essa é uma das principais motivações da proposta.
  • Módulos Wasm: frameworks como o Flutter enviam arquivos Wasm que são solicitados milhões de vezes por dia em milhares de origens distintas, sempre idênticos em bytes.
  • Bibliotecas e frameworks JavaScript conhecidos: agrupar o código do fornecedor separadamente e na íntegra (como a biblioteca React completa e sem tree shaking) permite que vários apps compartilhem uma cópia em cache pelo COS.
  • Mecanismos de jogo: os jogos de navegador criados em mecanismos como Godot ou Unity podem compartilhar o ambiente de execução do mecanismo pelo COS e buscar apenas recursos específicos do jogo pela rede. Os portais de jogos que hospedam muitos jogos casuais em diferentes origens ou iframes são os mais beneficiados.
  • Fontes da Web grandes: fontes de ícones, de emojis e com ampla cobertura Unicode são baixadas em um número enorme de páginas. Compartilhar esses dados uma vez pelo COS ajuda no desempenho e na sustentabilidade.
Dois jogos não relacionados do Three.js, Descent e Quake, compartilham uma cópia do mecanismo pelo COS, inspecionada no DevTools.
Dois jogos do Three.js não relacionados, Descent (na guia em segundo plano) e Quake (na guia em primeiro plano), compartilham uma cópia do mecanismo pelo COS, inspecionada no DevTools. Esta captura de tela é de uma versão experimental do Chromium e pode não refletir o design final.

O fluxo básico de trabalho com o COS

A API COS apresenta um método navigator.crossOriginStorage.getFileHandle() em que os apps da Web armazenam e recuperam arquivos em limites de origem, identificados por um hash criptográfico. O documento explicativo tem um exemplo que mostra o fluxo básico de trabalho com a API.

Teste hoje mesmo

Há duas maneiras de testar o COS agora:

  • Instale uma extensão de navegador da Chrome Web Store, dos complementos do Firefox ou da App Store do Safari para polyfill a superfície da API e todas as integrações. É possível testar o fluxo da API em qualquer navegador. Ou carregue a extensão descompactada do código-fonte.
  • Experimento no Chromium: há uma implementação experimental do Chromium. Baixe para macOS no Apple Silicon ou Linux x86_64 em goo.gle/cos-chromium, abra about://flags, pesquise "Cross-Origin Storage", defina como Enabled e reinicie quando solicitado. Esta versão inclui uma integração com o DevTools: encontre o Armazenamento entre origens na guia Aplicativo.

Interesse no ecossistema

O COS é uma proposta em estágio inicial, e vários projetos já oferecem suporte experimental, geralmente por trás de uma flag de ativação e em camadas como um aprimoramento progressivo:

  • O Emscripten compartilha a saída do Wasm gerada.
  • O Flutter compartilha o ambiente de execução do Skia Wasm.
  • O Transformers.js compartilha os pesos do modelo e os ambientes de execução do Wasm de que dependem.
  • O WebLLM compartilha modelos e ambientes de execução.
  • O wllama compartilha modelos de IA.
  • O Nuxt.js carrega dependências compartilhadas do armazenamento entre origens e mantém um plug-in do Vite para COS.
  • O polyfill da API Prompt compartilha modelos de IA nos back-ends WebLLM e Transformers.js.
  • O Prebid.js tem uma distribuição de CDN pronta para COS da biblioteca de lances de cabeçalho.

Padronização

O armazenamento entre origens é uma proposta do WICG em estágio inicial. Leia a revisão de design do TAG do W3C (link em inglês).

Seu feedback sobre a API e a proposta é bem-vindo. Você pode registrar problemas, mostrar suporte ou abrir solicitações de pull no repositório de armazenamento entre origens.

Recursos

Além disso, confira estas ferramentas e demonstrações:

Leitura de contexto adicional

Palestras e podcasts