- Cross-platform auto-updating
- Desktop tray features
- System notifications
- Menu stuff
These are some of the "extra" things that also made Electron nice.
You have a point about browser API compatibility, though. That's the big downside to using the system-provided webview widget.
You're assuming the 'heavylifting' part of the application is in the UI itself. Imagine some data processing app where the heavylifting part would benefit from a backend running in Rust. Say, an image enhancer of some kind.
> Without this requirement, it was also trivial before Electron showed up to write a small native wrapper application around the system-provided webview widget.
Electron also made the packaging of such an app dramatically easier when building on macos/linux/windows.
Another difference is that it doesn't need to bundle a Node.js or another language runtime.
Also, the Chromium renderer is only half of an Electron app. There is also a background thread running in node, which can pass messages to the renderer.
So, I can imagine that for apps that are more background thread heavy, swapping out node for rust could work quite well.
Also, more complicated apps don't need this, the ones that want to control every aspect of the render, with SVG or Canvas.
That is true. It's basically exposing a Rust API and using FFI to the Desktop APIs. Nothing special going on apart from hype and marketing and possible over-promising on features.
> Isn't the whole point of Electron to have version/feature stability for the browser APIs by bundling a specific Chromium runtime?
Yes. The selling point here is that there are no fundamental rewrites needed for using Electron but only small Javascript / Typescript tweaks to get it up and running. This is why unfortunately Electron is used all the time despite the giant negatives. As with Tauri, it is basically a wrapper around the system Webview and using Rust FFI to the Desktop APIs.
I'd rather bet on Flutter Desktop as a possible long term Electron competitor.
No. [0]
[0] https://docs.flutter.dev/development/platform-integration/de...
"To compile a desktop application, you must build it on the targeted platform: build a Windows application on Windows, a macOS application on macOS, and a Linux application on Linux."
So, I essentially do need to own a mac if I want to target macs along with other platforms.
If you want to target other platforms than the one you are currently running, then you need to compile and run on that target machine as well. It is not a hard requirement that you need a Mac to develop Flutter applications. The Flutter SDK is also on Windows and Linux machines as well.
It is exactly the same thing for Tauri. [0] This is why they tell developers to use GitHub Actions or CIs to do it for them. Again, the same can be done for Flutter.
Electron on the other hand, does not need any of that.
- What's the point of mentioning Rust when the heavylifting is done by the system's webview widget, and applications are written in HTML/CSS/JS, just as in Electron?
- Isn't the whole point of Electron to have version/feature stability for the browser APIs by bundling a specific Chromium runtime? Without this requirement, it was also trivial before Electron showed up to write a small native wrapper application around the system-provided webview widget.