Blog

Coming Soon...

  • Web Applications are Distributed Systems in Disguise
  • ws-wrapper is a lightweight WebSockets API

Web-based user interfaces are simply better… in almost every way that matters

Web-based user interfaces are the future for most applications with a user interface. Full stop. There are perhaps a few noteworthy exceptions like video games or 3D modeling software, but almost every user-interface application should probably use a web-based UI technology stack.

Wait what?

Big projects like Qt, GTK, Flutter, wxWidgets, JavaFX, WinForms, WPF, MAUI, Kotlin, Fyne, AppKit… it's time to start forgetting that they exist. Like it or not, the future of UI software development is HTML and CSS (and JavaScript, for now). It doesn't matter how cross-platform these libraries become, they simply will never provide all of the benefits of a web-based application. In fact, web-based user interfaces are simply better than all of these libraries in almost every way that matters: readability, writeability, reliability, maintainability, reusability, scalability, security, testability, compatibility, learning curve, community support, and cost.

Advantages of Web Applications

Disadvantages of Web Applications

So if you have a few hundred megabytes of RAM and can sacrifice a small bit of performance, I'd argue that a web application is the way to go. RAM and disk space is cheap.

Case Study: Visual Studio Code

Visual Studio Code is an Electron application, written using HTML, CSS, and JavaScript. It's visually stunning, remarkably fast, and enormous.

Just look at it!

Vscode Tasks Json Environment Variables

So did this Microsoft team choose a winning technology stack? This application will run on almost anything, and it has become one of the most widely used IDEs on the planet1. Look, it even runs in your web browser: https://vscode.dev/

Picking a Web UI Framework

Software developers have already discovered why web-based user interfaces are so amazing, and so many frameworks exist to present the UI and allow it to communicate with the "backend" software.

Here are a few popular frameworks:

Here's a nice table comparing a few of them. Some frameworks support more native look & feel than others. Some support multiple programming languages and some do not. Some produce larger binaries, others are much smaller. Some support Android, iOS, and ARM, some don't. You get the point. My advice is to weigh these trade-offs against your application's requirements and follow the KISS principle.

The End

GUI libraries come and go, but web UIs will be around for a very, very long time. Considering an application as pervasive as VSCode can run with Electron under the hood, why not give it a try?


Blog Post Index


  1. Disclaimer: I prefer Sublime Text instead. 😄 ↩︎