The Web as an App Platform
Web applications offer the benefits of effortless download, easier code updates, and a uniformity across OS platforms. In the past (and still to some extent) web applications have been held back by the technological immaturity, and lack of standardisation in web browsers.
Front-end versus Back-end Dominant Apps
1. web-servers are distanced (over the internet) from the end user and the UI and are, therefore, not well-suited to managing individual user context and flow through an application.
2. Represent an split in service delivery across 2 independent software systems, separated by a network, and united only by a well crafted interface specification.
3. Back-end focussed web-apps typically do not look and feel like native (IOS/Android/Desktop) apps, and are hard to convert into native apps because they differ architecturally. When converted into a hybrid native app (generally by embedding them in a native web view) these apps can feel clunky.
4. Typical back-end centric web apps employ many anti-patterns of native apps such as page loads during app navigation.
5. Must be carefully designed to scale-up because their computing workload is proportional to the user volume.
1. The front-end code, alongside the UI, is executing in client-context, local to the end-user, and primarily consuming the user's device (CPU) resources.
2. Front-end centric web-applications are architecturally more like native OS apps, and typically use the back-end server only for authorization, database, and messaging services. I.e. as a remote API.
3. Disadvantages of client-side applications are the lack of processing resources on low-end mobile devices and outdated browsers.
The Shift from the Back to the Front
Of note, Google, has made a huge contribution to making the ubiquitous web browser into a leading app delivery platform, driving innovation, and blurring the lines between native and web apps with what are known as progressive web apps.
A front-end-driven web-app, particularly the kind known as a Single Page web App (or SPA), is the closest we can get (on the web) to the behaviour and 'feel' of a native (i.e. IOS, Android, Microsoft, or Mac) app.
The Native App Advantage
Truly native apps are developed in high-level languages like Apple Swift (for IOS), Kotlin or Java (Android), and a range of languages like C# and Visual Basic for Microsoft Apps. That 'source' code is then pre-compiled to execute on the target platform's CPU and packaged for the corresponding App Store.
Cross-Platform App Development
Clearly, it's more efficient to code and maintain one code-base targeting multiple platforms and there has been a lot of effort to unify source code.
For example, it's been possible (for a while) to deploy web apps as native apps using tools such as Apache Cordova (although it's considered a compromise).
Countering this web-native trend, is Google's whole new language and framework: Dart + Flutter. While Google's solution tackles the issue head on, and from the ground up, it's not quite there yet for the web generation part, and it's a significant learning investment for web-developers in particular.
As web development continues to evolve at a dizzying pace, the one constant is change. We've come a long way, and it's an absorbing journey, but we're working with a maturing technology, and we haven't 'arrived'.