Torna ai confronti

Alternative a Electron per sviluppatori TypeScript

Electron ha reso le app desktop accessibili agli sviluppatori web, e i suoi costi in termini di dimensione e memoria hanno reso “Electron alternative” una query di ricerca permanente. Se TypeScript è il tuo linguaggio, ci sono quattro percorsi realistici nel 2026: restare con Electron, passare a Tauri, costruire binari con runtime embedded con Bun, o compilare in nativo con Perry. Fanno compromessi molto diversi.

I quattro approcci

Electron — la base di riferimento

Distribuisce Chromium e Node.js con ogni app. Il vantaggio è un decennio di maturità in produzione e uno stack UI (HTML/CSS/JS) che il tuo team già conosce — VS Code, Slack e Discord ci girano sopra. Lo svantaggio è il costo di base: installer hello-world di circa 80–150 MB, più processi Chromium e centinaia di MB di RAM a riposo. Solo desktop. Confronto completo Perry vs Electron.

Tauri — UI web nella webview di sistema, backend Rust

Tauri mantiene il frontend web ma elimina Chromium in bundle: la UI viene renderizzata nella webview del sistema operativo (WKWebView, WebView2, WebKitGTK), quindi gli installer si attestano su una manciata di MB. È stabile, ben documentato, e Tauri 2 ha aggiunto iOS/Android. I compromessi: il backend è Rust, non TypeScript — la logica dell'app oltre la UI significa scrivere Rust e attraversare un bridge IPC — e il rendering varia leggermente per piattaforma perché ogni sistema operativo distribuisce una webview diversa. Confronto completo Perry vs Tauri.

Bun — binari a file singolo, nessun layer GUI

Chi cerca “bun electron” di solito vuole la comodità di Electron senza il suo peso. bun build --compile produce un unico eseguibile incorporando il runtime Bun con il tuo TypeScript raggruppato — eccellente per CLI e server, con piena compatibilità npm dato che è letteralmente il runtime. Ma il binario è di circa 60 MB (macOS arm64) fino a oltre 100 MB (Linux/Windows), il codice viene comunque eseguito tramite JIT, e Bun non ha alcun framework UI — un'app desktop ha comunque bisogno di Electron, Tauri o di una libreria webview sopra. Confronto completo Perry vs Bun.

Perry — TypeScript compilato in widget nativi

Perry compila TypeScript ahead-of-time in codice macchina e renderizza la UI tramite veri widget di piattaforma — AppKit, UIKit, GTK4, Win32, Android tramite JNI — senza alcuna webview e senza bridge IPC. Un solo linguaggio per UI e logica, hello world di ~330 KB, binari tipici di 2–5 MB, avvio di ~1 ms, e dieci target inclusi mobile, watch e TV. L'avvertenza onesta: Perry è pre-1.0, la sua API UI è propria (dichiarativa, in stile SwiftUI — non HTML/CSS), e l'ecosistema è giovane rispetto a quello di Electron.

A confronto

PerryElectronTauriBun (--compile)
LinguaggioTypeScript ovunqueJS/TS + HTML/CSSFrontend JS/TS, backend RustTypeScript
Approccio UIWidget nativi di piattaformaChromium in bundleWebview di sistemaNessuno (CLI/server)
Dimensione hello-world~330 KB~80–150 MB~3–10 MB~60–116 MB a seconda della piattaforma
EsecuzioneCodice macchina AOTJIT (V8)JIT (motore JS della webview) + Rust nativoJIT (JavaScriptCore)
Memoria a riposoDecine di MB (singolo processo nativo)Centinaia di MB (Chromium multi-processo)Inferiore a Electron (webview del sistema operativo)Tipica di un runtime
Mobile / watch / TViOS, iPadOS, Android, watchOS, tvOSNoiOS, Android (Tauri 2)No
MaturitàPre-1.0Oltre un decennio in produzioneStabile (1.x/2.x)Stabile

E React Native o Flutter?

Emergono in ogni discussione su Electron, ma rispondono a una domanda diversa. React Native è mobile-first: il tuo JavaScript gira nel motore Hermes e pilota viste native tramite un bridge, e il supporto desktop esiste solo tramite fork separati della community/Microsoft — non è un sostituto diretto di Electron (Perry vs React Native). Flutter copre desktop e mobile ma significa abbandonare TypeScript per Dart, e disegna i propri widget invece di usare quelli della piattaforma. Se restare in TypeScript è il vincolo, la shortlist realistica per il desktop resta quella delle quattro opzioni sopra.

Quale scegliere?

Resta con lo stack web

Se la tua UI è già costruita in React/Vue/Svelte e hai bisogno oggi di una distribuzione desktop collaudata, Electron resta la scelta a più basso rischio — paghi in dimensione e memoria. Se quel costo ti infastidisce e te la senti di scrivere il backend in Rust, Tauri ti dà gran parte dell'esperienza dello stack web con una frazione dell'ingombro.

Lascia la webview alle spalle

Se quello che vuoi davvero è TypeScript in ingresso, app nativa in uscita — un solo linguaggio, veri widget di piattaforma, binari piccoli e mobile/watch/TV dalla stessa codebase — questo è esattamente il vuoto che Perry esiste per colmare, con la maturità pre-1.0 come prezzo da pagare. E se ti serve solo una CLI o un server come file singolo con rischio di compatibilità zero, --compile di Bun è la scelta pragmatica.

Guarda tu stesso

Installa Perry e distribuisci un'app nativa da TypeScript.