The web browser has come a long way in twenty years. Instead of building a desktop app and then trying to get it to work properly on a dozen different platforms, you can just build a single web app that runs on every platform, in every browser.
- Responsive web design: automatic web page layout based on the screen geometry allows you to create one app that works everywhere instead of separate apps for desktop, tablet, Android, and iOS. CSS Grid makes it easy to build responsive layouts.
- No gatekeeper: iOS apps must be downloaded from the Apple Store which charges the developer a 30% commission. Apple does this to to ensure malware apps don’t get installed on iPhones (and to make a bunch of money).
- Automatic updates: modern desktop apps contact the home server to see if an update exists, then ask permission from the user to download and install the update. For a web app, the developer pushes the change to the server and the end user (hopefully) doesn’t notice the change. Simple.
- Piracy: a huge problem with desktop apps. There’s nothing to pirate on a web app except maybe sharing login credentials which can be defeated by comparing IP addresses, user agents (the type of browser being used), browser window size, etc.
- User tracking: Every user action on a web app generates a call to the server and is written to the server log. This makes it super easy to study workflow problems and find which features are the most—and the least—popular.
Responsive web apps are cross-platform, easy to build, don’t require approval from a gatekeeper, provide automatic software updates to the client, can’t be pirated, and provide built-in user tracking. Instead of building a dozen different user interfaces for different platforms and screen geometries you build only one.
Update Nov 2020: Upgraded my laptop to MacOS Big Sur. My web app, Taigen, required zero code changes to work with the new operating system. Impossible with desktop apps.