Tauri for cross-platform apps

One of the most well-known framework to create cross-platform apps is Electron. In it you write your app in Javascript or Typescript. This code runs in a node environment and the GUI is displayed in a browser. Like this, the app can be ported easily to different operating systems. Even mobile systems are supported. One downside is that the created apps are quite heavy, because they include the browser to display the GUI.

Different alternatives exist, one of them is Tauri. It splits the app in two parts: a backend which does the heavy-lifting of the app, and the frontend which only displays the state of the app. This allows Tauri to use rust for the backend, which is great. It also allows to use any HTML framework for the frontend, as the GUI communicates through a special RPC method.

One downside of these web-apps is the following: Tauri is very proud of its strong separation between the frontend and the backend. They claim that it makes it very difficult to have supply-chain attacks through the frontend. However, as an app programmer, I don’t want to treat my GUI as something potentially evil.

Other features like simple updating the app, good cross-platform availability, and small bundle size make Tauri interesting. Even if the small bundle size comes from the fact that it doesn’t include the browser for the display. Using the native browser of the OS also means that your GUI will look potentially different on different systems.

Trying out the example they show on the website shows that it’s quite easy to get up and running in a reasonable timeframe. Even if some of the instructions where not clear, within an hour we managed to have the basic app up and running. some more clarity in the instructions would be good.

So all in all it is a potential alternative to Electron. While Tauri profits from the stability and memory-safeness of Rust, Electron profits from the huge number of 3rd-party libraries. But personally I still have difficulties getting used to have the app GUI displayed as an HTML. It might be the future, but I still prefer some layout manager à la Qt or in native frameworks.

— Linus