24 points par xguru 2025-02-03 | 15 commentaires | Partager sur WhatsApp
  • L’auteur, Felix Rieseberg, participe au développement d’Electron depuis plus de 10 ans en tant que co-mainteneur
  • Electron permet d’implémenter l’interface utilisateur avec des technologies web et, si nécessaire, d’y mêler librement du code natif
  • De nombreuses applications (Visual Studio Code, Slack, Discord, Figma, ChatGPT, Claude, Notion, 1Password, Docker Desktop, etc.) ont adopté Electron
  • Ce document passe en revue les principales idées reçues sur Electron et explique pourquoi ces choix ont été faits

Electron oppose JavaScript et code natif

  • On entend souvent dire que « Electron n’utilise que JavaScript, donc il est en retrait par rapport au natif »
  • En réalité, Electron permet d’utiliser du code natif en plus de JavaScript, notamment en C++, Objective-C ou Rust
  • Par exemple, 1Password écrit l’essentiel de son code en Rust et utilise Electron pour l’interface utilisateur
  • La force d’Electron est sa souplesse : mélanger autant de code natif que nécessaire tout en exploitant les technologies web pour l’UI
  • Il existe aussi des exemples de démonstration offrant partiellement une UI native avec SwiftUI, GTK, Win32, etc.

Les apps web sont mauvaises

  • Certains estiment que « toutes les apps natives sont toujours supérieures », mais la réalité du marché est loin d’être aussi simple
  • Le Mission Control de la NASA, Bloomberg Terminal, les bornes McDonald’s ou encore Dragon 2 de SpaceX utilisent eux aussi des technologies web basées sur Chromium
  • Les technologies web sont aujourd’hui les plus largement utilisées dans le monde, et une app web bien conçue peut offrir une excellente expérience utilisateur
  • Affirmer que « les apps web sont faites par des gens moins compétents » est une simplification qui ignore les exigences de l’environnement d’usage et le contexte des choix des développeurs

Le WebView du système d’exploitation est plus performant

  • Certains soutiennent que le WebView intégré à macOS, Windows ou Linux est souvent meilleur
  • En pratique, Slack utilisait au départ MacGap (basé sur WebView), mais a finalement adopté Electron (Chromium) à cause de problèmes de performance
  • Le moteur Chromium le plus récent consomme certes davantage de ressources, mais c’est aussi celui qui bénéficie des optimisations les plus actives
  • Le WebView intégré au système peut parfois sembler plus léger en mémoire grâce aux ressources partagées, mais il est souvent isolé en pratique pour des raisons de sécurité et de stabilité
  • Electron permet de gérer directement la version la plus récente du moteur, et donc de maintenir indépendamment la stabilité et la sécurité

La taille du bundle est importante

  • En général, les applications Electron pèsent entre 100 et 300 Mo, ce qui alimente certaines critiques
  • Mais les utilisateurs tendent à privilégier d’autres critères avant la taille de l’application : fonctionnalités, praticité, stabilité, etc.
  • Par exemple, un streaming Netflix en 4K consomme plusieurs Go par heure, et une mise à jour de Call of Duty peut atteindre des centaines de Go
  • Au final, la taille d’une app est souvent un facteur relativement moins important que la satisfaction réelle des utilisateurs

Vaincre Electron

  • Electron est né d’un effort open source mené par des personnes qui avaient pour objectif de « créer une bonne application desktop »
  • Electron a émergé dans un contexte avec peu de concurrents, et continue aujourd’hui à offrir des fonctionnalités suffisantes et de la stabilité
  • Pour « battre » Electron, il faut créer une plateforme capable de faire mieux ce qu’Electron fait déjà
  • Les mainteneurs d’Electron accueilleront volontiers une meilleure alternative si elle apparaît

15 commentaires

 
joone 2025-05-24

La comparaison avec Call of Duty semble un peu hors sujet.
Il faut regarder Teams, qui a abandonné Electron au profit de WebView,
https://techcommunity.microsoft.com/discussions/microsoftteams/…

 
pmc7777 2025-02-04

J’espère que Tauri gagnera vite en maturité. Cela dit, je l’utilise déjà très bien.

 
coma333 2025-02-04

À l’époque d’Atom Shell, j’ai l’impression que c’était hier… il a beaucoup évolué.

 
tsboard 2025-02-04

Il y a plusieurs points de critique, mais au vu du niveau de finition de l’application VS Code que nous utilisons tous les jours, il me semble certain qu’Electron y est pour beaucoup.

 
akintos 2025-02-03

J’ai près d’une dizaine d’apps Electron installées sur mon PC, donc à ce stade on pourrait presque se dire que ça devrait être un framework installé séparément.

 
freedomzero 2025-02-03

La taille du bundle aussi, et quand je vois les processus « ~~ Helper » bouffer la mémoire, ça me fait juste soupirer.

 
nullvana 2025-02-03

J’envisage Tauri comme alternative, mais je crains qu’il y ait des cas particuliers où cela ne fonctionne pas correctement au moment du déploiement. (Autrefois, j’ai vraiment galéré en déployant un programme qui, dans un environnement win32, référençait des DLL enregistrées par défaut comme msxml.dll; j’ai fini par l’intégrer en interne pour le déployer… donc je me demande s’il ne pourrait pas y avoir des problèmes similaires.)

Comme le dit le camp Electron, il faut sans doute simplement oublier la taille, mais la taille du bundle est vraiment trop grosse.

 
aaaapple123 2025-02-05

On dirait que c’est là que se situe le problème de Tauri..

Comme la WebView propre à chaque plateforme et les programmes intégrés sont tous différents, c’est effectivement le plus gros problème. On ne sait pas ce qui peut arriver après le déploiement.

Mais si on embarque la WebView elle-même dans Tauri, la taille du bundle devient alors plus grande que celle d’Electron..

C’est pourquoi je pense que, pour le développement d’applications cross-platform en production, Tauri n’est pas encore assez mature.

 
secret3056 2025-02-03

Les bornes de commande de McDonald’s sont… euh… un bon exemple, peut-être.

 
tsboard 2025-02-04

La même pensée m’a traversé l’esprit. Je me suis demandé un instant si les bornes de McDo à l’étranger étaient quand même un peu différentes ? haha

 
dicebattle 2025-02-03

mdr, j’ai pensé exactement la même chose aussi

 
savvykang 2025-02-03

J’ai l’impression que la réduction de l’utilisation mémoire serait le plus grand défi, et c’est dommage qu’aucune des parties prenantes ne semble avoir de réelle motivation pour s’y atteler.

 
rtyu1120 2025-02-03

Il existe aussi des exemples de démonstration qui fournissent partiellement une UI native en s’appuyant sur SwiftUI, GTK, Win32, etc.

Dans le texte, il y avait un lien vers le code de démonstration réel, donc je suis allé vérifier, et ça ne donne pas vraiment l’impression que ce soit assez simple pour être utilisé ensemble de façon très basique. Il faut sans doute surtout y voir la preuve que c’est possible, dans un premier temps...

 
lamanus 2025-02-03

Apparemment, c’est bien vrai que les applis sont généralement volumineuses…

 
dohyun682 2025-02-03

Oui, là-dessus, ils reconnaissent volontiers la taille du bundle.