Voltar às comparações
UI multiplataforma

Perry vs Electron

Electron permite construir aplicações desktop multiplataforma usando tecnologias web (HTML/CSS/JS) empacotando Chromium e Node.js com sua aplicação. Perry compila TypeScript diretamente para código de máquina nativo e renderiza UI através de widgets reais da plataforma — AppKit, UIKit, GTK4, Win32, JNI. A proposta do Electron é o reaproveitamento de tecnologias web; a proposta do Perry é binários nativos pequenos com UI nativa a partir de TypeScript.

O que é Electron?

Electron é um framework de código aberto para construir aplicações desktop multiplataforma usando Chromium para renderização e Node.js para acesso ao sistema. Cada aplicação Electron entrega sua própria cópia do Chromium e do Node, razão pela qual instaladores de aplicações Electron tipicamente têm 80–150 MB mesmo para um hello world. Electron tem alimentado aplicações amplamente usadas, incluindo VS Code, Slack, Discord e o cliente desktop do Figma. Tem como alvo desktops Linux, macOS e Windows; não há proposta primária para mobile, relógio ou TV.

O que é Perry?

Perry compila TypeScript diretamente para código de máquina nativo sem motor de navegador, sem Chromium e sem runtime do Node. A camada de UI (perry/ui) é um sistema declarativo estilo SwiftUI que mapeia para widgets nativos da plataforma via AppKit no macOS, UIKit no iOS/iPadOS/tvOS, GTK4 no Linux, Win32 no Windows e JNI no Android. Binários hello-world têm ~330 KB; aplicações completas com stdlib (Fastify, mysql2 etc.) ficam em torno de 48 MB.

Lado a lado

FuncionalidadePerryElectron
RenderizaçãoWidgets nativos da plataforma (AppKit, UIKit, GTK4, Win32, JNI)Chromium empacotado (HTML/CSS/JS)
Motores empacotadosNenhum (V8 opcional somente com --enable-js-runtime)Chromium + Node.js
Tamanho do instalador hello-world~330 KB~80–150 MB
Instalador de aplicação completa (stdlib + frameworks)~48 MB100–200+ MB típicos
Uso de RAMNativo (típico: dezenas de MB)Múltiplos processos do Chromium (típico: centenas de MB)
Mobile / relógio / TVSim — iOS, iPadOS, Android, watchOS, tvOS, Wear OSNão (apenas desktop)
Linguagem de UITypeScript com API declarativa estilo SwiftUIHTML/CSS/JS (stack web)
Auto-update / empacotamentoperry publish (Homebrew, APT, App Store, Play Store)electron-builder, electron-updater (ecossistema maduro)
MaturidadePré-1.0Estável, mais de uma década em produção

Onde o Perry ganha

  • +Tamanho do binário. Um hello world em Perry tem ~330 KB; um hello world em Electron tipicamente tem 80–150 MB porque cada aplicação entrega seu próprio Chromium.
  • +Pegada de memória. Aplicações Perry rodam como um único processo nativo; aplicações Electron rodam múltiplos processos do Chromium (renderer, GPU, utility etc.) e consomem centenas de MB de RAM em ociosidade.
  • +Aparência e comportamento nativos. Perry renderiza através de widgets reais da plataforma, então as aplicações herdam convenções do SO (focus rings, acessibilidade, IME, física de scroll) automaticamente.
  • +Mobile, relógio, TV. Um único código Perry compila para iOS/iPadOS/Android/watchOS/tvOS/Wear OS. Electron é apenas desktop.
  • +Cold start. Binários nativos não pagam o custo de inicialização do Chromium e do Node.
  • +Desempenho real de CPU em código intensivo. Perry lidera microbenchmarks de computação contra o Node (que o Electron usa) por múltiplos na maioria dos kernels (veja perry/benchmarks).

Onde o Electron ganha

  • +Maturidade. Electron está em produção há mais de uma década e alimenta VS Code, Slack, Discord e muitas outras aplicações com ferramentas testadas em batalha.
  • +Reaproveitamento da stack web. Se sua equipe já constrói UIs web, Electron permite entregá-las como aplicação desktop sem reescrita.
  • +Consistência de UI entre plataformas é fácil — o Chromium renderiza igual em todos os SOs, que é exatamente o que alguns produtos querem.
  • +Vasto ecossistema de bibliotecas npm funciona em runtime; Perry roda um subconjunto nativamente e o V8 opt-in cobre o resto.
  • +Ferramentas maduras de empacotamento (electron-builder, electron-updater, helpers de assinatura de código) com amplo suporte da comunidade.
  • +Recursos web nativos como devtools, hot reload e velocidade de iteração fluida em CSS/HTML não têm igual.

Quando escolher Perry

Escolha o Perry se você quer binários nativos pequenos, baixo uso de memória, aparência e comportamento nativos por plataforma, ou um único código TypeScript que entrega para mobile/relógio/TV além de desktop.

Quando escolher Electron

Escolha o Electron se você tem uma UI web existente e quer entregá-la como aplicação desktop com mínima reescrita, se você precisa de máxima consistência de UI entre plataformas no desktop, ou se você depende de uma ampla gama de bibliotecas JS puras em runtime.

Veredito

Electron e Perry estão em extremos opostos do espectro multiplataforma. Electron troca tamanho de binário e memória pelo reaproveitamento de tecnologias web; Perry troca a stack web por binários nativos e UI nativa. Se você viu o instalador da sua aplicação Electron passar dos 150 MB ou sua RAM em ociosidade passar de meio gigabyte, o Perry é a resposta para esse problema específico — ao custo de um modelo de UI diferente, em estilo nativo.

Experimente o Perry

Compile seu TypeScript para nativo hoje.

Começar