A progressive web app (PWA) is a website that looks and behaves as if it is a mobile app. Unlike a mobile application, which is accessed through an app store and must be downloaded to the end user's device before it can be used, a PWA can be found through a search engine and used immediately.
Combining the characteristics of traditional web pages and newer mobile apps, PWAs are aimed at streamlining development using multiple technologies to produce websites that look and behave like mobile apps. PWAs promise to deliver rapid-fire, slick “app-like” experiences in the mobile web browser using open web technologies and offer improved performance and usability compared with a traditional responsive mobile site. PWAs potentially could have a significant impact on mobile web conversion rates while also eliminating the need for merchants to invest in developing costly native apps.
The term “progressive web apps” was coined in 2015 by designer Frances Berriman and Google Chrome engineer, Alex Russell. The goal of PWAs is to blur the distinction between native apps and the mobile web by bringing most of the benefits of native mobile apps to the mobile browser. PWAs use standards-based technologies and run in a container that is secure and accessible to anyone on the web. They can send web push notifications, work offline, and be accessible from the home screen (and thus readily available), just like a traditional mobile web app.
In addition to offering progressive downloads, PWAs can take advantage of new web APIs and design concepts, benefit from the web ecosystem, plugins and community, and provide the relative ease of deploying and maintaining a website. Another benefit PWAs have inherited from websites is that well-designed sites typically use the URI to indicate the current state of the app. This allows the web app to retain or reload its state when the user bookmarks or shares the app’s URL.
A progressive web app’s UI should be correctly sized for the device’s form factor and screen size. In addition, it should look like a native app and be built on an application shell model. The PWA should have few page refreshes, and the app should work in areas of low connectivity or even offline. What’s more, new content should be made available in the app. Because network requests can be intercepted, the app should be hosted over HTTPS to prevent man-in-the-middle (MiTM) attacks.