Novidades do Chrome 120 para extensões

O Chrome 120 já está disponível na versão Beta e inclui muitas atualizações interessantes para desenvolvedores de extensões do Chrome.

Foi um ano agitado para a equipe de extensões do Chrome. Com a versão Beta do Chrome 120 de ontem, a plataforma de extensões está mais um grande passo à frente. Para saber o que aconteceu este ano, confira nossas atualizações trimestrais de julho e outubro. Confira as novidades do Chrome 120 para extensões.

Como eliminar a lacuna entre as plataformas

Com o lançamento do Chrome 120, vamos fechar as lacunas restantes da plataforma listadas na nossa página de problemas conhecidos do Manifest V3. A nova API userScript e o suporte ao processamento de arquivos no ChromeOS foram os dois itens restantes na lista que agora podemos excluir. Com as mudanças descritas na atualização trimestral anterior, estamos muito felizes com o estado atual da plataforma de extensões do Chrome e com o que conseguimos no último ano.

Nova API userScripts

O suporte a scripts do usuário chegou! Os scripts do usuário são trechos de código (geralmente relativamente pequenos) que as extensões podem injetar em páginas da Web para modificar a aparência ou o comportamento delas. Eles podem ser criados diretamente pelo usuário ou descobertos em vários repositórios de scripts do usuário na Web. A partir do Chrome 120, as extensões do Manifest V3 agora podem gerenciar a coleta de scripts do usuário e determinar quando e como injetá-los nas páginas da Web.

Há uma diferença significativa entre o suporte a scripts do usuário no Manifest V2 e no Manifest V3. Como os scripts de usuário são poderosos e exigem alta confiança no autor, a equipe do Chrome decidiu que os usuários precisam ativar o modo de desenvolvedor antes de executar um script de usuário.

Página "Extensões"
Página de extensões (chrome://extensions)

Nosso novo exemplo de userScript demonstra uma abordagem simples para detectar se o modo de desenvolvedor está ativado e fornecer um fluxo de integração simples.

Exemplo de fluxo de integração para scripts do usuário.
Integrar os usuários quando o Modo de desenvolvedor estiver desativado.

Para começar, confira a documentação ou a amostra oficial.

Limites de regras DNR estáticas mais altos

Aumentamos significativamente o limite de conjuntos de regras estáticas ativados de 10 para 50. Além disso, aumentamos o número total de conjuntos de regras estáticas permitidos de 50 para 100. Esta é uma resposta ao feedback que recebemos no grupo da comunidade das extensões da Web.

Nova API ReadingList

O Chrome lançou a Lista de leitura em 2021. No ano passado, a equipe do Chrome facilitou ainda mais o acesso à lista de leitura pelo painel lateral. Com o Chrome 120, adicionamos a capacidade de as extensões do Chrome criarem, lerem, atualizarem e excluírem entradas da lista de leitura. Para saber mais, confira os documentos da API e nosso novo exemplo.

Lista de leitura do Chrome mostrando páginas de documentos da extensão.
O painel lateral da Lista de leitura no Chrome.

Processamento de arquivos no ChromeOS

O processamento de arquivos permite que as extensões abram arquivos com tipos MIME e extensões especificados de maneira semelhante ao processamento de arquivos da plataforma da Web. Confira Como processar arquivos no ChromeOS para saber mais sobre como usá-lo.

Captura de tela do arquivo aberto com a caixa de diálogo de extensão no ChromeOS
Abrir arquivos em uma extensão no ChromeOS.

Acionar um alarme em 30 segundos

Essa é uma pequena atualização, mas que aborda uma lacuna importante no ciclo de vida do service worker. Devido à natureza orientada a eventos dos service workers, a maneira recomendada de disparar um evento no futuro é usar chrome.alarms. A API Alarms garante que o evento seja acionado mesmo que o service worker seja encerrado nesse meio tempo.

Mas há um problema. Antes do Chrome 120, o tempo mais curto para acionar um alarme era de um minuto. No entanto, os service workers são encerrados após 30 segundos de inatividade. Portanto, não havia uma maneira simples de programar um alarme para disparar em 45 segundos, porque, ao usar setTimeout() para definir um evento em 45 segundos, o worker de serviço poderia ser encerrado antes do evento ser acionado.

A partir do Chrome 120, agora é possível disparar um evento em:

await chrome.alarms.create('demo-default-alarm', {
   periodInMinutes: 0.45
 });

Resumo

Estamos muito felizes com o progresso que a plataforma de extensões fez no último ano. O Chrome 120 é mais um grande passo com o aumento dos limites de DNR e o suporte a scripts do usuário.