Top
Best
New

Posted by thunderbong 10 hours ago

Every Windows 11 app should kill Electron, and Discord just showed why(www.windowslatest.com)
150 points | 157 comments
cheschire 9 hours ago|
I'm pretty sure this was known since the early days of Electron. It was even one of the chief complaints about VS Code when it was first launched.

Electron's value prop has always been about having one team producing one app that is supported on multiple platforms with minimal additional effort.

This article does nothing to address that.

accurrent 8 hours ago||
A huge pain of desktop development is managing dependencies particularly if you are coming from C++/Native code. Imagine you wanted to make a simple app in the 2010s that accesses the webcam for instance: If you use chrome you got the full html5 runtime, whereas with other tools you'd need bespoke libraries which your end user may not have.

The only way to ship the same code between linux, macOS, and Windows would have been to either use something like Qt or the JVM back in the 2010s. The JVM desktop stuff was super ugly and Java itself had become notorious (also if you wanted anything remotely interesting like webcam/microphone or multimedia access you'd still have to ship dynamic libraries). Qt required special packaging skills to ship to the end user especially if third party libraries were involved. Electron killed that by bundling chrome (and chrome has a huge api surface).

Today, I would argue the package management situation for a language like rust is a lot different. You dont have to cobble different DLLs together, you can just statically compile dependencies and cargo/rust do a pretty good job of making sure it's bundled with your app. Other languages also now have similarly useful tools.

72deluxe 7 hours ago|||
But then the C++ libraries you mentioned also had the ability to statically link into a binary, which means you could statically link the webcam access in, in your example. So I don't see the advantage you're arguing for?
cogman10 6 hours ago|||
It comes down to package distribution.

Chrome had already solved the hard problem of "how do we support webcams on linux, windows, and mac" and you as the dev just needed to use the Javascript webcam api. ( https://developer.mozilla.org/en-US/docs/Web/API/MediaDevice... )

In C++ land, you are ultimately going to either need to cook up your own webcam library or look for a 3rd party (which, in 2010, likely didn't exist) to provide it.

Today, there are a few easy to discover rust crates which provide cross platform webcam apis. But further, rust does cross platform better than C/C++ IMO. It's really easy to change how code is compiled based on the target. That was all well thought out because rust was supposed to be a language for browsers.

pjmlp 1 hour ago||
Qt is easily obtainable via vcpkg or conan.
edoceo 59 minutes ago||
Was that true in 2012?
pjmlp 41 minutes ago|||
Depends, it was easily obtainable via OS package managers, and installers in 2016.

However that has been true since 2016, and here we are, 10 years later.

Krutonium 49 minutes ago|||
Very yes.
jasomill 3 hours ago|||
Dynamic vs static linking is mostly a red herring for desktop GUI application development unless you want to integrate into something like Linux distro package managers, as dynamic libraries on Mac and Windows can be self-contained within the application bundle/directory with no disadvantage beyond marginally longer startup time, and you can do similar things with Flatpak and friends on Linux.

The real difference is that Rust provides a package repository with a unified build system that's as simple to use as NPM or NuGet.

vcpkg which is similar exists today, but it didn't in 2015 when Discord started, still isn't anywhere near as comprehensive as package repositories for languages where package management is part of the standard toolchain, and the underlying build systems are far messier under the hood.

It can also be helpful in development to use libraries built from source as part of the application's build process, at least as an easily-accessible option, which wasn't common practice in most C/C++ ecosystems historically where different libraries used different build systems and if you wanted to integrate them into something like a Visual Studio solution for easy reference to source code during development and debugging you were often on your own.

cosmotic 5 hours ago||||
Java desktop was only ugly if you chose for it to be. It was pretty minimal effort to get native look and feel. Nothing built in electron looks native. If we're accepting custom interface using electron, that was doable with Java too.
threetonesun 1 hour ago||
JetBrains IDEs arguably look/behave better than VSCode as far as a native app goes. I wouldn't say either look great on MacOS but a truly "native feeling" Mac app is usually quite different than a Linux/Windows equivalent.
pjmlp 1 hour ago||
Long time ago, Apple had a proper OS X Swing L&F, when you could do Cocoa in Java, and there was still some uncertainty if Objective-C would be embraced by Mac OS development community.
pjmlp 1 hour ago|||
Usually it is hard for those coming from scripting languages.

Strangely enough we managed to write portable code across platforms during the last century, and there were more than only three major desktop OSes.

Grombobulous 8 hours ago|||
The article at least indirectly addresses that.

At the time Electron came out, there weren’t as many cross-platform UI frameworks available that they could have gone with.

You can see this with the comparison chart. GPUI effectively replaced Electron so the desktop app UI works across platforms. React Native is replaced with WebAssembly so that Rust can be the primary language across all platforms including mobile.

It seems like the new situation for Discord is rather elegant, and that none of this would have been available when it first came out.

jenadine 6 hours ago|||
GPUI works well for Zed, but it's built for Zed's needs only. There is no official crates.io udates. Breaking changes land as Zed needs them, and outside PRs often get declined causing a mess of several forks.
pjmlp 1 hour ago||||
I love when folks complain about C++ in stuff like Qt, and then write C++ addons on Electron apps, to make them actually get an usable performance.
AlienRobot 7 hours ago|||
Why https://gpui.rs/ doesn't have a single screenshot of how it actually looks?

The first thing anyone would want to know when choosing a GUI framework is how it looks by default. Every major GUI toolkit has screenshots on their websites.

This happens so often it makes me wonder if people just don't know how to take a screenshot and put it in a webpage with <img>.

Grombobulous 7 hours ago||
Probably because it's not meant to be like Bootstrap.js where everyone's UI looks identical?
small_scombrus 7 hours ago|||
Even still, some screenshots of here's something we made earlier are always nice to see what's possible
AlienRobot 7 hours ago|||
Even imgui has screnshots.
tekla 8 hours ago|||
The problem is that it made everyone's life worse.
johnh-hn 8 hours ago|||
Not mine. I loathe Electron like many people. But, as someone who is legally blind and has very limited vision, being able to have custom UI zoom levels, per application, has made my life much easier.

For a long time, and mostly out of frustration, I wanted to build my own stack of software around my vision. But the mammoth amount of effort it would require meant I never went through with it.

freecodeio 8 hours ago||
nice point, people like to shit on the web but it has one of the biggest accessibility features that most of the gui frameworks would just leave them as feature suggestions for years
hajile 8 hours ago|||
I'd note that as stuff like A11y gets added into something like Discord, we'll see the app slowly bloat up to compensate.

Google Chrome generally used around 25mb per tab in 2010. Today, that number is often 500mb or even 1gb.

afdbcreid 51 minutes ago|||
The article implies that a11y will exist on launch and maybe already is.

And it doesn't require that huge amount of RAM, no. What requires the Chrome RAM is running JavaScript and do it fast, and a lot of extremely complicated features, most of which a single app will never use.

masfuerte 6 hours ago||||
And Windows apps had accessibility before computers had 25MB RAM in total. Accessibility is not the cause of bloat.
freecodeio 6 hours ago||
do any of these native GUI libraries provide just as rich accessibility experiences to disabled people?
TJSomething 49 minutes ago||
If we mean native as in OS-specific GUI APIs built-in to the operating system, then yes. All of the browsers are abstractions on top of that. If we mean cross-platform GUI libraries for Rust I think your choices are like Dioxus (a webview), Tauri (also a webview), Slint (draws its own widgets), and maybe Fltk (draws its own widgets) with extensions?
Ygg2 7 hours ago|||
Would you really need 500mb for accessibility? Can't text to speech be outsourced to the OS or companion app?
pjmlp 1 hour ago|||
All the native APIs across major platforms have accessibility features, how do you think browsers implement theirs?
Grombobulous 8 hours ago|||
The electron hate train needs to pull in to the station and be retired. We can just admit that it was a good solution for the problems of its time just like JQuery. Electron was conceived over a decade ago and it was an imperfect solution, but there’s no denying that it was a solution.

Election predates WebAssembly by 5 years and hit the scene only one year after Rust was first created.

And just like JQuery, its time is coming to a close as better frameworks are available now that weren’t available back then.

afdbcreid 50 minutes ago|||
We could, if people would stop doing it today.
bigstrat2003 1 hour ago||||
> We can just admit that it was a good solution for the problems of its time just like JQuery.

We would be lying if we did that. Electron was never, ever a good solution. It was something solely used by devs who prioritized their own ease of work over the actual user experience, i.e. bad devs.

rpdillon 3 minutes ago|||
Its a straight-up business decision, generally made by MBAs and with advice from engineers and executed by the engineers. That's because it changes the shape of the org when you need a separate team for each platform, so any org where the benefit of doing so doesn't get articulated sufficiently, will end up with fewer devs covering more platforms.

Acting like this is a decision the ICs make is disconnected from why electron is so prevalent.

kristiandupont 1 hour ago|||
Do you have an employer?
s3p 8 hours ago||||
I never thought election was a good solution for the problems of its time. Just call it a web app and don't lie to people releasing something "native" for them to download.
Grombobulous 7 hours ago|||
Discord actually launched as a web app, and then moved to adding a desktop app, which has quite obviously become far more popular than visiting discordapp.com and using it in the browser.

Why do you think that is?

I'll give you a hint: if I close my web browser, how do I get a notification that I got a new message? Make sure you also pretend it's 2015 (launch year of Discord) and that I might be using Firefox, Safari, or Edge.

The funny part about this complaint is that you can literally just use the web app if you hate the desktop Electron app so much. That's one of the main benefits of Electron!

Kuraj 7 hours ago|||
Noone is claiming that, though.

Discord isn't packaged as an Electron app simply because it pretends to be native, but because it has an entire system integration layer that isn't available in the web version.

Brian_K_White 1 hour ago|||
It was never a good solution and there is no reason to ever stop calling a turd a turd.
RunSet 8 hours ago|||
> Electron's value prop

"Now you can have the cross-platform compatibility of a single-page application just by bundling Chrome."

zdragnar 8 hours ago||
It's worth remembering that electron was first released back in 2016 (formerly atom shell fro 2013) so Internet Explorer was still very much a thing.

Not a great justification, but it made a bit more sense then.

72deluxe 7 hours ago||
That's like saying it would make sense to make Internet Explorer work on all platforms. It doesn't make sense.

The solution is to use user interface toolkits that are available on each platform. For example, wxWidgets or Qt or appropriate bindings to them if you can't be bothered to write UI code for each platform you're targeting.

toast0 1 hour ago||
> That's like saying it would make sense to make Internet Explorer work on all platforms. It doesn't make sense.

Why not? Microsoft released IE for win16, win32, wince, macos system 7 through 9, macos X, Solaris, HP-UX. If it ran on all those platforms, Microsoft probably could have supported it on any platform that had the capability of running graphical web browsers.

IshKebab 8 hours ago||
> The article does nothing to address that.

I dunno if you've been living under an enormous rock, but they used AI to make this.

LaurensBER 9 hours ago||
Electron is pretty awesome in that it allows a small team to build a decent GUI app using their existing web skillset but it also feels like it's time for something better at this point.

With the ram prices as crazy as they are. It's pretty frustrating to have to run multiple GB eating applications just to do some basic tasks (90% is read and write messages, in the case of Discord). I understand that other people might use the more advanced features (voice chat, etc) but these could be loaded on-demand.

It's a bit crazy to me that I can comfortable run an entire Linux stack (+ Podman, monitoring, alerting and multiple services) in 512 MB ram (with 40% free, just checked!). However my Windows PC needs 5.5GB just to show the desktop! Realistically it needs somewhere between 8GB and 16GB for some basic web browsing and even then it can feel slow if you have a few apps like Discord running in the background.

pasc1878 8 hours ago|
Sorry can you show a decent GUI app in Electron compared with a native one.

You show this by all your other comments on memory. The reason apps take memory is Electron.

Plus I prefer apps that behave like OS native apps not the reduced GUI of web apps.

Peanuts99 8 hours ago|||
VS Code is a perfectly fine and pretty performant app.
afdbcreid 48 minutes ago|||
It has seen (major) optimization work, and it's still quite memory-heavy, although that's probably fine for a rich IDE. But it's not fine for many other apps.
viraptor 8 minutes ago||
VSCode is absolutely not a rich IDE. It's a fancy text editor will extra plugins. Visual studio or IDEA are rich IDEs.
denimnerd42 1 hour ago||||
Erich Gamma started VS Code (through Monaco). That's saying a lot about Erich Gamma and not a lot about Electron.

It's also had a ton of work done to make it performant. (Microsoft level resources)

bigstrat2003 1 hour ago||||
No it isn't. It takes over 1 GB of memory just to open up a handful of source code files that each are under 1 MB in size (and which, for reference, Sublime can open with 300 MB used). It's an absolute pig.
codazoda 7 hours ago||||
Probably at the edge of being a good example. I recently switched to zed because of how bloated VS Code is becoming. I think it gained it’s momentum by being small, but enshitification seems to come for all software.
thunky 6 hours ago|||
Based on the hype I tried zed thinking it would feel amazing compared to vscode, and it just didn't.
brettermeier 7 hours ago|||
I don't know your Standards, but VS Code feels very smooth.
Jtarii 4 minutes ago|||
lmfao no.
kelseyfrog 8 hours ago||||
I volunteer as the arbiter of decency!
szundi 8 hours ago|||
[dead]
EddieRingle 8 hours ago||
Discord isn't really the model to follow here, IMO. They killed their native Android app and moved to React Native, and now they're dropping React Native (while mobile somehow keeps "native UI", according to their CTO's tweet). If they wanted to maximize code reuse and accelerate feature development, they should have instead considered Kotlin Multiplatform, then they could've skipped the React Native detour while actually building apps that are native to the platform. (Rust and its cacophony of UI frameworks are not really platform-native anywhere, as far as I'm aware. Maybe Pop OS, but I don't know anyone targeting that specifically.)

This bit is obviously subjective, but Rust as a language is simply not ergonomic enough for a lot of the use cases people are trying to apply it to, especially UI development. Most of the Rust UI libraries I've seen to date either use a more imperative style, or attempt to replicate more declarative approaches like Compose UI or SwiftUI, but without the nice language aesthetics that make it simple to read and write. And if the counter-argument there is for LLMs to be reading and writing this stuff, that's a whole other can of worms: (1) The subsidized inference era is quickly coming to an end and (2) if you're using LLMs anyway, why not maintain apps that are as native to each platform as possible?

mococa 7 hours ago||
I don't understand this idiocracy - it's super easy (I did myself alone many times) to have a single codebase in Qt for all OSes, even BSDs.

I think people become super lazy... "Ah, it's will ocupie a few hundreds of RAM, no problem, let's ship it."

They are companies with billions or even trillions shipping shit with Electron.

Aurornis 40 minutes ago||
> it's super easy (I did myself alone many times) to have a single codebase in Qt

I’ve worked in Qt apps on and off through my career.

I do not want Qt apps any more than I want Electron apps.

The solution is native apps using native platform tools, or one of the mature cross-platform toolkits.

72deluxe 6 hours ago|||
This is definitely true. It seems to be the modern approach that the less effort in development, the better!

I too had code that worked across 3 platforms with wxwidgets and a 3D game toolkit incorporated in opengl for visualisation, with most 2d controls being drawn using wxwidgets OnPaint handlers for custom controls rendered natively on that platform. I wrote this single-handedly, with another colleague handling the network code and firmware on the remote hardware devices.

Everything else is sheer laziness as far as I am concerned. There's even less excuse today with the rise of LLMs to do the majority of UI coding for you.

ip26 1 hour ago||
Not a front end developer but I’ve always assumed it was ROI - nobody felt a smaller memory footprint would drive enough incremental revenue to offset the costs, compared to the other things they could be doing.

What seems to have changed is the size of the costs - LLMs are really good at this - such that you can now say “well, maybe the returns aren’t that big, in fact maybe they’re zero, but this is easy enough, so why not”

De minimus improvement has always suffered this problem - we’re all fairly sure it’s worth something. Maybe there’s even real perceptible value when you fix the whole basket. But making the case is hard.

ivanjermakov 6 hours ago||
> single codebase in Qt

Not if your promary UI is web.

mococa 5 hours ago||
Qt runs on web too.
llbbdd 1 hour ago||
Web version has 0 accessibility, which is a no-go for real products
jayd16 12 minutes ago||
Has this released yet? We're just going from self reported improvement right now?
smusamashah 9 hours ago||
We have gotten so used to slow app startup these days I believe. I have recently started using Task Slinger [1] and every single time I boot it, I get a feeling that it was already running and it's window just showed up. I wish all modern software were like this.

[1]: https://taskslinger.net/

ssernikk 31 minutes ago||
Do you know what tech stack do they use? The website only mentions custom Direct3D renderer.
gopher_space 1 hour ago|||
The old System Shock 2 is an inspiration for my own loading times. Launching the game instantly shows the main menu with your last save paused in the background. Clicking Play actually unpauses the game. There's no loading time and no process as far as a player is concerned.
swinglock 8 hours ago||
All modern apps are like this. It's Electron apps which are all legacy.
smusamashah 1 hour ago||
No. Even windows' own task manager is not that fast. I don't think that most software most people use everyday on windows was built with strong focus on performance.
swinglock 1 hour ago||
My point is no Electron app should be considered "modern" at this point.
Doohickey-d 8 hours ago||
One nice thing about Électron is that it supports accessbility and non-english IMEs correctly, and thus all Electron apps have decent accessibility out of the box, comparable to web apps.

Most Rust GUI toolkits, at least in 2025, did not have that good accessibility or IME: https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-...

Hopefully this has gotten better and the new discord client isn't worse in that regard.

robin_reala 8 hours ago|
GPUI has a single-paragraph accessibility section in their guide that defers to AccessKit[1] for everything, and points to a raw RS file for more info.[2]

I haven’t tested it or written anything using GPUI, but I’d expect it to be considerably harder work, based on the maturity of the web stack in this area. My assumptions have definitely been proven wrong before though… Anyone from Discord working on accessibility want to chime in?

[1] https://accesskit.dev/

[2] https://github.com/zed-industries/zed/blob/main/crates/gpui/...

bemtevi 9 hours ago||
I've rarely liked any Electron apps, both for the performance and because it seems to encourage a feeling of bloatedness, for want of a better word. Tried VS Code, but dropped it when they started putting too much AI in it and too much complexity. Sublime is so much better.

I don't know...there seems to be something unpleasant about all Electron apps.

72deluxe 6 hours ago||
I agree. The lack of native user interface controls for accessing menus and the inability for them to properly track focus for keyboard usage for right clicking (for example) makes them really difficult to use. You have to use the mouse for everything.

I did use VS code for a while but I've just gone back to using QT Creator simply because it is so much faster to use in daily life.

sick_of_slop 6 hours ago||
[dead]
sbseitz 9 minutes ago||
Agreed, Electron is garbage.
More comments...