Alternativas ao Electron para Desenvolvedores TypeScript
O Electron tornou as aplicações desktop acessíveis para desenvolvedores web, e seus custos de tamanho e memória fizeram de “alternativa ao Electron” uma pesquisa permanente. Se TypeScript é a sua linguagem, existem quatro caminhos realistas em 2026: ficar com o Electron, migrar para o Tauri, construir binários com runtime embutido usando o Bun, ou compilar para nativo com o Perry. Eles fazem trade-offs muito diferentes.
As quatro abordagens
Electron — o ponto de partida
Empacota Chromium e Node.js com cada aplicação. A vantagem é uma década de maturidade em produção e uma stack de UI (HTML/CSS/JS) que sua equipe já conhece — VS Code, Slack e Discord rodam nele. A desvantagem é o custo básico: instaladores de hello world de aproximadamente 80–150 MB, múltiplos processos Chromium e centenas de MB de RAM em ociosidade. Apenas desktop. Comparação completa Perry vs Electron.
Tauri — UI web na webview do sistema, backend em Rust
O Tauri mantém o frontend web mas descarta o Chromium empacotado: a UI é renderizada na webview do SO (WKWebView, WebView2, WebKitGTK), então os instaladores ficam na faixa de MB de um único dígito. É estável, bem documentado, e o Tauri 2 adicionou iOS/Android. Os trade-offs: o backend é Rust, não TypeScript — lógica de aplicação além da UI significa escrever Rust e cruzar uma ponte IPC — e a renderização varia um pouco por plataforma porque cada SO traz uma webview diferente. Comparação completa Perry vs Tauri.
Bun — binários de arquivo único, sem camada GUI
Pessoas pesquisando “bun electron” geralmente querem a conveniência do Electron sem o seu peso. bun build --compile produz um único executável embutindo o runtime do Bun com seu TypeScript empacotado — excelente para CLIs e servidores, com compatibilidade total com npm já que literalmente é o runtime. Mas o binário fica em torno de 60 MB (macOS arm64) a mais de 100 MB (Linux/Windows), o código ainda é executado via JIT, e o Bun não tem framework de UI — uma aplicação desktop ainda precisa de Electron, Tauri ou uma biblioteca de webview por cima. Comparação completa Perry vs Bun.
Perry — TypeScript compilado para widgets nativos
O Perry compila TypeScript ahead-of-time para código de máquina e renderiza a UI através de widgets reais da plataforma — AppKit, UIKit, GTK4, Win32, Android via JNI — sem webview e sem ponte IPC. Uma única linguagem para UI e lógica, ~330 KB para um hello world, binários típicos de 2–5 MB, ~1 ms de inicialização, e dez alvos incluindo mobile, relógio e TV. A ressalva honesta: o Perry é pré-1.0, sua API de UI é própria (declarativa, estilo SwiftUI — não HTML/CSS), e o ecossistema é jovem perto do Electron.
Lado a lado
| Perry | Electron | Tauri | Bun (--compile) | |
|---|---|---|---|---|
| Linguagem | TypeScript em todo lugar | JS/TS + HTML/CSS | Frontend JS/TS, backend Rust | TypeScript |
| Abordagem de UI | Widgets nativos da plataforma | Chromium empacotado | Webview do sistema | Nenhuma (CLI/servidor) |
| Tamanho do hello world | ~330 KB | ~80–150 MB | ~3–10 MB | ~60–116 MB dependendo da plataforma |
| Execução | Código de máquina AOT | JIT (V8) | JIT (motor JS da webview) + Rust nativo | JIT (JavaScriptCore) |
| Memória em ociosidade | Dezenas de MB (processo nativo único) | Centenas de MB (Chromium multi-processo) | Menor que o Electron (webview do SO) | Típico de runtime |
| Mobile / relógio / TV | iOS, iPadOS, Android, watchOS, tvOS | Não | iOS, Android (Tauri 2) | Não |
| Maturidade | Pré-1.0 | Mais de uma década em produção | Estável (1.x/2.x) | Estável |
E quanto a React Native ou Flutter?
Eles aparecem em toda thread sobre Electron, mas respondem a uma pergunta diferente. O React Native é mobile-first: seu JavaScript roda no motor Hermes e aciona views nativas através de uma ponte, e o suporte a desktop existe apenas através de forks separados da comunidade/Microsoft — não é um substituto direto para o Electron (Perry vs React Native). O Flutter cobre desktop e mobile, mas significa deixar o TypeScript pelo Dart, e ele desenha os próprios widgets em vez de usar os da plataforma. Se permanecer em TypeScript é a restrição, a lista realista para desktop continua sendo as quatro opções acima.
Qual você deveria escolher?
Fique com a stack web
Se sua UI já está construída em React/Vue/Svelte e você precisa de distribuição desktop testada em batalha hoje, o Electron continua sendo a escolha de menor risco — você paga em tamanho e memória. Se esse custo incomoda e você está confortável escrevendo o backend em Rust, o Tauri te dá a maior parte da experiência da stack web a uma fração do footprint.
Deixe a webview para trás
Se o que você realmente quer é TypeScript entrando, aplicação nativa saindo — uma única linguagem, widgets reais da plataforma, binários pequenos, e mobile/relógio/TV a partir do mesmo código — essa é exatamente a lacuna que o Perry existe para preencher, com a maturidade pré-1.0 como preço de entrada. E se você só precisa de uma CLI ou servidor como um único arquivo com risco zero de compatibilidade, o --compile do Bun é a escolha pragmática.
Veja com seus próprios olhos
Instale o Perry e entregue uma aplicação nativa a partir de TypeScript.