Ciclo de vida da atualização de extensões do Chrome

Este guia detalha o fluxo completo de atualização de extensões, abrangendo o processo padrão, substituições manuais, APIs de desenvolvedor e o impacto significativo das políticas corporativas.

Ciclo de atualização padrão

O Chrome foi projetado para atualizar automaticamente as extensões instaladas para as versões mais recentes, garantindo que os usuários tenham acesso a novos recursos e correções de segurança. Por padrão, o Chrome verifica se há atualizações de extensões na inicialização e a cada poucas horas.

Um aspecto fundamental do processo de atualização é que uma atualização só é instalada quando a extensão é considerada inativa. Para que uma extensão fique inativa, os componentes dela não podem estar em uso ativo. No contexto do Manifest V3, isso significa principalmente que o service worker da extensão não está em execução. O service worker foi projetado para ser orientado a eventos e é encerrado após um período de inatividade. Além disso, todas as páginas de extensão abertas, como painel lateral, pop-up ou uma página de opções, impedem que a extensão seja considerada inativa. Um script de conteúdo ativo não afeta se uma extensão é considerada inativa ou não.

Esse requisito de inatividade pode causar atrasos nas atualizações de extensões ativas com frequência. Se o service worker de uma extensão for acionado constantemente por eventos, ele nunca poderá atingir um estado inativo, e a atualização será adiada até que o navegador seja reiniciado.

Monitorar a distribuição de atualizações de extensões

Para saber quantos usuários estão na versão mais recente da sua extensão, use o painel de análise da Chrome Web Store. Acesse o painel de controle do desenvolvedor da Chrome Web Store e selecione uma das extensões publicadas. Na barra de navegação lateral, acesse Análise -> Usuários e role para baixo até o Gráfico de usuários diários por item. Aqui, você pode conferir quantos usuários já estão na versão mais recente.

Captura de tela mostrando o número de usuários diários por versão de uma extensão de exemplo.

Atualizar extensões manualmente

Se os usuários quiserem receber as atualizações mais recentes imediatamente, o Chrome oferece um mecanismo de atualização manual. Essa também é uma ferramenta útil ao testar atualizações.

Os usuários individuais podem forçar uma atualização para todas as extensões instaladas seguindo estas etapas:

  1. Acesse chrome://extensions.
  2. Ative o Modo de desenvolvedor usando a alternância no canto superior direito.
  3. Clique no botão Atualizar que aparece.

Essa ação solicita que o Chrome busque imediatamente as versões mais recentes de todas as extensões instaladas na Chrome Web Store.

Verificar se há atualizações de uma extensão

A API chrome.runtime oferece ferramentas para que as extensões interajam com o mecanismo de atualização.

Verificar se há atualizações sob demanda

A função chrome.runtime.requestUpdateCheck() permite que uma extensão inicie uma verificação de atualização de maneira programática. Isso é particularmente útil para extensões que têm uma dependência crítica de um serviço de back-end e precisam garantir que estejam executando a versão compatível mais recente.

Quando essa função é chamada, o Chrome consulta a Chrome Web Store para uma nova versão e faz o download dela, se disponível. O callback da função recebe um status indicando o resultado da verificação.

Detectar atualizações disponíveis

O evento chrome.runtime.onUpdateAvailable é acionado quando uma atualização é baixada e está pronta para ser instalada. Esse evento fornece o novo número da versão nos detalhes. Ao detectar esse evento, uma extensão pode determinar que uma atualização está disponível e considerar ficar inativa ou causar uma recarga usando chrome.runtime.reload() quando apropriado.

O código a seguir mostra um padrão de implementação básico:

Em casos excepcionais, é possível forçar o navegador a verificar uma atualização de extensão usando chrome.runtime.requestUpdateCheck():

É importante observar que as chamadas frequentes para requestUpdateCheck() serão limitadas pelo navegador. Use essa função apenas quando souber que uma atualização está disponível. Por exemplo, quando um back-end atualizado exige uma versão mais recente da extensão.

Controlar atualizações pela política corporativa

Em ambientes corporativos gerenciados, o fluxo de atualização de extensão padrão está sujeito a políticas definidas pelos administradores do sistema. Essas políticas podem substituir o comportamento padrão para impor segurança e estabilidade.

Forçar a instalação

A política ExtensionInstallForcelist permite que os administradores instalem extensões específicas para os usuários de forma silenciosa. Os usuários não podem desativar ou desinstalar extensões instaladas com essa política.

Fixar versão da extensão

No entanto, as empresas geralmente precisam controlar a versão exata de uma extensão que está sendo usada para garantir a compatibilidade com outros softwares. Para isso, os administradores podem "fixar" uma extensão em uma versão específica. Isso é feito pelo Google Admin Console, em que um administrador pode selecionar a versão necessária para uma unidade organizacional. Quando uma extensão é fixada, o Chrome não a atualiza além da versão especificada.

Substituir a origem da atualização

As empresas podem hospedar as próprias versões bifurcadas de extensões por motivos de segurança ou personalização. Para fazer isso, use a política ExtensionSettings com a propriedade override_update_url definida como true. Isso força o Chrome a buscar a extensão e as atualizações dela em um URL especificado, em vez da Chrome Web Store.

Definir uma versão mínima do Chrome

É possível especificar uma minimum_chrome_version no arquivo de manifesto da extensão. Isso garante que a extensão só seja instalada em versões do Chrome que ofereçam suporte às APIs usadas.

Para novas instalações, a Chrome Web Store impede que os usuários em versões mais antigas do Chrome instalem a extensão, mostrando uma mensagem "Não compatível". Para usuários atuais, se uma atualização de uma extensão aumentar a minimum_chrome_version para uma versão mais recente do que a versão instalada do Chrome, eles vão parar de receber atualizações para essa extensão. Os desenvolvedores precisam estar cientes disso e informar os usuários se uma parte significativa da base de usuários puder ser afetada.