Are Progressive Web Apps the future?
Technologies for web development undergo changes on a daily basis. There is a great deal of programming languages, frameworks, tools and platforms available, providing a fertile environment for swift innovation and growth of diversity. It is nearly a full-time job keeping up with these changes, ranging from formal programming concepts to overarching deployment infrastructures on cloud platforms. In light of this vast amount of innovation, the term Progressive Web App (PWA) was coined by Google, a hybrid combination of website and app. The concept has been alive to date, and new features are still being added. We even have PWAs running in production nowadays. What entails a PWA in present day and why should we care? Nicky Lenaers, Software Engineer at TMC, explains all about it:
This article has been published on the Dutch tech website Computable.
The history of PWA
Conceptually, a PWA is just a web app, meaning you do not need an additional Software Development Kit (SDK) to build one, like you do for an Android or iOS app. In 2007, Steve Jobs announced that this would be the standard for iPhone applications. Nevertheless, an SDK was eventually released, making the App Store gain popularity instead. Ironically, afterwards Apple has long been blocking support for PWA in more recent versions of iOS. Many other companies have tried to build similar products, all incorporating web technology as its basis, such as Windows Store Apps, Cordova/PhoneGap Apps and Electron among others. Many are still in active use today.
In the meanwhile, lots of improvements have been made to web standards, allowing PWA development to become increasingly accessible. The result was a redefinition of PWA, introduced by Google Chrome engineers Frances Berriman and Alex Russell in 2015, that would allow users to upgrade regular web applications to progressive web application by making use of the native OS features (e.g. push notifications and offline usage). Even though PWAs have been mainly targeted at Android and iOS devices, desktop browser support has made its way in recent years. Using the Google Chrome browser on desktop, some websites providing PWAs show a small plus sign in the address bar, allowing users to install the PWA on desktop devices. An example of a website where this is shown is the new Google Stadia platform. Note that the PWA installation feature is enabled for both desktop and mobile devices.
Elements and patterns
With the diversity of feature support in web browsers, two distinct strategies have emerged to develop webapps. First, graceful degradation aims at providing the latest features to users, putting a priority on taking advantage of modern browser features. Later, progressive enhancement was introduced to do quite the opposite and provide stable features first, while enhancing progressively. The latter is the basis on which PWA support thrives.
At its core, a PWA requires three main ingredients:
- A PWA must be served over HTTPS
- A PWA includes a Service Worker to perform background tasks and offline experience
- A PWA includes a Manifest to provide information about the PWA
On top of these core elements, different patterns have emerged for building PWAs. For example, the App Shell Model architecture may be used to increase startup time, providing a near-native experience to end users. Using the pattern, an application shell is cached offline in order to ensure instant loading of the app. Note that this pattern allows for a combination of Server-Side Rendering (SSR) and Client-Side Rendering (CSR). Static website may benefit more from SSR, while highly interactive applications may need CSR for more efficient rendering. Using PWAs, both strategies may be implemented side-by-side. Google has published a list of known patterns used today for building PWAs.
There are a number of reasons to care for PWAs. In a landscape of actively competing web technologies, the very fact that PWAs are still gaining ground indicates potential and opportunities, both technologically and economically. These are substantiated by a number of real-world PWA statistics indicating increases in conversion rates, user engagement and performance gains on low-bandwidth network connections like 2G.
Other benefits include increased security, as PWAs demand enforcement of TLS using HTTPS connections. Moreover, PWAs are affordable as, by definition, they support multiple platforms without additional development. This may greatly decrease project costs. Furthermore, since a PWA is a web app, it is indexable and therefore may serve its purpose for SEO like any other website.
There are, however, reasons not to choose for a PWA over a native app. First, the full range of PWA features is not always supported by all devices, e.g. offline support may be an issue. Note that even in this case, progressive enhancement allows for a solid fallback. Furthermore, access to native features is still limited when compared to native apps. Even though this gap may close in the future, native apps should be preferred when they rely on functional requirements such as access to calendars, contacts or SMS messages. These features are currently not supported for PWAs. Also, if the app demands strong quality attributes like performance, native apps still outperform PWAs, given they are optimized for their target platform. Probably the biggest downside is the fact that there is not “PWA Store” (at least no official one), making it hard for end-users to go to a single place to browse PWAs and therefore limiting the exposure of the technology. It seems PWA Rocks is, however, a first attempt at solving this issue.
Future of PWA
We have already seen the path along which PWAs progressed thus far. While its technology seems to stabilize, support for PWAs is becoming more and more ubiquitous. The concept has found its way into most of the modern web frameworks, such as Angular, React and Vue. Installation is often even no more than a single command away for web developers, lowering the barrier even more on technical level.
Looking at the PWA support table, it seems most major browser vendors have now included support for PWAs. With Apple iOS devices still a bit behind, we may foresee their support grow too. Metrics still indicate that native mobile apps dominate web apps, but we may very well still be at the start of PWA global adaption. We may ask ourselves whether PWAs will be able to dominate native applications in the future. What will separate the two? What will unify them? I guess only time will tell.
In making the right choice, TMC Software can do a feasibility study, before starting to implement directly.