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

Até agora, 2023 foi um ano agitado no mundo das extensões do Chrome. Seu feedback valioso nos permitiu melhorar a plataforma de extensões e nossa documentação. Também continuamos a colaborar com outros fornecedores de navegadores no Grupo da comunidade de WebExtensions para que as APIs de extensão funcionem de maneira mais consistente em todos os navegadores.

Neste post, 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 começar!

Novas APIs e recursos de extensão

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

Destaques

Documentos fora da tela

A API Offscreen foi introduzida 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 feito no service worker da extensão. Além disso, o Chrome 114 introduziu mais dois motivos offscreen: 'WORKERS' para casos em que o documento precisa gerar um worker e 'LOCAL_STORAGE' para ajudar a migrar dados de window.localStorage para a API chrome.storage.

A partir do Chrome 115, é possível fornecer vários motivos ao criar um documento fora da tela. Isso permite que você realize 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 uma maneira muito mais simples. Saiba como a API Side Panel permite criar uma experiência do usuário superior.

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 worker de serviço da extensão. No Chrome 110, o tempo 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 dentro da 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 APIs

  • API Action: a partir do Chrome 110, é possível personalizar o texto do selo com setBadgeTextColor() e getBadgeTextColor(). Além disso, 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 persistiam durante a conversão para MV3, foi corrigido no Chrome 111.
  • API Downloads: a interface de downloads padrão no Chrome foi movida de uma prateleira na parte de baixo para o lado direito da caixa de pesquisa. Para desativar esse comportamento, use downloads.setUiOptions(), que substitui setShelfEnabled().
  • API History: chrome.history.getVisits() e chrome.history.search() também retornam dados de outros dispositivos sincronizados com o banco de dados de histórico local. Isso pode resultar em mais entradas no histórico e em um número maior de visitas. isLocal foi adicionado a VisitItem no Chrome 115 (esperado na versão estável no final deste mês) para filtrar apenas por visitas locais.
  • API Identity: a janela de autenticação agora aparece como um pop-up, em vez de ocupar uma janela de aplicativo completa. Para oferecer mais controle durante o processo de redirecionamentos JavaScript, adicionamos duas novas opções: abortOnLoadForNonInteractive e timeoutMsForNonInteractive.
  • API Storage: no Chrome 112, o tamanho de armazenamento do chrome.session foi aumentado para 10 MB. Em seguida, o tamanho de armazenamento do chrome.local foi alterado para corresponder ao do Chrome 114.

Em breve...

As próximas versões do Chrome vão apresentar muitos recursos para facilitar a migração das extensões para o Manifest V3. Para conferir 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 vai mudar para false. Consulte a linha WECG.
  • A API File Handling permite que as extensões do ChromeOS abram arquivos com tipos MIME e extensões de arquivo especificados. No momento, esse recurso está com uma sinalização.
  • API Runtime: estamos lançando a runtime.getContexts() para substituir a extension.getViews(), que foi descontinuada. Isso permite que as extensões determinem se uma página de extensão, como o painel lateral ou o documento fora da tela, está aberta. Consulte a proposta do WECG.
  • Service workers: estamos adicionando keep-alives fortes às APIs do Chrome que mostram uma solicitação do usuário: permissions.request(), desktopCapture.chooseDesktopMedia(), identity.launchWebAuthFlow() e management.uninstall().
  • API Side Panel: estamos lançando a sidepanel.open(), que vai abrir 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: adicionamos a capacidade de chamar getMediaStreamId() do service worker de extensão e receber uma MediaStream de um ID de stream em um documento fora da tela. Consulte Gravação de áudio e captura de tela para conferir exemplos.

Fique de olho na página Novidades nas extensões para conferir esses anúncios assim que forem disponibilizados no Chrome Beta.

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

Também estamos trabalhando para melhorar a experiência de aprendizado dos desenvolvedores. Agradecemos a todos que fizeram perguntas no chromium-group e informaram problemas de documentação em developer.chrome.com.

Destaques

  • A nova seção Migração para o MV3 oferece maneiras práticas de converter extensões do Manifest V2 para o Manifest V3.
  • O guia Extension service workers (em inglês) oferece informações detalhadas sobre os tópicos de extension service workers. Isso inclui como elas são registradas e atualizadas, como é o ciclo de vida, como as importações funcionam e muito mais.
  • O tutorial Processar eventos com service workers ensina os conceitos básicos de service workers de extensão. Ele 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 o código hospedado remotamente para o Manifest V3.
  • Como executar testes automatizados para extensões do Chrome.
  • Melhorias nas orientações sobre a solicitação de rede declarativa.
  • Melhorias na explicação do script de conteúdo.

💡 Você sabia?

Antes de encerrarmos, gostaríamos de compartilhar algumas ferramentas e insights úteis:

  • O Chrome começou a oferecer suporte ao WebHID. Você pode testar a API a partir do Chrome 115, mas ela ainda está em desenvolvimento.
  • O Puppeteer agora oferece suporte a testes no modo headless usando --headless=new . Leia mais sobre isso na postagem do blog Upgrade do modo headless do Chrome.
  • Com a ferramenta de teste de atualização de extensão, você pode verificar quais avisos são acionados quando as permissões mudam no manifesto. Assim, você pode conferir o processo de atualização como um usuário. Isso é importante porque algumas permissões podem desativar a extensão até que o usuário conceda o acesso novamente.

Vamos nos conectar. 🙌

Este ano, a equipe de extensões teve o prazer de conhecer desenvolvedores de extensões pessoalmente durante os eventos do Google I/O Connect. Estamos trabalhando para criar novos espaços para nos conectarmos com você, como o lançamento de grupos de discussão e eventos de encontro.

Enquanto isso, continue fazendo perguntas no chromium-groups, considere participar do WECG e informe quaisquer problemas de documentação no repositório do GitHub developer.chrome.com.

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