Discord remplace Electron par Rust et GPUI pour des applications de bureau plus rapides et plus légères
Le nouveau client de Discord basé sur Rust se lance beaucoup plus rapidement et utilise 70 % de RAM en moins que son prédécesseur Electron grâce au framework GPUI.
Traduit automatiquement depuis l'original anglais.
Discord a démontré un changement architectural majeur dans son application de bureau Windows 11, abandonnant le framework Electron au profit d'une implémentation native développée en Rust. Dans une comparaison côte à côte partagée par Stanislav Vishnevskiy, cofondateur et CTO, le nouveau client a chargé son interface et sa liste d'amis avant même que l'ancienne application Electron n'ait terminé sa séquence de démarrage initiale. Cette transition met en évidence une tendance croissante parmi les applications hautes performances à délaisser les moteurs web embarqués au profit de langages système.
Ce qui s'est passé
La démonstration impliquait deux Lenovo ThinkPads sous Windows 11, où tant le client Electron actuel que le nouveau client basé sur Rust ont été lancés depuis un arrêt complet (cold start). La vidéo, qui a cumulé des millions de vues, montrait l'application Electron affichant une fenêtre vierge et un conseil de chargement pendant plusieurs secondes. En revanche, le nouveau client, identifié comme Discord Phoenix dans le Gestionnaire des tâches, est apparu en fondu en moins d'une seconde et avait déjà peuplé la liste d'amis alors que l'ancienne version était encore en cours d'initialisation. Les employés de Discord ont confirmé qu'aucune instance ne tournait en arrière-plan ni ne se lançait depuis la zone de notification, validant ainsi que la différence de vitesse résulte de la nouvelle architecture.
Au-delà des temps de démarrage, l'efficacité énergétique du nouveau client marque une amélioration significative. La version Rust consommait seulement 290,2 Mo de RAM tout en gérant deux comptes connectés simultanément. Ce chiffre représente une réduction d'environ 70 % par rapport aux 1 Go d'utilisation typique au repos du client Electron. L'entreprise a noté que les tentatives précédentes d'optimisation de la build Electron, telles que la mise à niveau vers Electron 42, n'avaient apporté que des améliorations marginales du CPU au prix d'une légère augmentation de l'utilisation mémoire. La nouvelle approche élimine le besoin de l'écran « Starting » traditionnel, car les mises à jour automatiques en arrière-plan et le démarrage rapide rendent cette fenêtre modale obsolète.
Comment cela fonctionne
Discord a remplacé le runtime Electron basé sur Chromium par GPUI, un framework d'interface utilisateur accéléré par GPU écrit en Rust. Contrairement à Electron, qui embarque un moteur de navigateur complet et un environnement Node.js pour chaque instance d'application, GPUI dessine les éléments de l'interface directement sur le GPU en utilisant une stratégie de rendu hybride combinant modes immédiat et conservé. Cela permet à l'application de contourner la surcharge liée à l'analyse HTML et CSS pour les composants principaux de l'interface. Rust gère la logique de l'application et la mémoire sans ramasse-miettes (garbage collector), offrant des performances déterministes et une empreinte mémoire réduite.
L'architecture diffère des autres frameworks basés sur Rust comme Tauri, qui dépend toujours de la webview du système d'exploitation (comme WebView2 sur Windows) pour rendre les interfaces HTML. L'implémentation de Discord évite totalement les technologies web pour la coquille principale, bien qu'elle continue d'utiliser la webview native du système pour certains contenus intégrés tels que les vidéos YouTube et les Activités. Cette approche hybride garantit que les intégrations web complexes restent fonctionnelles tandis que l'interface utilisateur principale bénéficie de la rapidité du rendu natif. Le même codebase Rust est adapté pour les plateformes mobiles, remplaçant React Native sur iOS et Android, et alimentera la logique du client web via WebAssembly.
Détails clés
- Le nouveau client Rust utilise environ 290,2 Mo de RAM avec deux comptes actifs, contre 1 à 2 Go pour la version Electron.
- Le temps de démarrage est considérablement réduit, le nouveau client chargeant la liste d'amis avant que l'application Electron ne termine son animation de démarrage.
- Discord utilise GPUI, un framework UI Rust créé par les développeurs de l'éditeur de code Zed, plutôt que Tauri ou WinUI.
- L'application prend en charge la connexion multi-comptes simultanée sans nécessiter la fermeture et le redémarrage du client entre les changements.
- Les mises à jour sont gérées en arrière-plan, éliminant le besoin de la fenêtre modale « Starting » qui vérifie les mises à jour au lancement.
- Le nouveau client stocke les jetons de connexion dans le trousseau de clés du système, tel que le Gestionnaire d'identifiants sur Windows, pour une sécurité renforcée.
Pourquoi c'est important
Pour les ingénieurs logiciels et les responsables techniques, cette migration valide la viabilité de Rust et des frameworks UI personnalisés pour les applications grand public à grande échelle. Elle remet en question l'hypothèse longtemps admise selon laquelle Electron serait la seule solution pratique pour maintenir la parité multiplateforme avec un seul codebase. En démontrant qu'une application de chat complexe et riche en fonctionnalités peut atteindre des performances quasi natives et une faible utilisation mémoire sans sacrifier la vélocité de développement, Discord fournit un modèle aux autres équipes confrontées à la lourdeur des wrappers desktop basés sur le web.
Ce changement répond également aux pressions industrielles plus larges concernant les contraintes de ressources matérielles. Avec la hausse des prix de la mémoire et les limitations d'approvisionnement des centres de données, une conception logicielle efficace devient un avantage concurrentiel plutôt qu'un simple raffinement technique. Les applications qui dépendaient auparavant de l'abondance de RAM bon marché sont désormais forcées de s'optimiser. Le mouvement de Discord signale que les utilisateurs et les développeurs atteignent un point de bascule où la commodité des technologies web ne justifie plus la pénalité de performance, surtout pour les outils de communication toujours actifs.
Ce que vous pouvez faire
- Évaluez si l'interface utilisateur principale de votre application desktop nécessite réellement un rendu HTML/CSS ou si un framework natif accéléré par GPU pourrait réduire la surcharge.
- Étudiez les toolkits UI basés sur Rust comme GPUI ou Iced si vous cherchez à réduire l'empreinte mémoire et améliorer les temps de démarrage.
- Analysez l'utilisation mémoire de votre application Electron actuelle pour identifier si les instances Chromium embarquées consomment des ressources disproportionnées.
- Envisagez d'implémenter des mécanismes de mise à jour en arrière-plan pour supprimer les fenêtres modales bloquantes au démarrage et améliorer la performance perçue.
- Explorez WebAssembly pour partager la logique métier entre les clients web et natifs, permettant un codebase unifié sans rendu UI uniforme.
- Suivez la sortie publique du nouveau client de Discord pour comparer les gains de performance réels avec vos propres métriques internes.



