Como transformar seu site em um progressive web app

Como transformar seu site em um PWA (código testado) | We.Inc

Deixe qualquer site instalável e pronto para funcionar offline: um gerador de manifest, um service worker testado, um botão de instalar, os limites do iPhone e a configuração em Vite ou Next.js.

Como transformar seu site em um progressive web app

Para transformar um site em um progressive web app, sirva-o por HTTPS, adicione um manifest.webmanifest com nome, start_url, modo de exibição e ícones de 192 e 512 pixels, vincule-o em todas as páginas e registre um service worker que guarde os arquivos em cache para uso offline. Os navegadores Chromium passam a oferecer a instalação; quem usa Safari adiciona pelo menu Compartilhar.

As três partes de um PWA

Preencha o formulário para obter um manifest e as tags do head para colar, depois copie o service worker e o script de instalação. O worker desta página foi executado em um navegador real com a rede cortada antes de publicarmos.

Perguntas frequentes

Um PWA precisa de service worker para ser instalável?

No Chrome atual, não: um manifest válido, HTTPS e algum engajamento do usuário bastam para a opção de instalar. Ainda assim você quer um worker, porque sem ele o app instalado mostra a página de erro do navegador quando está offline.

PWAs funcionam no iPhone?

Sim, com limites. Quem usa Safari instala pelo menu Compartilhar, não existe o evento de aviso de instalação e as notificações push só funcionam para um site adicionado à Tela de Início no iOS 16.4 ou mais recente. O cache offline funciona.

Por que meu botão de instalar nunca aparece?

beforeinstallprompt só dispara em navegadores Chromium, só quando os critérios de instalação são atendidos e não quando o app já está instalado. Veja o motivo na seção Manifest do painel Application do DevTools.

Como verifico um PWA agora que o Lighthouse não tem mais nota de PWA?

O Lighthouse 12 removeu a categoria PWA. Use o painel Application do Chrome DevTools: a visão Manifest lista erros de instalabilidade e problemas de ícone, e a visão Service workers mostra o registro, as atualizações e um botão Offline.

Como atualizo um PWA depois de um lançamento?

Mude o VERSION do cache no sw.js. O navegador percebe o worker alterado, instala-o, e a etapa activate remove os caches antigos. Com skipWaiting e clients.claim, o novo worker assume no próximo carregamento.

Cache-first ou network-first

Erros comuns

O que você ganha, e os limites no iPhone

Instalar dá ao seu site um ícone próprio e uma janela sem a barra de endereço. Um service worker adiciona páginas offline. O push precisa dos dois, e a Apple só o permite para sites que o usuário adicionou à Tela de Início.

O que um PWA consegue fazer, por plataforma

Um service worker que funciona

Três arquivos fazem um site funcionar offline: o worker, uma página de fallback e algumas linhas para registrá-lo. Rodamos exatamente estes arquivos em localhost no Chromium: o worker foi instalado, o cache foi preenchido e, com o servidor parado, a página inicial carregou do cache enquanto uma página nunca visitada mostrou o offline.html.

sw.js: um service worker mínimo que funciona offline

As páginas tentam a rede primeiro para que as pessoas vejam conteúdo atualizado, depois recorrem a uma cópia em cache e por fim ao offline.html. Arquivos como CSS, scripts e ícones vêm primeiro do cache. Mudar VERSION faz a próxima etapa activate apagar os caches antigos.

offline.html: a página de fallback

Deixe-a autossuficiente: estilos inline e nenhum arquivo externo, porque nada mais pode estar acessível quando ela aparecer.

Um botão de instalar

app.js: registre o worker e mostre um botão de instalar

O evento beforeinstallprompt só dispara em navegadores Chromium (Chrome, Edge, Samsung Internet, Opera). Safari e Firefox nunca o enviam, então o botão fica oculto neles e as pessoas usam o menu do próprio navegador.

Critérios de instalação hoje

O Chrome não exige mais um service worker para oferecer a instalação; ele verifica o manifest e os itens abaixo. O Lighthouse 12 removeu a categoria PWA, então verifique a instalabilidade no Chrome DevTools: painel Application, depois Manifest, que lista qualquer problema em Installability.

Requisitos de instalação do Chrome

Configuração em Vite e Next.js

Vite: vite-plugin-pwa

Instale com npm i -D vite-plugin-pwa. O plugin escreve o manifest e gera um service worker Workbox no build, então você não escreve o sw.js à mão. Coloque os ícones em public/.

Next.js App Router: app/manifest.ts

O Next.js serve este arquivo em /manifest.webmanifest e adiciona a tag link para você. Para suporte offline, coloque o sw.js acima em public/ e registre-o a partir de um pequeno client component.

Next.js: registre public/sw.js a partir de um client component

Renderize isto uma vez em app/layout.tsx. Pule o registro em desenvolvimento para que um build em cache não esconda suas edições.

Nome do app

Nome curto (abaixo do ícone)

URL inicial

Pasta dos ícones

Cor do tema

Cor de fundo

Copiar

Gerador de manifest

Exibição

Incluir um ícone maskable

Salve seus ícones como icon-192.png e icon-512.png (e icon-512-maskable.png) na pasta dos ícones.

Tags para o head de todas as páginas

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site