It comes as no surprise that modern web pages are leaning more towards mobile or native like features. This is obviously because of the unparalleled rich and fluid user experience the native apps deliver and as such, more and more development features are being produced by web browsers which will enhance the web browsing experience through native features. Likewise, more and more companies and independent developers are launching libraries and frameworks to bring such features into mainstream usage. One such feature we will discuss about today is Progressive Web Applications.
A progressive web application (PWA), commonly known as a progressive web app, is a type of application software delivered through the web, built using common web technologies including HTML, CSS, JavaScript, and WebAssembly. It is intended to work on any platform that uses a standards-compliant browser, including both desktop and mobile devices. (Wikipedia). In essence, a progressive web application utilizes the best of both worlds - native and browser apps. Progressive web apps run on a cross platform browser compatible environment, so it is still a web page, but it can access some of the native APIs like camera, push notifications, offline-compatibily etc. It is advantageous because, on one hand, browser apps are really simple to develop. Well, simplicity is obviously relative to each developer but generally speaking, compared to mobile application development web development is far simpler...? Easier? Less boilerplate required? You get the gist, browser based web applications are easier to develop than native mobile applications. This is where progressive web applications come to play.
It achieves this through the use manifest files and service workers, something which I have covered in my previous blog.
Well, some might argue that there is no need for progressive web apps altogether. After all, if I needed to access native APIs and provide native support, I can just build native applications instead of a web app or even better, use react-native. And they are right to think that way. A native application is undoubtedly better than progressive web apps when it comes to delivering native features.
However, PWAs do have some edge. First of all, they are.. well.. web applications. It is right in the name. So it is way easier to develop compared to native apps including react-native and flutter. Second, users can easily access the app through their search engine and the browser will automatically prompt them to install it. In contrast, potential native app users may find themselves struggling to look for the app in the app store and then download it. As a result, many users are simply discouraged to continue and they just ignore downloading the app altogether. Studies show that around 20% of users lose interest once they are prompted to download the app from an app store instead of providing the service on the website, even if the service is such that it is not possible to deliver on a web page. My personal experience with browsing the internet does concur with this research. Downloading, and then installing the app is very tedious and I often just google for other websites which provide online web services.
Furthermore, PWAs are not required to be deployed on app stores. Deploying apps on app/play store is a very complicated process. You need to obtain a license, secure it with some hash key, manage versions, etc and whatnot. With PWAs, users will be prompted to automatically download and install on their system from their browsers.
It is cross platform and will work on any operating system and browser. Maintaining a separate code base is not required.
It is installable easily through the web browser. The manifest files make it readily available.
Through the access of the push notification API, it can enhance user engagement with the app.
It should work offline. Poor or no internet connectivity will not hamper the user from exploring the web page. This is achieved through the use of cache files.
It is relatively light weight since it is just a web application put on a native environment.
It can automatically retrieve updated contents and display it to the user if there is a network connection present.
To conclude, progressive web apps could potentially be the next big thing. It already garnered a lot of attention in the past few years and some of the pros that come with using PWAs are extremely attractive to developers. It can also act as a stepping stone for web developers by giving them an opportunity to work with more native APIs. If you are a new developer though, this may not be as important, since there is still a lot for you to learn. I hope this blog helps you to at least get an idea of a progressive web application is so that you do not find yourself dumbfounded within a community of mature and established developers. And who knows, it might just spark an interest in you to go out there and developer your own PWA. :)