Una progressive web app (PWA) è un sito web che appare e si comporta come se fosse un’app mobile. Le PWA sono costruite per sfruttare le caratteristiche native dei dispositivi mobili, senza richiedere all’utente finale di visitare un app store, fare un acquisto e scaricare il software in locale. Invece, una PWA può essere localizzata con una query del motore di ricerca e vi si può accedere immediatamente attraverso un browser.
Le PWA eliminano la necessità per i commercianti di e-commerce di sviluppare applicazioni native per più sistemi operativi mobili. Proprio come i video di YouTube, il contenuto delle PWA viene scaricato progressivamente, il che fornisce all’utente finale un’esperienza utente migliore di un sito web tradizionale che utilizza un design reattivo. Il termine “progressive web apps” è stato coniato nel 2015 dal designer Frances Berriman e dall’ingegnere di Google Chrome, Alex Russell
L’obiettivo delle PWA è quello di sfumare la distinzione tra le app native e il web mobile, portando la maggior parte dei vantaggi delle app mobili native sul browser mobile. Le PWA utilizzano tecnologie basate sugli standard e vengono eseguite in un contenitore che è sicuro e accessibile a chiunque sul web. Possono inviare notifiche web push, 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 plugin del browser per garantire che il deployment 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 degli URI per indicare lo stato. Questo permette alla web app di mantenere o ricaricare il suo stato quando l’utente fa un bookmark o condivide l’URL dell’app.
L’UI di una web app progressiva dovrebbe essere correttamente dimensionata per il fattore di forma e le dimensioni dello schermo del dispositivo. Inoltre, dovrebbe avere l’aspetto di un’app nativa ed essere costruita su un modello di shell dell’applicazione. La PWA dovrebbe avere pochi refresh di pagina, e l’app dovrebbe funzionare in aree di bassa connettività o addirittura offline. Inoltre, i nuovi contenuti dovrebbero essere resi disponibili nell’app. Poiché le richieste di rete possono essere intercettate, l’app dovrebbe essere ospitata su HTTPS per prevenire attacchi man-in-the-middle ().