Deno Desktop: app nativo em TypeScript sem Rust (e o futuro)
O deno desktop do Deno 2.9 empacota um app web num binário nativo sem Rust. Veja como funciona e o que muda após a ida do time do Deno para a Cloudflare.
Atualização (9 de novembro de 2026): em 9 de outubro de 2026 o time do Deno anunciou a ida para a Cloudflare. O runtime recebe mais um ano de releases mensais com correções de bugs e de segurança e, depois disso, o desenvolvimento oficial termina (o código segue open source); o Deno Deploy encerra em cerca de seis meses; o JSR continua. Na prática, não conte com a estabilização do
deno desktop. Para app desktop em produção hoje, as opções são Tauri ou Electron. O texto abaixo é a análise de junho, com os fatos corrigidos até a versão 2.9.8 (21/10/2026).
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 estava escondida no detalhe técnico.
O que o deno desktop entrega é a arquitetura do Tauri com o backend em TypeScript em vez de Rust. Se você está decidindo em que sistema e com que stack desenvolver para desktop, o contexto mais amplo está em Windows, Linux ou macOS para programar.
O que o deno desktop faz
Chegou no Deno 2.9.0, lançado em 25 de junho de 2026, como recurso experimental do release estável — não é preciso usar canary, mas comando, configuração e APIs podem mudar. A ideia central: você aponta o comando para um arquivo TypeScript ou para um projeto de framework web existente, e ele gera um binário nativo autocontido por plataforma.
A detecção de framework, segundo o anúncio, cobre Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start e Vite SSR; React Router entrou na 2.9.2. Você roda deno desktop . na pasta do projeto e ele detecta, builda e empacota. Um script que chama Deno.serve() também funciona, então um app web existente vira desktop sem reescrita. A saída depende da extensão pedida: .app/.dmg no macOS, .exe/.msi no Windows, .AppImage/.deb/.rpm no Linux.
Por padrão ele usa o WebView do sistema — WebView2 no Windows, WebKit no macOS e no Linux — o que deixa o executável leve. Dá para optar pelo backend CEF (Chromium embutido) quando você precisa de renderização idêntica nas três plataformas; o próprio anúncio avisa que isso "adiciona dezenas de megabytes". Circularam números de tamanho comparando os dois backends, mas o anúncio oficial não traz nenhum, então não vou repeti-los.
O pulo do gato é não ser Rust
O Tauri já resolveu o problema de tamanho do Electron usando o WebView do sistema. O custo do Tauri é outro: o backend é em Rust. Para um time que vive de TypeScript, isso é um pedágio de rampa antes de entregar qualquer coisa.
O deno desktop corta esse pedágio. Backend em TypeScript, acesso ao npm pela camada de compatibilidade com Node do Deno, e a mesma máquina de deno compile por baixo. Se TypeScript compensa mesmo fora de projetos grandes é outra discussão, que fiz em TypeScript vale a pena em projetos pequenos?.
O Tauri continua mais maduro — e suporta iOS e Android, o que o Deno Desktop não faz.
As partes que me animaram
- Cross-compile de uma máquina só.
--targete--all-targetsgeram Windows, macOS e Linux a partir de um único runner. O Tauri v2 também gera instalador NSIS de Windows a partir de Linux ou macOS, mas a documentação trata isso como último recurso, menos testado, e o.msiexige Windows. Na prática o Deno deixava esse fluxo mais simples. - Auto-update embutido. Você publica um
latest.jsone patches bsdiff; o runtime consulta, aplica e faz rollback se o app não abrir depois de atualizar. - Bindings in-process em vez de IPC. Backend e UI conversam no mesmo processo, sem round-trip de socket.
- APIs nativas no
Deno.*— janela, tray, dock, diálogosprompt()/alert()/confirm()— com as permissões do Deno embutidas no binário.
Onde eu segurava o entusiasmo
É experimental. Foi a ressalva de junho e continua valendo — agora sem perspectiva de estabilizar, pelo anúncio de outubro.
O WebView do sistema é a bênção e a maldição. Usar o motor do SO deixa o binário pequeno, mas faz o app renderizar diferente em cada plataforma e quebrar em máquina com WebView desatualizado. A consistência você só recupera ligando o CEF, que come de volta a vantagem de tamanho.
Faltavam APIs. Algumas chegaram nas versões de manutenção: deep links (2.9.1), opacidade e transparência de janela (2.9.2), API de clipboard e ícone/tooltip em itens de menu (2.9.6, 27/08/2026). Até a 2.9.8, o changelog não registra seletor de arquivo nativo nem suporte a mobile.
O subtexto era foco — e a resposta veio
Em junho eu perguntava se espalhar o Deno para desktop seria diferencial ou dispersão, num mercado de runtimes apertado. A resposta veio em outubro, e não foi nenhuma das duas: o time inteiro foi para a Cloudflare, e o desenvolvimento do runtime como produto independente tem data para acabar.
O que fazer com isso hoje
A aposta arquitetural continua certa: tirar o Rust da frente do time web era o movimento que faltava nesse espaço. Só que quem vai entregá-la, se alguém entregar, provavelmente não é o Deno. Se você tem um app no deno desktop, trate como protótipo e planeje a migração para Tauri ou Electron dentro do ano de correções. Se ia começar agora, comece direto num deles.
Perguntas frequentes
O que é o Deno Desktop?
É um recurso experimental do Deno 2.9 (deno desktop) que compila um projeto Deno — de um único arquivo TypeScript a um app Next.js ou SvelteKit — num binário nativo de desktop para macOS, Windows e Linux.
Deno Desktop é melhor que Electron ou Tauri? Na arquitetura, ele combinava o tamanho pequeno do Tauri (WebView do sistema) com backend em TypeScript. Na prática, é experimental e o runtime entrou em modo de manutenção, enquanto Tauri e Electron são maduros e mantidos.
Preciso saber Rust para usar? Não — o backend é em TypeScript, com compatibilidade npm. Era justamente o pedágio de Rust do Tauri que o Deno cortava.
Dá para usar em produção? Não. O recurso é experimental desde o 2.9.0 e, desde o anúncio de 9/10/2026, o runtime recebe só um ano de correções de bugs e segurança. Use para protótipo; para produção, Tauri ou Electron.
Se você mexe com o deno.json ou com o latest.json do auto-update, um JSON Formatter no navegador ajuda a validar o arquivo antes de publicar.
- 01 Como investigar falta de espaço em disco no Linux Um método de diagnóstico para descobrir por que o disco está cheio: df para achar o mount, du para o diretório, e os casos que confundem como inodes e arquivos deletados.
- 02 Permissão 755, 775 e 644 no Linux: o que significa (chmod) 755 para pastas e scripts, 644 para arquivos, 775 quando o grupo também grava: veja o que cada número do chmod libera e por que trocar o 777.