When the progression goes gradually, step-by-step, it may be complex to evaluate its significance… A couple years ago a web platform was worse than native application in every aspect and the difference between browser options and available applications in Google Play Store/ Apple App Store was huge.
A lot has happened since that and the development of web technologies speeded up accordingly. It went in the way to remove restrictions. Moreover, it sought to the option that was fundamentally impossible before - to work offline, to synchronize data, push-notifications, one-click login support, and payments via credit cards/Apple Pay/Google Pay/others. For now, it became the reality. These functions organically augment the base part of the platform - HTML/CSS and JavaScript.
The development of web standards hit the developer’s spot. Many of them think that the development with web technology usage is much easier and cheaper. If we take a look at a modern desktop application, we may see that most of them were written with Electron - a framework that allows writing applications for Windows, Linux, and macOS, based on web technologies. As an example, we may see Visual Studio Code, Slack, Skype as desktop applications that were written with Electron.
On the other hand, the cross-platform is actual as never before. The support of independent code bases for iOS and Android costs a lot. This is the reason why developers more often choose cross-platform technologies even for native applications. Nowadays, the most popular cross-platform technologies are React Native, Xamarin, and Google’s Flutter. So, PWA’s gave us everything we dreamt of - the quintessence of cross-platform applications.
When we talk about removing restrictions, we must take WebAssembly in mind. Nowadays, de facto there aren’t almost any code execution speed restrictions in a browser thanks to this technology. It is possible to reach productivity that is twice less the Native C code that works straight in the OS. And this is not the limit!
Access to an OS and hardware capabilities of user’s devices was another field where we may meet web platform restrictions. These restrictions also remove gradually. However, this process moves more slowly within iOS rather than Android. When we talk about the interaction with OS, it should be mentioned that some techs appeared on the technology market:
- Clipboard API - to work with clipboard data;
- Presentation API - to detect a connection of a second monitor/projector and data display control on it;
- Web Share API - for the integration of a system dialog.
We should also keep in mind that web applications have opportunities that are unapproachable for native ones. It refers to an application spread, a user attraction cost, and an absence of dependency on owner’s will and update checkout speed.
Progressive Web Apps arise
When we talk about web applications that are alike native ones in such aspects as User Interface, User Experience, work speed, and variety of options, we use a term PWA - Progressive Web Applications. PWA is not a framework or SDK. It is rather an approach or even a philosophy of how should a modern web application be built.
In terms of technologies, PWA uses modern web standards that are available in browsers, and nothing more. The approach named PWA doesn’t impose specific restrictions on an application itself. For example, PWA can be a Single Page Application. The only things that matter: is to give an opportunity to users to interact with your application, and to use the approach of so-called ‘progressive’ improvements - i.e. the more modern browser is used, the more options a user will get.
The main feature of PWA is offline work support via Service Worker mechanism (and an opportunity to add application icons on a user’s device desktop).
The ripeness of Service Workers technology approves the fact that all popular tools for SPA creation either support the generation of Service Workers into one team (like it was realized in Angular CLI) or even generate Service Worker by default as it is in create-react-app.
If you develop a new application, I would strongly recommend starting ещ add options in order below. All these listed options can be grouped or used separately.
- Add Service Worker, realize cashing and offline workflow
- Add Web App Manifest (manifest.json) for supporting of application installation
- Realization of fone data synchronization support - Background Sync
- Realization of sharing - Web Share API
- Realization of payment support with Payment Request API, if your application requires payment tools