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

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.

Deno Desktop: app nativo em TypeScript sem Rust (e o futuro)
COVER · Comparativos

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ó. --target e --all-targets geram 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 .msi exige Windows. Na prática o Deno deixava esse fluxo mais simples.
  • Auto-update embutido. Você publica um latest.json e 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álogos prompt()/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.

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