Depois de ler a seção Get Started, use este guia como uma descrição dos componentes de extensão, os recursos deles no Manifest V3 e como combiná-los. Primeiro, familiarize-se com os recursos das extensões: Depois, saiba como combinar esses recursos usando a seção de conceitos principais das extensões.

Projetar a interface do usuário

A maioria das extensões precisa de algum tipo de interação do usuário para funcionar. Com a plataforma de extensões, você tem várias maneiras de adicionar interações à sua extensão. Esses métodos incluem pop-ups acionados pela barra de ferramentas do Chrome, painéis laterais, menus de contexto e muito mais.
Use a API chrome.sidePanel para hospedar conteúdo no painel lateral do navegador com o conteúdo principal de uma página da Web.
Controla a exibição do ícone de uma extensão na barra de ferramentas.
Adicione itens ao menu de contexto do Google Chrome.

Controlar o navegador

As APIs de extensão do Chrome possibilitam mudar a forma como o navegador funciona.
As substituições de configurações são uma maneira de as extensões modificarem as configurações selecionadas do Chrome. Além disso, as extensões podem usar páginas de substituição HTML para substituir uma página que o Google Chrome normalmente fornece. Uma extensão pode substituir o gerenciador de favoritos, a guia "Histórico" ou a nova guia.
As extensões adicionam funcionalidade ao Chrome DevTools acessando APIs de extensão específicas dele por uma página adicionada à extensão. Também é possível usar a API chrome.debugger para invocar o protocolo de depuração remota do Chrome. Anexe a uma ou mais guias para instrumentar a interação de rede, depurar JavaScript, modificar o DOM e muito mais.
A API chrome.notifications permite criar notificações usando modelos e mostrá-las para os usuários na bandeja do sistema.
Use a API chrome.history para interagir com o registro de páginas visitadas do navegador e a API chrome.browsingData para gerenciar outros dados de navegação. Use chrome.topSites para acessar os sites mais visitados.
Use APIs como chrome.tabs, chrome.tabGroups e chrome.windows para criar, modificar e organizar o navegador do usuário.
Use a API chrome.commands para adicionar atalhos de teclado que acionam ações na sua extensão. Por exemplo, você pode adicionar um atalho para abrir a ação do navegador ou enviar um comando para a extensão.
Use a API chrome.identity para receber tokens de acesso do OAuth 2.0.
A API chrome.management oferece maneiras de gerenciar a lista de extensões instaladas e em execução. Esse recurso é particularmente útil para extensões que substituem a página "Nova guia" integrada.
A API chrome.omnibox permite registrar uma palavra-chave com a omnibox (barra de endereço) do Google Chrome.
Use a API chrome.privacy para controlar o uso de recursos no Chrome que podem afetar a privacidade do usuário. Consulte também a API chrome.proxy para gerenciar as configurações de proxy do Chrome.
Use a API chrome.downloads para iniciar, monitorar, manipular e pesquisar downloads de forma programática.
Use as APIs chrome.bookmarks e chrome.readingList para criar, organizar e manipular essas listas.

Controle a Web

Altere dinamicamente o conteúdo e o comportamento das páginas da Web. É possível controlar e modificar a Web injetando scripts, interceptando solicitações de rede e usando APIs da Web para interagir com páginas.
Scripts de conteúdo são arquivos executados no contexto de páginas da Web. Eles usam o Modelo de objeto de documentos (DOM) padrão para ler detalhes de páginas da Web acessadas pelo navegador, fazer alterações e transmitir informações para a extensão pai.
A permissão "activeTab" concede à extensão acesso temporário à guia ativa no momento quando o usuário invoca a extensão, por exemplo, clicando na ação. O acesso à guia dura enquanto o usuário está nessa página e é revogado quando ele sai ou fecha a guia.
Use as APIs chrome.declarativeNetRequest, chrome.webRequest e chrome.webNavigation para observar, bloquear e modificar solicitações de rede.
Saiba mais sobre as diferentes abordagens para gravar áudio e vídeo de uma guia, janela ou tela usando APIs de plataforma da Web, como chrome.tabCapture ou getDisplayMedia().
Use a API chrome.contentSettings para controlar se os sites podem usar recursos como cookies, JavaScript e plug-ins. De modo geral, as configurações de conteúdo permitem que você personalize o comportamento do Chrome por site, e não globalmente.

Conceitos básicos

Com as APIs de plataforma da Web e extensão, você pode criar recursos mais complexos combinando diferentes componentes de IU e recursos da plataforma de extensões.
Um service worker de extensão (service-worker.js) é um script baseado em eventos executado em segundo plano pelo navegador. Muitas vezes, é usado para processar dados, coordenar tarefas em diferentes partes de uma extensão e como gerente de eventos da extensão.
Entenda as permissões: como elas funcionam e quando evitar pedir quando não forem necessárias.
Muitas vezes, os scripts de conteúdo ou outras páginas de extensão precisam enviar ou receber informações do service worker de extensão. Nesses casos, qualquer um dos lados pode ouvir as mensagens enviadas da outra extremidade e responder no mesmo canal.
Ative suas extensões para trocar mensagens com aplicativos nativos.
No Manifest V3, as extensões precisam agrupar todo o código que estão usando dentro da própria extensão. Existem diferentes estratégias para fazer isso.
As extensões do Chrome têm uma API Storage especializada, disponível para todos os componentes de extensão. Ele inclui quatro áreas de armazenamento separadas para casos de uso específicos e um listener de eventos que rastreia sempre que os dados são atualizados.
Service workers não têm acesso ao DOM. A API Offscreen permite que a extensão use APIs DOM em um documento oculto sem interromper a experiência do usuário abrindo novas janelas ou guias.
O isolamento de origem cruzada permite que uma página da Web use recursos avançados, como o SharedArrayBuffer. Uma extensão pode ativar o isolamento de origem cruzada especificando os valores apropriados para as chaves de manifesto "cross_origin_embedder_policy" e "cross_origin_opener_policy".