Comparaison entre Tauri et Electron : performances, taille du bundle et vrais compromis
(gethopp.app)- En développant une application de contrôle à distance à très faible latence pour le pair programming à distance, l’équipe a adopté Tauri comme framework d’application
- Les raisons de ce choix incluent les performances, l’efficacité mémoire et la prise en charge des sidecars
- Grâce à un backend basé sur Rust et à l’utilisation du WebView système, la taille de l’application et la consommation mémoire sont bien plus faibles qu’avec Electron
- Avec Tauri v2, l’écart fonctionnel se réduit rapidement : des fonctionnalités clés comme les mises à jour automatiques et les sidecars sont intégrées
- Electron reste puissant, mais pour les besoins spécifiques de Hopp, Tauri est mieux adapté
Pourquoi Hopp a choisi Tauri
Contexte : choisir un framework d’application cross-platform
- Hopp avait besoin d’une application desktop haute performance fonctionnant de manière identique sur Windows, macOS et Linux
- Electron et Tauri sont deux choix de référence, avec des avantages et inconvénients bien distincts
- L’équipe Hopp a fait son choix en mettant l’accent sur la maintenabilité à long terme et les performances
Tauri vs. Electron : différences structurelles
-
Architecture d’Electron
- Nécessite d’inclure le runtime Node.js → taille de l’application plus importante
- Chaque fenêtre utilise un processus de rendu séparé (moteur Chromium) → consommation mémoire élevée
- Une intégration profonde avec le système nécessite des processus supplémentaires
-
Résumé de l’architecture de Tauri
- Le backend est un binaire natif basé sur Rust → aucun runtime séparé requis
- Utilise le WebView système (Windows : WebView2, macOS : WKWebView, Linux : WebKitGTK)
- Bonne efficacité mémoire selon le nombre de fenêtres, mais nécessite de gérer les problèmes d’incohérence entre moteurs de navigateur
Comparaison des fonctionnalités clés
- Le temps de démarrage est rapide à la fois pour Tauri et Electron, sans grande différence perceptible en pratique
- En matière de consommation mémoire, Tauri est nettement plus sobre
- Tauri utilisait environ 172MB de mémoire
- Electron était à environ 409MB, soit une consommation de plus du double
- Du point de vue du moteur de rendu
- Tauri utilise le WebView intégré au système d’exploitation, ce qui permet une application légère et de petite taille
- Electron embarque directement le moteur Chromium dans l’application, ce qui consomme davantage de ressources
- Concernant le langage backend
- Tauri utilise Rust, ce qui permet d’écrire du code natif haute performance
- Electron repose sur JavaScript (Node.js), plus familier pour les développeurs web mais relativement moins performant
- Pour le temps de build initial
- Tauri inclut la compilation Rust, donc le build initial est plus lent
- Electron, basé sur JS, a un build initial plus rapide
- En comparaison de taille d’application
- Tauri pèse environ 8.6MiB, ce qui le rend très léger
- Electron pèse environ 244MiB, soit environ 28 fois plus
Les raisons décisives du choix de Tauri par Hopp
-
1. Un backend Rust haute performance
- Nécessité de mettre en œuvre un streaming vidéo à très faible latence basé sur WebRTC
- Avec Electron, il faut lancer des processus séparés, alors qu’avec Tauri, cela peut être implémenté directement dans le backend Rust
-
2. Prise en charge des processus sidecar
- Le streaming et le traitement des entrées sont isolés dans des binaires distincts pour une gestion plus propre
- Tauri prend officiellement en charge les sidecars → gestion simplifiée du cycle de vie et des communications
- À l’avenir, une extension vers Tauri egui est aussi envisagée pour le rendu du curseur
-
3. Un support fonctionnel qui évolue rapidement
- Tauri v2 intègre des fonctions clés comme les mises à jour automatiques
- Plus récent qu’Electron, mais sa vision centrée sur la sécurité et les performances correspond à celle de Hopp
Conclusion : quel framework est le meilleur ?
- Electron et Tauri sont tous deux d’excellents frameworks pour applications desktop
- Le choix peut varier selon la nature du projet
- Electron : développement rapide, compatible JS, vaste écosystème
- Tauri : plus petit, plus léger, plus rapide, et optimisé pour les performances grâce à Rust
- Hopp a choisi Tauri en raison de sa stack technique orientée performances et du besoin d’une architecture avec processus séparés
6 commentaires
J’utilise webui. La taille est plus petite et il y a bien moins de dépendances à l’exécution.
Ce serait bien d’y inclure aussi Wails dans la comparaison.
J’ai plutôt l’impression qu’à l’inverse, dans la plupart des cas, Electron suffit.
C’est peut-être parce que je garde un mauvais souvenir des échanges back-end/front-end dans les débuts de Tauri...
Je pense que la différence de moteur de navigateur est un enjeu important, mais si l’on tient compte de la prise en charge, y compris sur mobile, cela paraît aussi moins déterminant.
Si la taille de l’application est un enjeu majeur, alors il vaut clairement mieux partir sur Tauri.
Je vais devoir l’essayer pour voir si c’est un choix pertinent en termes de taille, de mémoire et de sidecar ! Merci pour la présentation.