Gerenciamento de navegação em PWAs instalados

Demián Renzulli
Demián Renzulli
Dan Murphy
Dan Murphy
Dibyajyoti Pal
Dibyajyoti Pal
Vincent Scheib
Vincent Scheib

Publicado em: 19 de agosto de 2025

O gerenciamento de navegação abrange os métodos para controlar como um Progressive Web App (PWA) lida com a navegação do usuário. Um componente essencial disso é a captura de navegação, o processo do navegador que determina se clicar em um link deve iniciar o PWA instalado ou abrir uma nova guia do navegador.

Este guia aborda a nova versão da captura de navegação, disponível a partir do Chrome 139. Embora o comportamento padrão do navegador seja adequado para a maioria dos casos, é essencial entender melhor essas técnicas de gerenciamento e as APIs relacionadas se você quiser criar a experiência mais tranquila para seus usuários.

A seção Controles do desenvolvedor mostra como personalizar a navegação para oferecer a melhor experiência de inicialização possível para seu PWA.

O novo comportamento padrão

Para se alinhar às preferências do usuário e reduzir o atrito, o Chrome está padronizando a forma como lida com os links. Antes, o comportamento era inconsistente entre as plataformas. Os dispositivos móveis geralmente priorizavam o lançamento de apps instalados, enquanto os navegadores para computador primeiro abriam um link em uma guia antes de sinalizar que um app poderia processá-lo.

A nova abordagem unificada para captura de navegação abre automaticamente os links no PWA instalado correspondente. Os links só vão voltar para uma guia do navegador se o PWA não estiver instalado ou se o usuário tiver desativado a opção. Esse novo comportamento está disponível no Chrome 139 para Windows, Mac e Linux. O suporte para ChromeOS será lançado em uma versão futura.

Clicar em um link seleciona o PWA instalado, se disponível, ou abre o destino em uma guia do navegador.
O novo comportamento de captura de navegação que prioriza o lançamento de PWAs instalados está disponível a partir do Chrome 139.

A captura de navegação faz parte do processo de gerenciamento de navegação. Esse processo abrange todo o fluxo, desde a ação inicial do usuário até as decisões do navegador e os comportamentos resultantes configurados pelo desenvolvedor:

  • Ações do usuário:inclui interações como clicar ou tocar em links.
  • Decisões do navegador:incluem tarefas e decisões gerenciadas pelo navegador, como comportamentos padrão, como captura de navegação.
  • Controles do desenvolvedor:incluem APIs da Web que permitem aos desenvolvedores instruir o navegador sobre como lidar com tarefas específicas.

A interação desses elementos determina se o PWA é aberto em uma janela independente ou em uma guia do navegador.

O gerenciamento de navegação é resultado de ações do usuário, decisões do navegador e controles do desenvolvedor.

Um caso de uso fundamental do gerenciamento de navegação é quando um usuário clica ou toca em um link para o PWA instalado em outra página do navegador. O exemplo a seguir mostra o caso de um usuário que instalou o PWA do Google Chat e clicou em um link para ele em um convite do Google Agenda.

O usuário clica em um link para chat.google.com (instalado como um PWA) em calendar.google.com.

Ações do usuário

Toda ação do usuário consiste em três elementos principais: o evento (como um clique ou toque), a superfície em que ele ocorre (como uma página da Web ou um atalho da área de trabalho) e o tipo de link ativado (como um URL HTTPS). Por exemplo, a ação de um usuário pode ser clicar em um link para https://chat.google.com/meeting_room_id no escopo do PWA do Google Chat em uma página da Web em calendar.google.com.

Decisões do navegador

Após uma ação do usuário, como clicar na etapa anterior, o navegador executa o processo de captura de navegação para decidir se os links devem ser abertos em uma guia do navegador ou em um PWA instalado. Ele consiste nas seguintes etapas:

  1. Determine se a navegação é capturável: em geral, uma navegação é considerada capturável se ela cria um novo frame e não é aberta em um contexto de navegação auxiliar.
  2. Identificar um PWA de controle: se a navegação puder ser capturada, o navegador tentará encontrar um PWA que "controle" o URL (está dentro do escopo definido no manifesto do app da Web).
  3. Verificar a preferência do usuário: se um PWA de controle for encontrado, o navegador vai verificar a preferência do usuário. Se o usuário não tiver desativado a opção nas configurações do app, o PWA será iniciado. Caso contrário, o link será aberto em uma nova guia do navegador.
  4. Inicie o PWA: o navegador inicia o PWA usando o algoritmo de processamento de inicialização. Você pode influenciar isso usando a API Launch Handler, que será abordada a seguir.

O diagrama a seguir resume esse processo:

imagem
Captura de navegação: etapas realizadas pelo navegador para determinar se os links devem ser abertos em uma guia do navegador ou se um PWA deve ser iniciado após uma ação do usuário.

Controles para desenvolvedores

Embora o processo de navegação dependa principalmente dos padrões do navegador e das configurações do usuário, você pode usar várias APIs para gerenciar aspectos específicos dele. Após a atualização recente de captura de navegação, algumas APIs da Web de longa data se tornaram mais relevantes.

API Launch Handler

Essa API entra em ação quando o navegador decide iniciar o PWA, permitindo que você controle como ele é iniciado, por exemplo, em uma janela nova ou existente.

O PWA pode ser iniciado ao focar uma janela aberta ou abrir uma nova.
API Launch Handler: permite determinar como o PWA será iniciado.

Defina como o PWA é iniciado usando o membro launch_handler no manifesto do app da Web, que inclui um subcampo chamado client_mode. Esse subcampo determina se uma janela nova ou existente deve ser usada e se ela precisa navegar. Os valores permitidos para client_mode são:

  • focus-existing: para processar o link em uma janela de app aberta, como um PWA que já está sendo executado no modo independente.
  • navigate-existing: nessa opção, o contexto de navegação mais recente em uma janela de app da Web é direcionado para o URL de destino do lançamento.
  • navigate-new: com essa opção, um novo contexto de navegação é criado em uma janela de app da Web para carregar o URL de destino do lançamento.

Use o launchQueue API para fornecer parâmetros adicionais e processar casos especiais. A API Launch Handler está disponível no Chrome 110, mas fica muito mais útil com a atualização de captura de navegação. Saiba mais na documentação da API Launch Handler.

Outras APIs relacionadas

Além do processamento de inicialização, outras APIs também podem desempenhar um papel nesse processo, dependendo das necessidades específicas do seu app. Isso inclui os gerenciadores de protocolos de URL, que permitem que um web app registre a capacidade de processar esquemas de URL além dos padrões http e https (por exemplo, protocolos padrão como mailto: ou personalizados como web+music). Além disso, a API Web App Scope Extensions (atualmente em desenvolvimento) permite estender o escopo do seu PWA para capturar links de outras origens, incluindo subdomínios. Assim, quando um usuário clica em um link de uma origem associada, o PWA pode ser iniciado. Abordar esses temas em profundidade está fora do escopo deste artigo, mas você pode conferir os links correspondentes para saber mais.

Para concluir, saiba como as diferentes partes funcionam juntas no exemplo de clicar em um link do Google Agenda para uma sala do Google Chat, para um usuário que já instalou o PWA do Google Chat.

Antes da captura de navegação

No vídeo a seguir, um usuário cria uma reunião do Google Agenda e convida três convidados. O app Agenda gera automaticamente um link do Google Chat que inclui todos os participantes. Quando o usuário clica nesse link, a sala de chat é aberta em uma nova guia do navegador. Um ícone na barra de endereço indica que um PWA correspondente está instalado, mas exige que o usuário o inicie manualmente. Este era o comportamento antes da atualização de captura de navegação:

Após a captura de navegação

O vídeo a seguir mostra o mesmo fluxo de trabalho do usuário, mas agora com o novo comportamento de captura de navegação. Nesta versão, clicar no link do Google Chat no Google Agenda abre a sala de chat correspondente diretamente no PWA instalado. Além disso, a equipe do Google Chat implementou o processamento de inicialização ao adicionar um atributo launch_handler ao manifesto do app da Web. Ao definir o client_mode como focus-existing, eles garantem que o link seja aberto em uma instância existente do PWA, se uma já estiver em execução. Ao remover a latência envolvida na abertura de uma nova guia do navegador e no acionamento do carregamento de uma página, o "tempo até a interatividade do usuário" efetivo pode ser, por design, mais rápido. Na verdade, o Google Chat melhorou significativamente a latência de navegação ao remover a necessidade de iniciar um novo app.

Conclusão e próximas etapas

Este artigo abordou o novo comportamento padrão de captura de navegação disponível no Chrome 139, com foco em um caso de uso comum de um usuário clicando em um link HTTPS no escopo de um PWA instalado. Para mais informações e casos de uso, consulte Gerenciamento de navegação em PWAs instaladas. O diagrama a seguir mostra o detalhamento completo dos casos de uso, incluindo eventos do usuário, plataformas e protocolos, com os resultados correspondentes:

As diferentes etapas descritas no artigo.
Diagrama de captura de navegação (versão completa)

O gerenciamento de navegação é um aspecto crucial, mas muitas vezes ignorado, da UX do app, já que controla o ponto de entrada dele. Os recursos e links abordados neste artigo podem ajudar você a alcançar a melhor experiência possível semelhante a um app para seu PWA.