Un'app Web progressiva (PWA) è un sito Web che appare e si comporta come se fosse un'app mobile. Le PWA sono progettate per sfruttare le funzionalità native dei dispositivi mobili, senza richiedere all'utente finale di visitare un app store, effettuare un acquisto e scaricare software in locale. Invece, una PWA può essere individuata con una query del motore di ricerca e acceduta immediatamente tramite un browser.
Le PWA eliminano la necessità per i commercianti di e-commerce di sviluppare app native per più sistemi operativi mobili. Proprio come i video di YouTube, il contenuto PWA viene scaricato progressivamente, il che fornisce all'utente finale un'esperienza utente migliore rispetto a un sito Web tradizionale che utilizza un design reattivo. Il termine "app web progressive" è stato coniato nel 2015 dalla designer Frances Berriman e dall'ingegnere di Google Chrome, Alex Russell
L'obiettivo delle PWA è sfumare la distinzione tra app native e Web mobile portando la maggior parte dei vantaggi delle app mobili native sul browser mobile. Le PWA utilizzano tecnologie basate su standard e vengono eseguite in un contenitore sicuro e accessibile a chiunque sul Web. Possono inviare notifiche push web, lavorare offline ed essere accessibili dalla schermata iniziale, proprio come un'app mobile da un app store.
Le PWA possono anche trarre vantaggio dalle API e dai plug-in del browser per garantire che la distribuzione e la manutenzione di un sito Web rimangano il più semplici possibile. Un altro vantaggio che le PWA hanno ereditato dai siti Web tradizionali è l'uso di URI per indicare lo stato corrente. Ciò consente all'app Web di mantenere o ricaricare il proprio stato quando l'utente aggiunge ai segnalibri o condivide l'URL dell'app.
L'interfaccia utente di un'app Web progressiva deve essere dimensionata correttamente per il fattore di forma e le dimensioni dello schermo del dispositivo. Inoltre, dovrebbe apparire come un'app nativa ed essere costruita su un modello di shell dell'applicazione. La PWA dovrebbe avere pochi aggiornamenti di pagina e l'app dovrebbe funzionare in aree di bassa connettività o anche offline. Inoltre, i nuovi contenuti dovrebbero essere resi disponibili nell'app. Poiché le richieste di rete possono essere intercettate, l'app deve essere ospitata su HTTPS per prevenire attacchi man-in-the-middle (MiTM).