Een progressive web app (PWA) is een website die eruitziet en zich gedraagt alsof het een mobiele app is. PWA’s zijn gebouwd om te profiteren van native mobiele apparaatfuncties, zonder dat de eindgebruiker een app-winkel hoeft te bezoeken, een aankoop hoeft te doen en software lokaal hoeft te downloaden. In plaats daarvan kan een PWA worden gevonden met een zoekopdracht in een zoekmachine en onmiddellijk worden geopend via een browser.
PWAs elimineren de noodzaak voor e-commerce merchants om native apps te ontwikkelen voor meerdere mobiele besturingssystemen. Net als YouTube video’s wordt PWA content progressief gedownload, wat de eindgebruiker een betere gebruikerservaring biedt dan een traditionele website die gebruik maakt van responsive design. De term “progressive web apps” werd in 2015 bedacht door ontwerper Frances Berriman en Google Chrome engineer, Alex Russell
Het doel van PWA’s is om het onderscheid tussen native apps en het mobiele web te vervagen door de meeste voordelen van native mobiele apps naar de mobiele browser te brengen. PWA’s maken gebruik van op standaarden gebaseerde technologieën en draaien in een container die veilig en toegankelijk is voor iedereen op het web. Ze kunnen web push-notificaties versturen, offline werken en toegankelijk zijn vanaf het startscherm, net als een mobiele app uit een app store.
PWA’s kunnen ook gebruik maken van API’s en browser plugins om ervoor te zorgen dat het implementeren en onderhouden van een website zo eenvoudig mogelijk blijft. Een ander voordeel dat PWA’s hebben geërfd van traditionele websites is het gebruik van URI’s om de status aan te geven. Hierdoor kan de web app zijn status behouden of opnieuw laden wanneer de gebruiker de URL van de app bookmarkt of deelt.
De UI van een progressive web app moet de juiste afmetingen hebben voor de vormfactor en schermgrootte van het apparaat. Daarnaast moet het eruit zien als een native app en gebouwd zijn op een applicatie shell model. De PWA moet weinig paginaverversingen hebben, en de app moet werken in gebieden met een lage connectiviteit of zelfs offline. Bovendien moet nieuwe inhoud beschikbaar worden gemaakt in de app. Omdat netwerkverzoeken onderschept kunnen worden, zou de app over HTTPS gehost moeten worden om man-in-the-middle () aanvallen te voorkomen.