Introduction to Progressive Web Applications (PWA)

In this post, Premier Developer Consultant Wael Kdouh introduces us to the concept of Progressive Web Applications for cross-platform development.

It is no secret that we live in a Cloud First/ Mobile First world. Whereas a lot of our customers have come to embrace Azure when it comes to the cloud, the choice of the best mobile development framework still eludes them. The keyword here is “best”. What may be considered best for one team is not necessarily true for another. But there is always one common theme amongst most of our customers and that is the need for a solution that allows them to write once and deploy everywhere (well it’s more like write once and deploy on Android, IOS, and Windows 10). Two popular choices that our customers have come to embrace are Xamarin and Cordova. Xamarin has proven to be more popular (and generally more capable) for teams that want the closest to native performance and are comfortable developing with C# and XAML. Cordova on the other hand has proven to be more popular with teams that are building applications that do not demand native like performance and are more comfortable developing with web technologies (mainly HTML, JS, and CSS).

Whereas both frameworks are capable in their own rights and will continue to be so for the foreseeable future, they both share some requirements that have proven to be challenging to many of our customers. Mainly both solutions require publishing through the different app stores, put the extra effort to ensure that all clients are always kept up to date, and facing the challenge of “winner takes all” reality of the app store.

Progressive Web Applications (PWA) is a user experience that is good enough and is integrated enough to earn a place on the user’s home screen and in their notification tray while maintaining the reach that made the web ubiquitous in the first place. PWA is not just a web application with access to a rich API, but instead it offers a new level of caring about the quality of the end to end user experience. It achieves that by ensuring that it improves the user experience on three main fronts:

  • Offers a much more reliable experience. Here service workers are utilized to provide solid offline support compared to today’s experience where users are faced with downosaurs and broken hearts when the network is down.
  • Offers a faster experience where scrolling is responsive and loading is fast.
  • Offers an engaging experience by making the application feel like it belongs on the device and not inside a tab inside a browser application. For example, the application runs in full screen mode, enables push notifications, etc.

As far as support goes, Chrome offers the best support today but Microsoft Edge is actively working on adding support for PWA. IOS runtime doesn’t support service workers so there are pollyfills available to fill the gap, but Apple appears to be warming to Progressive Web App technology.

At this point you probably are wondering whether you should abandon native development and adopt PWA. The reality is that “PWA vs. Native” is the wrong question to ask, because if you already have a product, you already have an app, a web presence, or both, and you should improve both. If you don’t have a product, then if you have the resources to build native Web Apps + Android + iOS, and keep them in sync, go for it. Otherwise, choosing to build PWA first is beneficial in most cases. Traditionally, you’d have to build Desktop/Mobile Web + Android + iOS. You can, right now, in most cases, just build PWA + iOS app and once Safari implements Service Workers, it will be just PWA. So you should not be asking yourself PWA vs. Native but rather PWA vs. [Web + Native + Native].

In conclusion, PWA is not a new way of architecting your applications. It’s just an extra level on top of it (service worker level) that allows you to make the same functionality available offline and available with background syncing that we didn’t have before.

Comments (3)

  1. Pam, good article thanks, we’ve been following the rise of PWAs for some time now. What is the Microsoft take on the best framework to use for creating PWAs? Does Microsoft have anything in the works to create PWAs – perhaps as a replacement for LightSwitch?

  2. Wael Kdouh says:

    Xander you should not think about PWA as driver to promote one framework vs another. Instead think about it as an expansion of what the web can do naively. So whether you want to use PWA with Angular, React, or Asp.Net Core its ultimately your decision. Some examples of what PWA makes possible for the web to achieve without the need to resort to plugins are things like the ability to work offline even when there is no internet connection, have a full screen experience, support push notifications, or the ability to add a home screen icon, etc.. Do keep in mind though that your millage may vary depending on the platform/browser on which you are running your application. For example Chrome currently has the best support for PWA but we are actively working here at Microsoft to add the necessary pieces to Microsoft Edge ( e.g. support for service workers etc.). Apple has historically been slow to add the necessary pieces for PWA but they have recently started to warm up to the idea so we will have to wait and see how that pans out which means that in the meantime you should not have high expectations when it comes to running a PWA application on the different Apple platforms.

    1. JamesRiby says:

      Hi, so we can use Microsoft’s ASP.NET Core to make PWAs and Hosted Web Apps?

Skip to main content