Trying to wade through the continuum of application technologies sometimes feels like you’re strolling through a swamp in an astronaut suit… But if you take a step back you’ll see a logic to how web, native, and progressive web apps work in different situations.
It is widely acknowledged that native applications (particularly mobile) make for rich, compelling and personal user experiences. With deep platform integration, comes both incredible performance and a wide array of capabilities – all the while reassuring the user that they are in total control of the device and applications. While it would seem a clear and obvious choice for many applications, it does have some drawbacks worth considering. Most native platforms have a dedicated app store with distinct standards and guidelines that need to be adhered to. Different platforms may require vastly different skillsets to develop on, and you may require many different specialists to do it justice. The final drawback is that the ecosystem privileges the user above all else – manifesting in versioning, deployment and adoption issues. The user is in the driving seat, and they can be fickle and unpredictable.
The web is an old platform, but is far from stale. As an ecosystem it is constantly growing and changing; vibrant and seemingly evergreen. Web applications have the widest reach of any digital platform, bringing content and functionality to the far reaches of the globe. Truly bridging the digital divide with ubiquitous connectivity, and accessible from almost every device. The strength of this unified, consistent platform is also directly responsible for its largest drawback – the functionality available to the platform is exclusively standards driven. It is by necessity that the W3C (World Wide Web Consortium) judiciously deliberates on the web platform, but that does little to mitigate the effect of holding back innovation. Browsers have little access to the user’s device and, as such, web applications always feel an arm’s length away. This, in conjunction with the requirement for constant connectivity, makes the web a less personal and fulfilling experience. The sense as a user is that you are allowed to play in a playground that is shared, but never truly yours.
If these two platforms are considered absolute poles, there exists a continuum of technologies in between. You get technologies that are far closer to the native realm, such as Xamarin, Unity or React-Native. These attempt to provide a single development experience that targets multiple disparate devices. Similarly, you get technologies closer to the web, such as Angular, React, Meteor, or Cordova, that attempt to provide richer feature-sets aimed at creating more personal user experiences.
Progressive Web Apps (PWAs) are not a discrete technology, but rather the union of a select few browser features with a set of opinionated patterns and an underlying philosophy. PWAs promise to bring true offline support to the web and augmenting applications (with an attempt to make PWAs indistinguishable from native applications). Although the technical features seem to always take centre stage, it is the pattern and philosophy that binds the package of PWAs. Embracing native design aesthetics, mobile-first functionality and an obsessive focus on user-centricity, the philosophy of PWAs is attempting to move away from the impersonal, content-driven web-to-user experiences that delight, enthrall and inspire confidence.
There is a place for every technology on the continuum between pure native and web, but the tumultuous churning of the stuff in the middle makes it increasingly unclear as to which is appropriate for the situation.
This confusion is unlikely to ever go away, but PWAs will hopefully bolster the midpoint creating a third, solid pillar of modern application experiences.