Operating Systems Are Failing Web Apps
Desktop apps made with web tech (HTML/CSS/JS) using Electron are better for developers and users, despite some drawbacks, than making native apps for Mac or Windows.
Native apps have a rich history of performance, as has been discussed in the Mac and iOS world at length. They use less memory, they are more efficient in CPU usage and they can get access to certain system level integrations. Until 2010, there was no question that application development was a thing that required "serious coding". The best apps were "native" written in C++ (Windows/Linux) or Objective-C (Mac). Java allowed for cross platform development (I did a lot of it), but the user had to install (and update) the Java Runtime... and you could never get really great performance. This was the world ... until iPhone.
When iPhone launched, there was no App Store. Apple had a "sweet solution" for developers to write "web apps". This was not well received. Many developers wanted Flash on the iPhone, as the web (HTML/CSS/JS) was not capable of "real" apps. Then in April 2010 came the Thoughts on Flash letter from Steve Jobs which spurred the rapid innovation for HTML5/CSS3 and JavaScript. In May 2010, one month from "Thoughts", the term "Responsive Web Design" was coined by Ethan Marcotte. In October 2010 Angular JS was launched, and the era of "Web Apps" was born.
My development journey for each of these eras:Time Period | Project | Tech Period | Technology |
---|---|---|---|
2002-2005 | Cytoscape | Desktop Era | Java Spring |
2006-2010 | OmniFocus | Native Apple | Mac (AppKit), iOS (UIKit) |
2010-2016 | Deloitte | Mobile & Enterprise | iOS, Android, SAP and enterprise CMSs |
2016-present | MentorCG | Modern Web | Web technologies (React, Vue, Angular) |
When I needed to choose a platform for Rezza, my analytics automation startup, the clear choice was responsive web. I ultimately settled on Vue. Writing a modern app using Vue/React is very similar to a Mac/iOS app, or a Java desktop app.
All this to say... native apps are cool, but the web is better:
- Once it's written... it runs everywhere*.
- Frameworks like Quasar means you can also deploy to an app store.
- Changing data and state management is simple.
- Scrolling performance, rendering data... are as good if not better.
- Sending links to specific pages and states is better and supported out of the box.
- All of the massive work done for accessibility comes out of the box.
- You can deploy without having a review process, or losing 30% of your money to app store taxes.
- Choose from 6 (at least) supported app frameworks for Windows
- Choose from 3 app frameworks for MacOS.
- Even using the "recommended" frameworks (WinUI and SwiftUI) there are drawbacks that will require using previous, older technology (This podcast discusses the "modern" option and 2 legacy options, in a SwiftUI app, to get smooth scrolling for a large list of items. Hint: the legacy options are faster.).
There are tons of apps that are used every day (1Password, Slack, Figma, Discord) that have decided that using the web and Electron is better.
Operating Systems - Please Help!
Here is what I think we need... real support from Windows/MacOS/Linux to support the development of "Electron style" apps, but with OS support. The overhead from running what is essentially a new web browser for each application adds up.
We know that Electron apps can be optimized. 1Password has done a phenomenal job. Microsoft, Apple... make this easier.
Yeah, we know that you want people to use your app frameworks.
But, I think really you want people to use your operating systems (and the computers they come with).