Progressive Web Application

Your organization may be growing to a point that it requires the use of a mobile application. However, your organization may not have the budget required to develop a truly native mobile application. This typically requires the development of two different applications, both for iOS and Android. There is a third option that leverages web technologies and also works on both platforms. This is a progressive web application.

A progressive web application makes use of existing web technologies. Web technologies have progressed to the point now that a mobile experience can be delivered through non-mobile native applications. This is a major advantage for small-to-medium sized businesses that are on a budget. They get both a web application and a mobile platform.

Progressive web applications make use of many common platforms. This reduces the learning curve for developers that are experienced with server-side languages and have some experience with front-end languages. If you are a front-end developer, then a progressive web application will not be very hard to learn.  The logic of a progressive web application is written completely in JavaScript.

Progressive web applications get their ‘magical powers’ by using service workers. Many modern browsers use service workers, in case you are curious if yours does you can find out here. A service worker is a process that runs on a separate thread than what your browser does. Therefore, it is able to process items without any interaction at all.

By pairing a service worker with the browser’s integrated storage (such as IndexedDB) it is possible to use your application offline (just like a native application), do some work, save the work and then when you are re-connected the service worker will sync the data. Unfortunately, this feature, known as background sync, is not yet supported on iOS.  Progressive web applications also support push notifications. These will arrive on the mobile device just like a normal application’s notifications.

Progressive web applications are also able to be installed on your mobile device from the browser.  Once the application is installed locally on the device, it will have the appearance of a native application as well as operate like a native application.  This gives the user a truly mobile application experience, which is the overall goal of a progressive web app.

There are a few drawbacks to using a progressive web app. For one, iOS does not fully support all of the functionality of a progressive web app. In fact, iOS has not even supported the use of service workers in mobile Safari until iOS 11.3. Apple has restricted third-party browsers (Chrome, Firefox, etc) from utilizing service workers. It also does not support the integration of background sync at all. This causes an issue if you are needing to sync data and the user has intermittent, or non-existent, connectivity in their current location. Android, on the other hand, fully supports all of what a progressive web application has to offer.

In conclusion, there are many pros to the implementation of a progressive web application as your next mobile application. With Apple’s restrictions on the use of service workers, as well as background sync, we should hope that they continue to adapt and adopt these abilities in Safari (or just open it up for Chrome to use it).