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.