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.
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
() egetBadgeTextColor()
. 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 substituisetShelfEnabled()
. - API History:
chrome.history.getVisits()
echrome.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 aVisitItem
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
etimeoutMsForNonInteractive
. - API Storage: no Chrome 112, o tamanho de armazenamento do
chrome.session
foi aumentado para 10 MB. Em seguida, o tamanho de armazenamento dochrome.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 aextension.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()
emanagement.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
- Como usar o Google Analytics 4 mostra como acompanhar o uso do pop-up da extensão e dos eventos do worker de serviço.
- Como usar a 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 como 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 sobre avisos de permissão para facilitar a compreensão de como eles funcionam e como você pode oferecer uma melhor experiência ao usuário. Além disso, existem maneiras práticas de verificar quais avisos o usuário vai receber.
- Nossa equipe e colaboradores também adicionaram novos exemplos de extensão do Manifest V3: WASM em extensões, demonstração da API Scripting, livros de receitas da API Side Panel e exemplos da API DeclarativeNetRequest. Confira outros exemplos de extensões no nosso repositório de exemplos do GitHub.
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.