Please use Electron over Tauri


Don’t get me wrong, I will not use your software whether it is based on Electron, Tauri, Embedded Chromium etc… But if you believe that web apps are the right way to develop cross platform GUI applications, then sit and read on why Tauri is a bad choice.

The main appeal around Tauri is performance (delusional, I know). “But It is in Rust!” I hear you say. Lets quote some of the claims the creators of Tauri said about the use of Rust in the project and debunk them:

From Tauri’s home page:

With performance and security at the center, Rust is the language for the next generation of apps.

This is just marketing word salad deceiving those with a lack of understanding on what Tauri does at its core.

From Tauri’s repository README:

The backend of the application is a rust-sourced binary with an API that the front-end can interact with.

There is still some ambiguity, so I will clear things up: Web browsers hide and limit access to the environment they run on from the web sites you visit; the environment being the operating system. Just like Electron, Tauri tries to bridge the gap between a web browser context and the operating system by exposing some of the OS features if-available, such as: The host’s file system, systray, notifications etc… Indeed, most of the use of Rust in Tauri was just to write JavaScript bindings to system libraries. In other words, this is just a glue to make web apps slightly more “useful” – not much different from Electron. The remaining part is what they call “the backend”, in reality is just an easy way to expand the JavaScript scripting interface using Rust (basically same thing described in my latter point), which I think is pretty nice that they encourage to do that. In the other hand, Electron does a similar thing using “Native” Node modules.

Remember how I referred to Rust in Tauri as merely a glue? That is because interacting with the operating system was never the bottleneck of web apps – a shocking fact! Rather it is a combination of the massive JavaScript bundles and the incompetence of web devs without any awareness about hardware constraints. Though there is one case in which web devs aren’t the first to blame. This bring us to my next point, Tauri’s choice of web engine.

Tauri uses the OS web engine1, this means WebView2 on Windows (literally Chromium), WebKit on MacOS, and then we got Linux, yeah… To no one’s surprise Linux does not have a built-in web engine. Anyway, Tauri and their infinite wisdom had decided to require WebKit-GTK for Linux support, effectively reveals how much effort they put into research and performance profiling. WebKit-GTK is notoriously slow with no exaggeration, however as much as Tauri team likes to brag about performance, they have shown no concern to this problem (#3988, #5761, #6322, #10566). While it is not their responsibility to improve WebKit-GTK, switching to Chromium is definitely an option they still haven’t executed. Additionally, since the web engine is platform dependent, you will still face the ever existing problem of engine specific quirks, mainly WebKit issues because it is always behind. You won’t face these issues with Electron, the experience should be consistent across all supported platforms.

Tauri focuses away from the real performance gains. Shrinking the binary size, and reusing system features as much as possibles have their valid reasons, but they ain’t going to have much of an impact as much as they want to admit. Web devs are not suited to develop desktop or mobile applications. I instead invite you to learn the intricacies of your operating system and hardware limits. Leave your comfort zone, these tools may be convenient to you but they could harm your users.


  1. It terrifies me to see people pretend that a “web engine” is considered a feature of an OS that is expected to be present nowadays. ↩︎

Articles from blogs I read Generated by openring

  • Ugh. Drew’s blogging about Rust again. – You I promise to be nice. Two years ago, seeing the Rust-for-Linux project starting to get the ball rolling, I wrote “Does Rust belong in the Linux kernel?”, penning a conclusion consistent with Betteridge’s law of head…

    via Drew DeVault's blog
  • About eight years ago, I was playing a game of Codenames where the game state was such that our team would almost certainly lose if we didn't correctly guess all of our remaining words on our turn. From the given clue, we were unable to do this. Altho…

    via danluu.com
  • First Livestream Soon

    I’ve recently decided that I’m going to do a livestream. This livestream is mostly just a test, but feel free to stop on by if you want to. I have no idea what to expect…so I’ll see how this goes. The stream will start on August 7 at 5:30 PM (EST). The link i…

    via Bryce Vandegrift's Website