Desktop-Anwendungen mit Web-Technologien zu entwickeln ist längst kein Nischenthema mehr. Mit Tauri steht seit einigen Jahren ein Framework bereit, das genau diesen Ansatz verfolgt – aber im Vergleich zum populären Electron auf eine deutlich schlankere Architektur setzt. Wer Rust beherrscht oder bereit ist, es zu lernen, bekommt ein mächtiges Werkzeug für leichte, sichere und schnelle Desktop-Apps.
Was ist Tauri?
Tauri ist ein Open-Source-Framework zum Erstellen von Desktop-Anwendungen, das im Jahr 2019 von der Tauri-Programmierorganisation ins Leben gerufen wurde und heute unter dem Dach der Tauri Foundation weiterentwickelt wird. Das Grundprinzip ist simpel: Das Frontend einer Tauri-App besteht aus gewöhnlichem HTML, CSS und JavaScript – man kann jedes beliebige Web-Framework wie React, Vue oder Svelte einsetzen. Das Backend hingegen wird in Rust geschrieben und stellt dort sichere, performante Systemoperationen bereit.
Der entscheidende Unterschied zu Electron liegt in der Rendering-Schicht. Tauri bündelt keinen eigenen Chromium-Browser in die Anwendung. Stattdessen nutzt es die vom Betriebssystem bereitgestellte WebView-Komponente: WKWebView auf macOS/iOS, WebView2 auf Windows und WebKitGTK auf Linux. Das spart erheblich Speicherplatz und RAM.
Architektur: Rust-Backend trifft Web-Frontend
In einer Tauri-Anwendung laufen zwei Prozesse: Der Core-Prozess (Rust) übernimmt alles, was direkten Systemzugriff erfordert – Dateisystem, Netzwerk, System-Tray, native Dialoge und Fensterverwaltung. Der WebView-Prozess zeigt die HTML/CSS/JS-Oberfläche an. Beide kommunizieren über ein IPC-Protokoll: Commands werden vom Frontend via invoke() aufgerufen, der Rust-Code antwortet asynchron.
Ein einfaches Rust-Command sieht so aus:
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hallo, {}!", name)
}
Auf der JavaScript-Seite reicht dann:
import { invoke } from '@tauri-apps/api/tauri';
const message = await invoke('greet', { name: 'Welt' });
Tauri v2: Mobile Unterstützung und neue APIs
Mit Tauri v2, das 2024 als stabile Version erschienen ist, wurde das Framework grundlegend erweitert. Der wichtigste Neuzugang ist die mobile Unterstützung: Tauri-Apps lassen sich nun auch für Android und iOS bauen. Die Kernarchitektur bleibt gleich – Rust-Backend, WebView-Frontend – aber statt der Desktop-WebView kommen hier die nativen WebViews der mobilen Plattformen zum Einsatz. Damit positioniert sich Tauri als universelles Framework für Desktop und Mobile zugleich.
Weitere Neuerungen in v2 umfassen ein überarbeitetes Plugin-System, verbesserte Sicherheitsgranularität durch das Capability-Modell sowie neue APIs für Kamera-Zugriff, Geolocation und Biometrie.
Nützliche Tauri-Features
System Tray: Tauri unterstützt System-Tray-Icons nativ. Mit wenigen Zeilen Rust-Code lässt sich ein Tray-Icon mit Kontextmenü einrichten, das auch im Hintergrund aktiv bleibt.
Dateisystem-API: Über das @tauri-apps/api/fs-Modul kann das Frontend – mit entsprechenden Berechtigungen – auf das lokale Dateisystem zugreifen, Dateien lesen, schreiben und Verzeichnisse auflisten. Im Vergleich zu reinen Web-Apps ist dieser Zugriff jedoch streng durch das Capability-Modell geregelt.
Vergleich: Tauri vs. Electron vs. NW.js vs. Wails
| Framework | Backend-Sprache | Bundle-Größe (typ.) | RAM-Verbrauch (Leerlauf) | Rendering | Mobile Support |
|---|---|---|---|---|---|
| Tauri | Rust | ~3–10 MB | ~30–80 MB | System-WebView | Ja (v2) |
| Electron | Node.js (JavaScript) | ~120–200 MB | ~150–300 MB | Chromium (gebündelt) | Nein |
| NW.js | Node.js (JavaScript) | ~100–180 MB | ~120–250 MB | Chromium (gebündelt) | Nein |
| Wails | Go | ~8–15 MB | ~40–100 MB | System-WebView | Experimentell |
Wails ist Tauris nächster Verwandter – ebenfalls System-WebView, jedoch mit Go statt Rust als Backend-Sprache. Für Go-Entwickler kann das attraktiver sein, während Tauri durch Rusts Speichersicherheit und Ökosystem punktet.
Typische Tauri-App mit React
Ein neues Tauri-Projekt mit React startet man per:
npm create tauri-app@latest my-app -- --template react-ts
Der erzeugte Projektbaum trennt sauber zwischen src/ (React-Frontend) und src-tauri/ (Rust-Backend). In tauri.conf.json werden Bundle-ID, Fensteroptionen und Berechtigungen konfiguriert. Das Build-Kommando npm run tauri build erzeugt plattformspezifische Installer – auf Windows ein MSI oder NSIS-Paket, auf macOS ein DMG und auf Linux AppImage oder .deb.
Weitere Informationen zur Tauri-Entwicklung findest du in der offiziellen Tauri v2 Dokumentation sowie im aktiven Tauri Discord-Server.
Fazit
Tauri ist eine überzeugende Alternative zu Electron für alle, die schlanke, schnelle und sichere Desktop-Apps mit Web-Technologien entwickeln möchten. Die Kombination aus Rust-Backend und System-WebView führt zu deutlich kleineren Binärdateien und geringerem Speicherverbrauch. Mit v2 und der mobilen Unterstützung hat sich der Anwendungsbereich erheblich erweitert. Wer bereit ist, etwas Rust zu lernen, bekommt ein modernes, zukunftsfähiges Framework.
Häufig gestellte Fragen (FAQ)
- Muss ich Rust lernen, um Tauri zu nutzen?
- Für einfache Apps reichen die vorhandenen Tauri-Plugins und -APIs aus, sodass man kaum Rust schreiben muss. Für eigene native Funktionen und Commands ist Rust-Grundwissen jedoch notwendig.
- Wie groß ist eine typische Tauri-App?
- Ohne eigene Assets liegt die Bundle-Größe häufig zwischen 3 und 10 MB. Zum Vergleich: Eine vergleichbare Electron-App bringt schnell 100–200 MB auf die Waage, weil Chromium mitgebündelt wird.
- Kann ich bestehende React- oder Vue-Projekte in Tauri einbinden?
- Ja. Tauri ist Frontend-agnostisch. Du kannst jedes auf HTML/CSS/JS basierende Projekt als Frontend verwenden – ob React, Vue, Svelte, Angular oder Vanilla JS.
- Unterstützt Tauri Auto-Updates?
- Ja, Tauri bringt ein eingebautes Update-Plugin mit. Es prüft einen konfigurierbaren Endpunkt auf neue Versionen und kann den Update-Prozess mit Code-Signierung absichern.