When developing software, in particular internet-based, or internet-heavy software (aren't they all these days?) the initial question that is always asked is "What platform do we develop on?" Essentially the 3 choices have always been:
- Native iOS
- Native Android
- Browser based Web Application
Often there is no definitive answer, as building native apps locks your codebase into that platform, necessitating separate codebases, and thus twice the workload & development cost. There have been recent attempts to create solutions for this with hybrid native apps built using web technologies on the PhoneGap platform, and also Facebook's React Native platform. But both of those hybrid solutions come with their own problems.
The other solution, a browser based Web Application, has traditionally been the more widely accessible approach, as its not locked into a specific platform, and as a result, more cost effective in terms of development, but has suffered from the inability to provide full offline capability. No internet? No working app for you. It also can sometimes complicate the user experience by forcing the user to intentionally navigate through the browser to the app URL, rather than just clicking a homescreen icon as with a native or hybrid native app.
This is why Google has been actively innovating with what's called a "Progressive Web App". The beauty about a PWA, is it can allow native-like functionality -- offline access, homescreen icons, and lots more -- for devices that support it. For devices that don't support those features, it simply falls back to a standard web app. As a developer, and as a company employing a developer to build an app, PWA's can be extremely cost effective compared to building native apps, but also promise the same experience that native apps can provide.
I recently finished a personal project, built as a PWA using VueJS and a PHP RESTful API to test the viability of PWA's in real life use -- and can say that PWA's really do live up to the hype. The user experience really is on-par with a native app. If you're not convinced, get in touch with me and I can provide a demonstration of my personal project and you can decide for yourself.