Retour aux comparaisons
UI multiplateforme

Perry vs Electron

Electron permet de construire des applications desktop multiplateformes en utilisant les technologies du web (HTML/CSS/JS) en regroupant Chromium et Node.js avec votre application. Perry compile TypeScript directement en code machine natif et rend l'UI à travers de vrais widgets de plateforme — AppKit, UIKit, GTK4, Win32, JNI. La promesse d'Electron est la réutilisation des technos web ; celle de Perry est de petits binaires natifs avec une UI native depuis TypeScript.

Qu'est-ce que Electron ?

Electron est un framework open-source pour construire des applications desktop multiplateformes utilisant Chromium pour le rendu et Node.js pour l'accès système. Chaque application Electron livre sa propre copie de Chromium et de Node, ce qui explique pourquoi les installeurs d'applications Electron font typiquement 80 à 150 Mo, même pour un hello world. Electron a propulsé des applications largement utilisées dont VS Code, Slack, Discord et le client desktop Figma. Il cible les desktops Linux, macOS et Windows ; il n'y a pas de stratégie mobile, montre ou TV en première partie.

Qu'est-ce que Perry ?

Perry compile TypeScript directement en code machine natif sans moteur de navigateur, sans Chromium et sans runtime Node. La couche UI (perry/ui) est un système déclaratif de style SwiftUI qui se mappe vers les widgets natifs de plateforme via AppKit sur macOS, UIKit sur iOS/iPadOS/tvOS, GTK4 sur Linux, Win32 sur Windows et JNI sur Android. Les binaires hello-world font ~330 Ko ; les applications complètes avec stdlib (Fastify, mysql2, etc.) tournent autour de 48 Mo.

Côte à côte

FonctionnalitéPerryElectron
RenduWidgets natifs de plateforme (AppKit, UIKit, GTK4, Win32, JNI)Chromium embarqué (HTML/CSS/JS)
Moteurs embarquésAucun (V8 optionnel uniquement avec --enable-js-runtime)Chromium + Node.js
Taille de l'installeur hello-world~330 Ko~80–150 Mo
Installeur d'application complète (stdlib + frameworks)~48 Mo100 à 200+ Mo typiquement
Utilisation de RAMNative (typiquement : dizaines de Mo)Plusieurs processus Chromium (typiquement : centaines de Mo)
Mobile / montre / TVOui — iOS, iPadOS, Android, watchOS, tvOS, Wear OSNon (desktop uniquement)
Langage UITypeScript avec API déclarative de style SwiftUIHTML/CSS/JS (stack web)
Mise à jour auto / packagingperry publish (Homebrew, APT, App Store, Play Store)electron-builder, electron-updater (écosystème mature)
MaturitéPré-1.0Stable, plus d'une décennie en production

Là où Perry l'emporte

  • +Taille du binaire. Un hello world Perry fait ~330 Ko ; un hello world Electron fait typiquement 80 à 150 Mo parce que chaque application livre son propre Chromium.
  • +Empreinte mémoire. Les applications Perry tournent comme un seul processus natif ; les applications Electron tournent plusieurs processus Chromium (renderer, GPU, utility, etc.) et consomment des centaines de Mo de RAM au repos.
  • +Apparence et comportement natifs. Perry effectue le rendu via de vrais widgets de plateforme, donc les applications héritent automatiquement des conventions de l'OS (anneaux de focus, accessibilité, IME, physique de défilement).
  • +Mobile, montre, TV. Un seul codebase Perry compile vers iOS/iPadOS/Android/watchOS/tvOS/Wear OS. Electron est desktop uniquement.
  • +Démarrage à froid. Les binaires natifs n'ont pas à payer le coût de démarrage de Chromium et Node.
  • +Performances CPU réelles sur du code serré. Perry domine les microbenchmarks de calcul face à Node (qu'utilise Electron) par des multiples sur la plupart des kernels (voir perry/benchmarks).

Là où Electron l'emporte

  • +Maturité. Electron est en production depuis plus d'une décennie et propulse VS Code, Slack, Discord et de nombreuses autres applications avec un outillage éprouvé.
  • +Réutilisation de la stack web. Si votre équipe construit déjà des UI web, Electron vous permet de les livrer en application desktop sans réécriture.
  • +La cohérence de l'UI entre plateformes est facile — Chromium effectue le même rendu sur tous les OS, ce qui est exactement ce que certains produits veulent.
  • +Vaste écosystème de bibliothèques npm fonctionnant à l'exécution ; Perry exécute un sous-ensemble nativement et le V8 opt-in couvre le reste.
  • +Outillage de packaging mature (electron-builder, electron-updater, helpers de signature de code) avec un large support communautaire.
  • +Les fonctionnalités natives au web comme les devtools, le hot reload et la rapidité d'itération CSS/HTML fluide sont inégalées.

Quand choisir Perry

Choisissez Perry si vous voulez de petits binaires natifs, une faible utilisation mémoire, une apparence et un comportement natifs par plateforme, ou un seul codebase TypeScript qui livre vers mobile/montre/TV en plus du desktop.

Quand choisir Electron

Choisissez Electron si vous avez une UI web existante et voulez la livrer en application desktop avec un minimum de réécriture, si vous avez besoin d'une cohérence d'UI maximale entre plateformes desktop, ou si vous dépendez d'un large éventail de bibliothèques pur-JS à l'exécution.

Verdict

Electron et Perry se trouvent aux extrémités opposées du spectre multiplateforme. Electron échange la taille du binaire et la mémoire contre la réutilisation des technos web ; Perry échange la stack web contre des binaires natifs et de l'UI native. Si vous avez vu l'installeur de votre application Electron grossir au-delà de 150 Mo ou sa RAM au repos dépasser le demi-gigaoctet, Perry est la réponse à ce problème spécifique — au prix d'un modèle d'UI différent, de style natif.

Essayer Perry

Compilez votre TypeScript en natif dès aujourd'hui.

Commencer