Deno Desktop: app nativo sem Electron nem Rust — o que muda de verdade (e o que ainda quebra)
O Deno 2.9 compila seu projeto web num app desktop nativo. A manchete vende 'concorrente do Electron', mas o real diferencial é outro: é o Tauri sem a obrigação de aprender Rust.
Deno Desktop: app nativo sem Electron nem Rust — o que muda de verdade (e o que ainda quebra)
A manchete que circulou foi "Deno, concorrente do Node, vai deixar criar apps desktop". E a reação natural de quem já apanhou de Electron é: bocejo, isso já existe. Electron faz, Tauri faz, Electrobun faz. Mas a notícia de verdade está escondida no detalhe técnico — e é melhor do que a manchete sugere.
O que o deno desktop entrega é a arquitetura do Tauri com o backend em TypeScript em vez de Rust. E isso muda mais coisa do que parece.
O que o deno desktop faz
Chegou no Deno 2.9, ainda em canary (deno upgrade canary), pré-estável — então segura a empolgação de produção, já volto nisso. A ideia central: você aponta o comando pra um arquivo TypeScript ou pra um projeto de framework web existente, e ele compila num binário nativo autocontido, um por plataforma.
A detecção de framework cobre o que importa: Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start e Vite SSR. Você roda deno desktop . na pasta do projeto e ele detecta, builda e empacota — sem mudar uma linha de código. Tem servidor web local embutido via Deno.serve(), então um app web existente vira desktop sem reescrever nada. Existe ainda o modo Raw, sem motor web, pra quem não quer renderizar HTML.
O ponto que virou manchete é o tamanho do binário. Por padrão ele usa o WebView nativo do sistema — WKWebView no macOS, WebView2 no Windows, WebKitGTK no Linux — o que deixa o executável leve. Em teste da imprensa especializada, um app em WebView no macOS ficou em ~68 MB contra ~309 MB usando Chromium (CEF). Daí o "78% menor" que circulou em vários títulos. Você pode optar pelo CEF quando precisa de renderização idêntica nas três plataformas, pagando o preço em tamanho.
O pulo do gato é não ser Rust
Aqui está o que a manchete não diz. O Tauri já resolveu o problema de tamanho do Electron usando o WebView do sistema. O custo do Tauri é outro: o backend é em Rust. Pra um time que vive de TypeScript, isso é um pedágio de dois a três meses de rampa antes de entregar qualquer coisa.
O deno desktop mata exatamente esse pedágio. Backend em TypeScript, compatibilidade total com npm pela camada de Node do Deno, e a mesma máquina de deno compile por baixo. Você não troca de linguagem nem de modelo mental pra colocar seu app web numa janela nativa. É o combo que o Tauri nunca entregou: TS puro + npm + binário pequeno.
Tauri ainda entrega binários menores no absoluto — e suporta iOS e Android, o que o Deno Desktop não faz. Mas se o critério é "meu time de TypeScript quer entregar um app desktop sem aprender Rust", o deno desktop é o primeiro projeto que responde isso direito.
As partes que me animam de verdade
Tamanho é o que vira manchete, mas não é o que me interessa. O que me interessa é a parte chata de sempre:
- Cross-compile de uma máquina só.
--targete--all-targetsbuildam Windows, macOS e Linux a partir de um único runner Linux. Os instaladores.msi,.debe.rpmsão gerados em Rust puro, sem toolchain específico de cada SO. O Tauri não faz isso — build de Windows no Tauri exige máquina Windows. Pra dev solo e time pequeno, esse ganho de fluxo é enorme. - Auto-update embutido. Você publica um
latest.jsone patches bsdiff; o runtime consulta, aplica e faz rollback sozinho se o app não abrir depois de atualizar. Sem Squirrel.Windows, sem updater de terceiro pra manter. Quem já sofreu pra fazer app Electron se atualizar sabe o tamanho desse alívio. - Bindings in-process em vez de IPC. Backend e UI conversam no mesmo processo, sem round-trip de socket. Menos latência, menos ponte assíncrona pra raciocinar.
- APIs nativas no
Deno.*— janela, menus, diálogos, notificações — sem dependência extra, com as permissões do Deno cravadas no binário em tempo de compilação.
Onde eu seguro o entusiasmo
Agora a parte honesta, porque "78% menor" tem asterisco.
É canary e pré-estável. Comando, chaves de config e APIs vão mudar antes de estabilizar. A própria imprensa que testou encontrou bugs — botão de fechar janela não funcionando no macOS com WebView, atrito pra rodar com alguns frameworks. Não é pra produção hoje. Ponto.
O WebView do sistema é a bênção e a maldição. Usar o motor do SO é o que deixa o binário pequeno, mas é também o que faz seu app renderizar diferente em cada plataforma — e quebrar em máquina velha com WebView desatualizado. A "consistência" que Tauri e Electron entregam você só recupera ligando o CEF... que come de volta a vantagem de tamanho. Aquele 78% é real, mas é um trade-off, não um almoço grátis.
Faltam APIs. Sem seletor de arquivo nativo ainda (só via input web ou drag-and-drop), sem API de clipboard, sem mobile (planejado). Pra app de verdade, isso pesa.
O subtexto: foco
Vale fazer uma pergunta de fundo sem torcida: o Deno vive numa briga de runtimes apertada, e se espalhar pra desktop é ambicioso — mas corre o risco de diluir engenharia do núcleo. Já é um projeto que gastou fôlego reequipando compatibilidade com Node. Desktop é mais uma frente. Pode ser o diferencial que faltava pra escolher Deno; pode ser dispersão. Os próximos meses dizem.
Avalie quando estabilizar — não antes
A aposta arquitetural está certa: tirar o Rust da frente do time web é o movimento que faltava nesse espaço. Mas é "avalie quando estabilizar", não "reescreva seu app essa semana". Se você é uma loja de TypeScript de olho em desktop, é a opção mais interessante pra acompanhar — testando em canary, não apostando produção.
E vou puxar a brasa: um projeto de ferramentas web é exatamente o tipo de coisa que esse comando empacota num binário offline com uma linha. A fronteira entre "ferramenta no navegador" e "app desktop" está ficando fina assim.
Perguntas frequentes
O que é o Deno Desktop?
É um recurso do Deno 2.9 (deno desktop) que compila um projeto Deno — de um único arquivo TypeScript a um app Next.js ou SvelteKit inteiro — num binário nativo de desktop autocontido para macOS, Windows e Linux. Está em canary, ainda não estável.
Deno Desktop é melhor que Electron ou Tauri? Depende do que você valoriza. É menor que o Electron (que embute o Chromium inteiro) e, ao contrário do Tauri, não exige Rust — o backend fica em TypeScript. Em troca, o Tauri ainda gera binários menores no absoluto e é maduro. O Deno Desktop é novo e pré-estável.
Preciso saber Rust pra usar? Não — e esse é justamente o ponto. O backend é em TypeScript, com compatibilidade npm. Esse era o pedágio de Rust do Tauri que o Deno cortou.
Dá pra usar em produção? Ainda não. O recurso está em canary no 2.9.0, marcado como pré-estável pela própria equipe, com APIs que vão mudar e bugs conhecidos. Bom pra testar e avaliar; cedo pra apostar um produto.
Nota: o conteúdo editorial acabou aqui. O que vem abaixo é uma indicação de ferramenta relacionada ao tema do post.
Ferramenta relacionada
Trabalha com TypeScript e JSON no dia a dia? O JSON Formatter do QuickEasy formata, valida e minifica JSON direto no browser — sem instalar nada, sem mandar dado pra servidor.
- 01 Como organizar estudos de programação sem se perder Sair do tutorial hell, estudar com consistência e terminar projetos — o sistema prático que realmente funciona para aprender programação.
- 02 Testes unitários: o que testar e o que evitar O que separa testes que protegem comportamento real dos que só inflam coverage e viram fardo na hora de refatorar.