DEV Community

Discussion on: Leaving electron.js to the past.

Collapse
 
stevepryde profile image
Steve Pryde

Tauri depends upon Microsoft Edge Runtime2 and not bulky core apps like Electron.JS depends on chromium.

Actually, WebView2 uses the default rendering engine provided by the OS, which on Windows is now chromium (Edge) and on MacOS is webkit (safari). On Linux it will be either webkit or chromium depending on whether you're using Gtk or Qt.

The size of the binary is much smaller with Tauri, but the actual memory footprint while the app is running will be about the same, since (on Windows at least) you're still running chromium to render your app.

That said, Tauri itself is written in Rust and the back-end is likely faster than Electron. It's also simpler for your app to communicate with the back-end with Tauri, in my opinion.

Collapse
 
akashpattnaik profile image
Akash Pattnaik

written in Rust

That's what makes the app faster and thats all that matters...

Collapse
 
ricobrase profile image
Rico Brase

That's what makes the app faster and thats all that matters...

I tend to disagree.
It also comes with a particular disadvantage: You have absolutely NO control over the webengine used to render your application.

Just go back in time a few years, when Internet Explorer was still the default browser on Windows and it powered the WebViews in Windows as well.
Users of Electron apps could enjoy some fantastic modern applications, while Tauri apps (assuming Tauri would've existed back then, of course) would have to limit their functionality to be compatible with Internet Explorer (and/or ship polyfills, yikes!).

While this problem isn't as dramatic as it used to be, there are still some differences between the implemented features in each browser and you as an app developer rely on the OS developers to update their webrendering engine in order to fix (security) bugs, ship new features, etc.

With Electron, you ship the rendering engine by yourself. YOU have the control over the version of the rendering engine you are shipping. What features it has implemented, what bugs are fixes, what security flaws are closed.

Speed is a pretty significant factor, but it's absolutely not the single most important thing.

As in every project you should analyze which technology suits your project the most.

Thread Thread
 
stevepryde profile image
Steve Pryde

Agreed.

I think Tauri has its place but if it came with an option to always bundle chromium instead of relying on webview then I'd probably choose that option every time.

Thread Thread
 
joeschr profile image
JoeSchr

You mean like electron does? We have gone full circle...

Thread Thread
 
stevepryde profile image
Steve Pryde

Exactly. I don't have any issue with electron bundling chromium.

But Tauri being in Rust is nicer for the backend.

Collapse
 
duridah profile image
durid-ah

I agree that still having chromium run like that can be a pain, but wouldn't the reliance on webview mean that multiple apps on tauri would use one instance instead of each one having it embedded into the app?

Collapse
 
stevepryde profile image
Steve Pryde

You save on binary size but remember chromium runs each page in its own process anyway.

I'm actually not sure if parts of the webview renderer are shared. There are obvious security reasons why you might not want this. But if someone knows the finer details of how this works I'd be keen to know.

I'm a huge fan of tauri, having used it recently and found it to mostly just work. It allowed me to write a desktop app in rust without using electron :D

Thread Thread
 
qm3ster profile image
Mihail Malo

Even if absolutely no runtime state is shared between consumers, the filesystem-backed executable code of the webview is, which also means it's going to end up in cache more often vs running four applications using four separate but barely distinguishable versions of chromium.