Até agora, 2023 foi um ano movimentado no mundo das extensões do Chrome. Seu feedback valioso nos permitiu melhorar a plataforma de extensão e nossa documentação. Também continuamos colaborando com outros fornecedores de navegadores no WebExtensions Community Group para que as APIs de extensão funcionem de maneira mais consistente em todos os navegadores.
Nesta postagem, vamos compartilhar algumas mudanças nas quais a equipe de extensões do Chrome trabalhou durante o primeiro semestre deste ano e quais recursos serão lançados no final deste trimestre. Vamos começar!
Novos recursos e APIs de extensões
Nesta seção, quero destacar alguns lançamentos de API significativos, analisar brevemente outras melhorias de API e compartilhar as próximas versões da API.
Destaques
Documentos fora da tela
A API Offscreen foi apresentada no Chrome 109. Ele permite que as extensões do Manifest V3 lidem com casos de uso que precisam de interação com o DOM ou a janela, o que não pode ser executado no service worker de extensão. Além disso, o Chrome 114 apresentou dois outros 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 todas as páginas. A API Side Panel foi iniciada no Chrome 114. 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 melhor para o usuário.
Service Workers mais robustos
Todos os eventos de extensão agora reiniciam o timer de inatividade do service worker. No Chrome 110, o ciclo de vida máximo de cinco minutos foi removido para os service workers de extensões. 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
() egetBadgeTextColor()
. Além disso, oisEnabled()
permite verificar se a ação está ativada na 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 estante na parte de baixo para o lado direito da omnibox. Para desativar esse comportamento, use
downloads.setUiOptions()
, que substituisetShelfEnabled()
. - API History: o
chrome.history.getVisits()
e ochrome.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 no histórico e contagens de visitas mais altas. OisLocal
foi adicionado aoVisitItem
no Chrome 115 (que deve ficar estável ainda este 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 garantir mais controle durante o processo de redirecionamentos JavaScript, adicionamos duas novas opções:
abortOnLoadForNonInteractive
etimeoutMsForNonInteractive
. - API Storage: no Chrome 112, o tamanho do armazenamento do
chrome.session
aumentou para 10 MB. O tamanho do armazenamento dechrome.local
foi alterado para corresponder ao 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 Manifesto V3. Para ver uma lista das próximas alterações relacionadas à migração do MV3, confira 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 de execução 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á por trás de uma sinalização.
- API Runtime: estamos lançando
runtime.getContexts()
para substituirextension.getViews()
, que foi descontinuado. Assim, as extensões poderão determinar se uma página da extensão, como o painel lateral ou um documento fora da tela, está aberta. Confira a proposta do WECG. - Service workers: estamos adicionando keep-alives fortes às APIs do Chrome que exibem uma solicitação do usuário:
permissions.request()
,desktopCapture.chooseDesktopMedia()
,identity.launchWebAuthFlow()
emanagement.uninstall()
. - API Side Panel: estamos lançando o
sidepanel.open()
, que vai abrir o painel lateral da extensão de forma 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 um MediaStream de um ID de stream em um documento fora da tela. Consulte Gravação de áudio e captura de tela para exemplos.
Fique de olho na página O que há de novo nas extensões para saber mais sobre esses comunicados assim que eles forem disponibilizados no Chrome Beta.
Upgrades de documentação e mais orientações sobre o Manifest V3
Também estamos trabalhando muito para melhorar a experiência de aprendizado dos desenvolvedores. Agradecemos a todos que se dedicaram a 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 extensões do Manifest V2 para o Manifesto V3.
- O guia Workers de serviço de extensão fornece informações detalhadas sobre os tópicos dos service workers de extensão. Isso inclui como eles são registrados e atualizados, a aparência do ciclo de vida, como as importações funcionam e muito mais.
- O tutorial Gerenciar eventos com service workers ensina os conceitos básicos dos service workers de extensão. Ele cria uma extensão omnibox que oferece acesso rápido a páginas de referência da API de extensão.
Mais atualizações
- Como usar o Google Analytics 4 demonstra como acompanhar o uso do pop-up da extensão e dos eventos do service worker.
- Usar geolocalização mostra como conseguir a localização geográfica da extensão usando a API Offscreen.
- Gravação de áudio e captura de tela ensina a capturar áudio e vídeo de guias, janelas ou telas usando as APIs
chrome.tabCapture
enavigator.mediaDevices.getDisplayMedia()
. - Adicionamos novas dicas de depuração ao guia Extensões de depuração.
- Atualizamos as diretrizes de avisos de permissão para você entender melhor como esses avisos funcionam e como você pode melhorar a experiência do usuário. Além disso, existem maneiras práticas de verificar quais avisos o usuário verá.
- Nossa equipe e nossos colaboradores também adicionaram novos exemplos de extensão Manifest V3: WASM em extensões, demonstração da API Scripting, livros de receitas da API Side Panel e exemplos da API DeclarativeNetRequest. Veja outros exemplos de extensão no nosso repositório de exemplos do GitHub (em inglês).
Em breve...
- Como migrar código hospedado remotamente para o Manifesto V3.
- Como executar testes automatizados para extensões do Chrome.
- Melhoria nas orientações sobre solicitações de rede declarativas.
- Melhorias na explicação do script de conteúdo.
💡 Você sabia?
Antes de encerrar, queremos compartilhar alguns insights e ferramentas úteis:
- O Chrome começou a trabalhar no suporte ao WebHID. Você pode testar a API a partir do Chrome 115, mas saiba que esse trabalho 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 para o modo headless do Chrome (em inglês). - Com a Ferramenta de teste de atualização de extensões, você pode verificar quais avisos são acionados quando as permissões mudam no manifesto. Dessa forma, use 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. 🙌
Neste 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, considere participar do WECG e relate quaisquer problemas de documentação no repositório do GitHub do developer.chrome.com.
Agradecemos novamente por fazer parte da comunidade de desenvolvedores de extensões.