Todos os artigos
60 artigos · atualizado semanalmente Veja nossas Ferramentas
Todos os artigos
Comparativos

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.

COVER · Comparativos

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ó. --target e --all-targets buildam Windows, macOS e Linux a partir de um único runner Linux. Os instaladores .msi, .deb e .rpm sã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.json e 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.

RD
Autor
Rafael Duarte
Desenvolvedor backend com passagem por fintech e SaaS B2B — trabalhou em times que escalaram APIs de zero a milhões de requisições. Carrega cicatrizes de produção suficientes para ter opiniões fortes sobre ferramentas, padrões e decisões de arquitetura. Não é acadêmico: leu a RFC do UUID quando precisou escolher entre v4 e v7 para uma tabela de alta escrita.
Ver perfil