This a three-part blog series about Progressive Web Apps. In the first article in the series ‘Why Progressive Web Apps (PWA) is not good news for Native and Hybrid app developers‘ I tried to explain the imminence of Progressive Web Apps. After reading it many of my readers asked me about the difference between a Progressive Web App and Responsive web app. In fact, with many new mobile development jargons springing up every day it really is hard to understand the technology concept especially when they are cryptic with synonyms.
To me, a Progressive Web App is a progression or the next step for a Responsive web app. That is, if you have a website (web page/web app) that is mobile responsive then you leverage the new features supported by modern browsers to make it a Progressive Web App. These features include using service workers, web app manifests, push notifications, offline support etc.
With the advent of HTML5, a feature called Application Cache was introduced. This allows websites to store significant amounts of data offline, and as a result function similar to a native application. They can cache the whole website and the content so you don’t need an internet connection to use it. Also with HTML5, came features such as push notification, native video playback, native video and audio capture, amongst other things. The whatwebcando.today website shows the full list of device integration HTML5 APIs that are supported currently. This means web apps have feature parity with Native/Hybrid applications and they were generally called Responsive web apps.
Native features Supported by Progressive Web Apps
Progressive Web Apps refers to websites which take advantage of features already offered by Responsive web apps. They must be responsive (work on any device) and be app-like. But apart from these Responsive web apps features Progressive Web app takes advantage of the following features.
- Adding an icon to the home screen
- Appearing on the apps list. This can be done using WebAPKs – Progressive Web Apps can now be packaged into actual installable Android packages!
- Launch in full-screen
- Clipboard access
- Hardware-accelerated 2D/3D graphics via HTML5 Canvas or WebGL
- Accessing the filesystem (Chrome and Opera) and reading user-selected files in any browser
- Slick, smooth UIs with 60fps animations
Native Android features not Supported by Progressive Web Apps
Although Progressive web app can do most of the functionalities required by most apps, there are still some features that are not supported. They are
- Telephony features: That is a Progressive web app cannot intercept SMSes or calls, send SMS/MMS, get the user’s phone number, read voice mail, make phone calls without the Dialer dialog.
- Access to contacts, calendar, and browser
- Access to alarms
- Access to low-level hardware features and sensors like the flashlight, atmospheric pressure sensor. Sensors like Bluetooth via Web Bluetooth API, NFC, Ambient light sensor, proximity sensor, accelerometer, magnetometer, and gyroscope are already supported.
- Access to task management
- Modify system settings and logs