Um aplicativo web progressivo (PWA) é um site que se parece e se comporta como se fosse um aplicativo móvel. Os PWAs são construídos para aproveitar os recursos de dispositivos móveis nativos, sem exigir que o usuário final visite uma loja de aplicativos, faça uma compra e baixe software localmente. Em vez disso, um PWA pode ser localizado com um mecanismo de busca e acessado imediatamente através de um navegador.
PWAs eliminam a necessidade de comerciantes de comércio eletrônico desenvolverem aplicativos nativos para vários sistemas operacionais móveis. Assim como os vídeos do YouTube, o conteúdo PWA é baixado progressivamente, o que proporciona ao usuário final uma experiência melhor do que um site tradicional que utiliza um design responsivo. O termo "aplicações web progressivas" foi cunhado em 2015 pelo designer Frances Berriman e pelo engenheiro do Google Chrome, Alex Russell
O objetivo dos PWAs é desfocar a distinção entre aplicações nativas e a web móvel, trazendo a maioria dos benefícios das aplicações móveis nativas para o navegador móvel. Os PWAs utilizam tecnologias baseadas em padrões e funcionam em um contêiner seguro e acessível a qualquer pessoa na web. Eles podem enviar notificações web push, trabalhar offline e estar acessíveis a partir da tela inicial, assim como um aplicativo móvel de uma loja de aplicativos.
PWAs também podem aproveitar as APIs e plugins de navegador para garantir que a implantação e manutenção de um site permaneça o mais fácil possível. Outro benefício que os PWAs herdaram dos sites tradicionais é o uso de URIs para indicar o estado atual. Isso permite que o aplicativo web mantenha ou recarregue seu estado quando o usuário marcar ou compartilhar a URL.
Uma IU progressiva do aplicativo web deve ser dimensionada corretamente para o fator de forma e tamanho da tela do dispositivo. Além disso, ela deve parecer uma aplicação nativa e ser construída sobre um modelo de shell de aplicação. O PWA deve ter poucas atualizações de página, e o aplicativo deve funcionar em áreas de baixa conectividade ou mesmo offline. Além disso, novos conteúdos devem ser disponibilizados no aplicativo. Como as solicitações de rede podem ser interceptadas, a aplicação deve ser hospedada sobre HTTPS para evitar ataques man-in-the-middle ( MiTM ).