Perry vs Tauri
Tauri é um framework para construir aplicações desktop (e cada vez mais mobile) multiplataforma com um backend em Rust e um frontend que roda dentro do webview integrado do sistema operacional — WebView2 no Windows, WKWebView no macOS, WebKitGTK no Linux. Aplicações Tauri são drasticamente menores que Electron porque o webview do SO não é empacotado. Perry segue um caminho diferente: sem webview algum, sem renderização HTML, apenas TypeScript compilado para código de máquina nativo que dirige widgets reais da plataforma.
O que é Tauri?
Tauri é um framework de código aberto escrito em Rust que permite construir aplicações multiplataforma com um frontend web (qualquer framework — React, Vue, Svelte etc.) e um backend em Rust. Em vez de empacotar o Chromium, o Tauri usa o webview integrado do sistema, o que mantém os instaladores na faixa de poucos MB em Linux/Windows/macOS. O Tauri 2 adicionou suporte mobile (iOS e Android). O frontend é renderizado como HTML/CSS/JS pelo webview do sistema; a comunicação com o backend Rust acontece por uma ponte IPC.
O que é Perry?
Perry compila TypeScript diretamente para código de máquina nativo via LLVM. A camada de UI (perry/ui) é uma API declarativa estilo SwiftUI que mapeia para widgets nativos da plataforma — não HTML renderizado por um webview. Aplicações escritas em Perry não carregam um motor JavaScript, não rodam dentro de WebKit/WebView2 e não precisam de uma ponte IPC entre UI e lógica. Perry tem como alvo 10 plataformas, incluindo mobile, relógio e TV.
Lado a lado
| Funcionalidade | Perry | Tauri |
|---|---|---|
| Renderização de UI | Widgets nativos da plataforma (AppKit, UIKit, GTK4, Win32, JNI) | Webview do sistema (WKWebView, WebView2, WebKitGTK) — HTML/CSS/JS |
| Linguagem do frontend | TypeScript (API declarativa de widgets) | HTML/CSS/JS via qualquer framework web (React, Vue etc.) |
| Linguagem do backend | TypeScript | Rust |
| IPC entre UI e lógica | Nenhum — processo único, chamadas diretas | Necessário (UI no webview, lógica no processo Rust) |
| Instalador hello-world | ~330 KB | ~3–10 MB (webview é fornecido pelo SO) |
| Mobile (iOS, Android) | Sim — UI nativa | Sim — baseado em webview (Tauri 2) |
| Relógio / TV | watchOS, tvOS, Wear OS | Não |
| Alvo WebAssembly | Sim (perry/ui via bridge para o DOM) | N/A (o próprio Tauri usa webview nativamente) |
| Maturidade | Pré-1.0 | Estável (1.x / 2.x) |
Onde o Perry ganha
- +UI verdadeiramente nativa — Perry não renderiza HTML; ele dirige widgets reais da plataforma, então as aplicações herdam física de scroll nativa, foco, acessibilidade, IME e temas do SO de graça.
- +Hello-world menor (~330 KB vs poucos MB do Tauri) e sem dependência de webview do sistema em runtime.
- +Linguagem única, processo único. Toda a aplicação — UI e lógica — é TypeScript, sem ponte IPC para projetar ou depurar.
- +watchOS, tvOS, Wear OS e um alvo Web/JS completo com pipelines de compilação real e nativa, não webviews empacotados.
- +Sem diferenças de comportamento de webview entre plataformas. Tauri herda as peculiaridades de WKWebView vs WebView2 vs WebKitGTK; Perry escolhe o caminho do widget nativo em cada SO.
- +Desempenho de computação é AOT-nativo, não JIT em webview. Perry lidera microbenchmarks de computação sob condições equivalentes em M1 Max (perry/benchmarks).
Onde o Tauri ganha
- +Framework maduro e estável com linha 2.x ativa e uma grande comunidade.
- +Flexibilidade de frontend — use qualquer framework web (React, Vue, Svelte, Solid etc.) que você já conhece.
- +Instaladores menores que Electron porque o Tauri se apoia no webview fornecido pelo SO em vez de empacotar o Chromium.
- +Backend Rust é ideal se você tem trabalho em nível de sistema (sistema de arquivos, APIs nativas) e quer garantias em tempo de compilação ali.
- +A renderização por webview significa que velocidade de iteração em CSS/HTML e devtools funcionam como você espera no desenvolvimento web.
- +Pipeline estabelecido de empacotamento, assinatura de código e atualizador.
Quando escolher Perry
Escolha o Perry se você quer UI verdadeiramente nativa (não HTML renderizado em um webview), binários nativos pequenos sem dependência de webview, um único código TypeScript em desktop + mobile + relógio + TV, ou código de widgets multiplataforma validado em tempo de compilação.
Quando escolher Tauri
Escolha o Tauri se você tem um frontend web existente ou planejado, quer uma aplicação desktop com instalador pequeno e backend Rust, está feliz com HTML/CSS para UI, ou quer o amplo ecossistema de frameworks e ferramentas web.
Veredito
Tauri é um Electron muito melhor — mesma abordagem de tecnologias web, com instalador drasticamente menor porque o webview do SO não é empacotado. Mas ainda é uma arquitetura baseada em webview, o que significa renderização HTML/CSS/JS e uma ponte IPC. Perry assume uma posição diferente: sem webview algum, widgets nativos da plataforma, processo único. Se você quer manter a stack web com binários menores que Electron, Tauri é a resposta certa. Se você quer deixar a stack web para trás em troca de widgets nativos em TypeScript, Perry é.