- Bei der Entwicklung einer Remote-Control-App mit extrem niedriger Latenz für Remote-Pair-Programming wurde Tauri als App-Framework gewählt
- Gründe für die Wahl waren unter anderem Performance, Speichereffizienz und Sidecar-Support
- Durch ein Rust-basiertes Backend und die Nutzung des System-WebView sind App-Größe und Speicherverbrauch im Vergleich zu Electron deutlich kleiner
- Mit Tauri v2 wird auch die Funktionslücke schnell geschlossen, zentrale Features wie Auto-Updates und Sidecars sind integriert
- Electron ist weiterhin leistungsfähig, aber für die speziellen Anforderungen von Hopp ist Tauri besser geeignet
Warum sich Hopp für Tauri entschieden hat
Hintergrund: Wahl eines Cross-Platform-App-Frameworks
- Hopp benötigt eine hochperformante Desktop-App, die unter Windows, macOS und Linux identisch funktioniert
- Electron und Tauri sind dabei die wichtigsten Optionen, jeweils mit klaren Vor- und Nachteilen
- Das Hopp-Team traf die Wahl mit Fokus auf langfristige Wartbarkeit und Performance
Tauri vs. Electron: strukturelle Unterschiede
-
Electron-Architektur
- Enthält zwingend eine Node.js-Laufzeit → größere App-Größe
- Jedes Fenster nutzt einen separaten Renderer-Prozess (Chromium-Engine) → hoher Speicherverbrauch
- Für eine tiefe Systemintegration sind zusätzliche Prozesse erforderlich
-
Tauri-Architektur im Überblick
- Das Backend ist ein nativer Binärcode auf Rust-Basis → keine separate Laufzeit nötig
- Verwendet den System-WebView (Windows: WebView2, macOS: WKWebView, Linux: WebKitGTK)
- Gute Speichereffizienz je nach Anzahl der Fenster, allerdings müssen Probleme durch unterschiedliche Browser-Engines gemanagt werden
Vergleich zentraler Funktionen
- Die Startzeit ist bei Tauri und Electron in beiden Fällen schnell, subjektiv gibt es keinen großen Unterschied
- Beim Speicherverbrauch liegt Tauri deutlich vorn
- Tauri nutzte etwa 172MB Speicher
- Electron lag bei etwa 409MB und verbrauchte damit mehr als doppelt so viel Speicher
- Hinsichtlich der Rendering-Engine gilt
- Tauri nutzt den im Betriebssystem integrierten WebView, wodurch die App klein und leichtgewichtig bleibt
- Electron liefert die Chromium-Engine direkt mit der App aus und benötigt dadurch mehr Ressourcen
- Bei der Backend-Sprache gilt
- Tauri verwendet Rust, wodurch sich nativer Hochleistungs-Code schreiben lässt
- Electron basiert auf JavaScript (Node.js), was Webentwicklern vertraut ist, aber relativ geringere Performance bietet
- Die anfängliche Build-Zeit ist
- bei Tauri durch die Rust-Kompilierung langsamer beim ersten Build
- bei Electron auf JS-Basis schneller beim ersten Build
- Beim Vergleich der App-Größe
- kommt Tauri auf nur etwa 8.6MiB und ist damit sehr leichtgewichtig
- Electron liegt bei etwa 244MiB und ist damit rund 28-mal größer
Die entscheidenden Gründe für Hopps Wahl von Tauri
-
1. Hochperformantes Rust-Backend
- Es musste WebRTC-basiertes Video-Streaming mit extrem niedriger Latenz umgesetzt werden
- Unter Electron wäre dafür ein separater Prozess nötig, mit Tauri lässt sich dies direkt im Rust-Backend implementieren
-
2. Unterstützung für Sidecar-Prozesse
- Streaming und Eingabeverarbeitung werden in separate Binärdateien ausgelagert und so verwaltet
- Tauri unterstützt Sidecars offiziell → Lebenszyklus und Kommunikation lassen sich einfach verwalten
- Für künftiges Cursor-Rendering wird auch eine Erweiterung in Richtung Tauri egui erwogen
-
3. Schnell weiterentwickelte Feature-Unterstützung
- Tauri v2 integriert zentrale Funktionen wie Auto-Updates bereits nativ
- Im Vergleich zu Electron ist es zwar jünger, doch die auf Sicherheit und Performance ausgerichtete Vision passt zu Hopp
Fazit: Welches Framework ist besser?
- Sowohl Electron als auch Tauri sind hervorragende Frameworks für Desktop-Apps
- Welche Wahl besser ist, hängt vom Charakter des Projekts ab
- Electron: schnelle Entwicklung, JS-freundlich, breites Ökosystem
- Tauri: kleiner, leichter, schneller und auf Rust-basierte Performance optimiert
- Hopp entschied sich für Tauri, weil ein auf Performance ausgerichteter Tech-Stack und eine Architektur mit separaten Prozessen benötigt wurden
6 Kommentare
Ich nutze webui. Es ist kompakt und hat deutlich weniger Laufzeitabhängigkeiten.
Ein Vergleich mit Wails wäre auch gut.
Für mich liest es sich eher so, als würde in den meisten Fällen Electron ausreichen.
Vielleicht liegt das auch daran, dass ich die frühen Erfahrungen mit der Backend-Frontend-Kommunikation in Tauri nicht besonders gut in Erinnerung habe...
Man denkt zwar, dass der Unterschied bei den Browser-Engines ein großes Thema ist, aber wenn man die Unterstützung einschließlich Mobile mitbedenkt, wirkt er auch wieder kleiner.
Wenn die App-Größe ein großes Problem ist, dann ist es auf jeden Fall richtig, sich für Tauri zu entscheiden.
Ich sollte wohl selbst einmal ausprobieren, ob es in Bezug auf Größe, Speicherverbrauch und Sidecars die richtige Wahl ist! Danke für die Einführung.