O que está acontecendo nas extensões do Chrome?

Até agora, 2023 tem sido um ano movimentado no mundo das extensões do Chrome. Seu feedback é muito importante e nos ajudou a melhorar a plataforma de extensões e a documentação. Também continuamos colaborando com outros fornecedores de navegadores no grupo da comunidade WebExtensions para que as APIs de extensão funcionem com mais consistência em todos os navegadores.

Nesta postagem, vamos compartilhar algumas mudanças em que a equipe de extensões do Chrome trabalhou durante o primeiro semestre deste ano e quais recursos serão lançados ainda neste trimestre. Vamos lá!

Novas APIs e recursos de extensão

Nesta seção, quero destacar alguns lançamentos significativos de API, revisar brevemente outras melhorias da API e compartilhar as próximas versões da API.

Destaques

Documentos fora da tela

A API Offscreen foi lançada no Chrome 109. Ele permite que as extensões do Manifest V3 processem casos de uso que precisam de interação com o DOM ou a janela, o que não pode ser realizado no service worker de extensão. Além disso, o Chrome 114 introduziu outros dois motivos fora da tela: 'WORKERS' para instâncias em que o documento precisa gerar um worker e 'LOCAL_STORAGE' para ajudar a migrar dados do window.localStorage para a API chrome.storage.

A partir do Chrome 115, é possível apresentar vários motivos ao criar um documento fora da tela. Isso permite que você execute duas tarefas relacionadas no mesmo documento.

Nova API Side Panel 🎉

Antes, a única maneira de criar barras laterais em extensões era injetando um novo elemento com scripts de conteúdo em cada página. No Chrome 114, a API Side Panel foi lançada. Agora você pode desenvolver uma experiência de barra lateral complementar para os usuários de maneira muito mais direta. Leia mais sobre como a API Side Panel permite criar uma experiência do usuário melhor.

Uma extensão de dicionário que mostra a definição de uma palavra selecionada
Extensão de dicionário do painel lateral. Confira o código no repositório chrome-extensions-samples.

Service Workers mais robustos

Todos os eventos de extensão agora reiniciam o timer de inatividade do service worker de extensão. No Chrome 110, o ciclo de vida máximo de cinco minutos foi removido para service workers de extensão. Além disso, as mensagens para aplicativos nativos e mensagens na extensão reiniciam o timer de inatividade. Leia mais sobre isso no artigo O ciclo de vida do service worker de extensão.

Mais lançamentos de API

  • API Action: a partir do Chrome 110, você pode personalizar o texto do selo com setBadgeTextColor() e getBadgeTextColor(). Além disso, o isEnabled() permite verificar se a ação está ativada para a guia atual.
  • API Commands: o bug em que os atalhos de extensão, declarados no manifesto em "commands._execute_action", não permaneciam durante a conversão para o MV3, foi corrigido no Chrome 111.
  • API Downloads: a interface de downloads padrão no Chrome foi movida de uma estante na parte de baixo para o lado direito da omnibox. Para desativar esse comportamento, você pode usar downloads.setUiOptions(), que substitui setShelfEnabled().
  • API History: chrome.history.getVisits() e chrome.history.search() também retornam dados de outros dispositivos que foram sincronizados com o banco de dados do histórico local. Isso pode resultar em mais entradas de histórico e contagens de visitas mais altas. A propriedade isLocal foi adicionada a VisitItem no Chrome 115 (a estimativa deve estar estável no final deste mês) para poder filtrar apenas por visitas locais.
  • API Identity: a janela de autenticação agora aparece como um pop-up, em vez de ocupar uma janela inteira do aplicativo. Para oferecer mais controle durante o processo de redirecionamento de JavaScript, adicionamos duas novas opções: abortOnLoadForNonInteractive e timeoutMsForNonInteractive.
  • API Storage: no Chrome 112, o tamanho do armazenamento do chrome.session aumentou para 10 MB. O tamanho do armazenamento do chrome.local foi alterado para corresponder ao Chrome 114.

Em breve...

As próximas versões do Chrome vão incluir vários recursos para facilitar a migração das extensões para o Manifesto V3. Para ver uma lista das próximas mudanças relacionadas à migração do MV3, acesse nossa página de problemas conhecidos. Além disso, planejamos adicionar os seguintes recursos:

  • API DeclarativeNetRequest: o valor padrão da propriedade isUrlFilterCaseSensitive muda para false. Consulte a conversa sobre o WECG (link em inglês).
  • A API File Handling (em inglês) vai permitir que as extensões do ChromeOS abram arquivos com tipos MIME e extensões de arquivo especificados. No momento, esse recurso está por trás de uma sinalização.
  • API Runtime: estamos lançando o runtime.getContexts() para substituir extension.getViews(), que foi descontinuado. Isso permitirá que as extensões determinem se uma página de extensão, como o painel lateral ou documento fora da tela, está aberta. Veja a proposta WECG.
  • Service Workers: estamos adicionando recursos de sinal de atividade avançados às APIs do Chrome que exibem uma solicitação do usuário: permissions.request(), desktopCapture.chooseDesktopMedia(), identity.launchWebAuthFlow() e management.uninstall().
  • API Side Panel: estamos lançando o sidepanel.open(), que abre o painel lateral da extensão de maneira programática em resposta a um gesto do usuário, como um clique no menu de contexto.
  • API TabCapture: estamos adicionando a capacidade de chamar getMediaStreamId() do service worker de extensão e receber um MediaStream de um ID de stream em um documento fora da tela. Consulte Gravação de áudio e captura de tela para ver exemplos.

Acompanhe a página O que há de novo nas extensões para saber esses avisos assim que forem disponibilizados no Chrome Beta.

Atualizações da documentação e mais orientações sobre o Manifest V3

Além disso, temos trabalhado muito para melhorar a experiência de aprendizado desses desenvolvedores. Agradecemos a todos que dedicaram um tempo para fazer perguntas sobre o chromium-group e informar problemas de documentação em developer.chrome.com.

Destaques

  • A nova seção Migração do MV3 oferece maneiras práticas de converter as extensões do Manifest V2 para o Manifest V3.
  • O guia Extension service workers fornece informações detalhadas sobre os tópicos de service workers de extensão. Isso inclui como eles são registrados e atualizados, qual é o ciclo de vida, como as importações funcionam e muito mais.
  • O tutorial Processar eventos com service workers ensina os conceitos básicos dos service workers de extensão. Ela cria uma extensão da omnibox que oferece acesso rápido às páginas de referência da API da extensão.

Mais atualizações

Em breve...

  • Como migrar um código hospedado remoto para o Manifest V3.
  • Como fazer testes automatizados para extensões do Chrome.
  • Melhoria nas orientações sobre solicitações de rede declarativa.
  • Melhorias na explicação do script de conteúdo.

💡 Você sabia?

Antes de encerrar, vamos compartilhar algumas ferramentas e insights úteis:

  • O Chrome começou a trabalhar para oferecer suporte ao WebHID. Você pode testar a API a partir do Chrome 115, mas saiba que isso ainda está em andamento.
  • O Puppeteer agora é compatível com testes no modo headless usando --headless=new . Leia mais sobre isso na postagem do blog Upgrade do modo headless do Chrome (em inglês).
  • Com a Ferramenta de teste de atualização de extensão, você pode verificar quais avisos são acionados quando as permissões são alteradas no manifesto. Dessa forma, é possível experimentar o processo de atualização como um usuário faria. Isso é importante porque algumas permissões podem desativar a extensão até que o usuário conceda acesso novamente.

Vamos conversar. 🙌

Este ano, a equipe de extensão teve a satisfação de conhecer os desenvolvedores de extensões pessoalmente durante os eventos do Google I/O Connect. Estamos trabalhando na criação de novos espaços para se conectar com você, como grupos de discussão e eventos de encontro.

Enquanto isso, continue fazendo perguntas nos chromium-groups, considerando a participação no WECG e relate quaisquer problemas de documentação no repositório do GitHub para developer.chrome.com.

Agradecemos novamente por fazer parte da comunidade de desenvolvedores de extensões.