PWAs are web applications that use progressive enhancement strategy, which means that they check whether the browser supports certain Web APIs, and if it does, then they can use them. Hence the name - Progressive Web Apps.

Some trivia

The term was coined in 2015 by Google engineer Alex Russel and his spouse Frances Berriman.

The idea behind PWA is not new – the main concept goes as far back as Palm webOS, Firefox OS, and Chrome OS, where all apps are essentially web apps.

Back in 2007, 18 days before the release of the first iPhone, Steve Jobs announced the idea that apps will be created using web technology and will be delivered over the network. Initially, there were no plans for the App Store, and the native SDK was not available in the device’s first year on the market.

Here are some well-known PWAs: Instagram, Twitter, Telegram, YouTube, AliExpress, Spotify, TikTok, Tinder, Pinterest, YouPorn, Google and Microsoft services.

Here’s another interesting fact: there is a community-approved PWA logo. The first person to point out that the technology needed its own logo was Maxim Salnikov from the Microsoft DevRel team, who in May 2017 put out a word on Twitter inviting everyone to submit their proposals  on GitHub . The winning logo, selected by popular vote, was the submission from Diego Gonzalez. At that time, Diego was a part of the DevRel team for Samsung Internet, one of the most popular mobile browsers in Asia. Not long ago Diego joined the Microsoft Edge DevRel team.

Advantages

We talked to Mercury’s lead front-end developer, evangelist and PWA enthusiast Alexey Rodionov about the advantages and shortcomings of progressive web apps.

They are truly cross-platform

PWAs can run on devices of any form factor, on any architecture and OS — all they need is a browser and internet access. They will run on all kinds of devices: wearable electronics, smart TVs, VR/AR goggles, and even such unimaginable devices as smart mirrors, while a single code base reduces development and support costs.

Native behavior

PWAs look and work like native apps: they integrate deep into the OS, are launched via an icon on the home screen, can receive push notifications, can work offline, and can access device hardware sensors, such as camera, microphone, Bluetooth, USB, NFC, and others.

No updates to install

To use a PWA, you just need to visit the website. When you first launch the app, all the code it needs to run will be cached, and the cache will be automatically updated in the background.

Smaller size

PWAs themselves do not implement APIs — they just call browser APIs. At startup, they load the bare minimum, and then add the rest as needed.

PWAs are decentralized, open, and independent

The Web is the largest platform, larger than all other platforms put together. To distribute PWAs, you do not need app stores that impose their own rules. However, if desired, a PWA can be packaged in a light native wrapper and published on Google Play, App Store, or any other store.

All advantages of a web platform

A PWA is a website, which means that all content is indexed by search engines. Each page has its own URL, which can be copied and shared – this is like deep linking out of the box. Also, the user can copy any text on the screen and translate it into another language, can zoom the page in and out, remove ads, and do many other things.

Security

PWA code is executed in the browser sandbox, and the secure HTTPS connection is used to load the code and transfer data. Also, web apps use a more secure permissions model. For example, unlike native Android apps, PWAs request user permission to receive push notifications, access NFC, etc.

Low entry threshold

To write a PWA, one does not need to learn proprietary SDKs — the knowledge of HTML, JS, and CSS is all one needs. The development does not require any special equipment, you can even do without an IDE or a compiler – JavaScript code is interpreted and can be debugged in the browser.

If you already have a web app or a website, you can gradually integrate various Web APIs.

Shortcomings

PWAs are not equally supported by different platforms. For example, all iOS browsers must use WebKit instead of their own engine, and WebKit does not support certain APIs. In particular, browsers on iOS devices do not support Web Push API, which is required to deliver push notifications.