# Deno Desktop

`deno desktop` is available in Deno 2.9+. It packages a TypeScript/JavaScript application, the Deno runtime, and a web rendering backend into a self-contained artifact per platform.

## Shortest workflow

```bash
deno --version       # requires 2.9+
deno desktop --hmr main.ts
deno desktop main.ts
```

The entry can be a small `Deno.serve` application or a framework such as Next.js, Astro, Fresh, or SvelteKit. Configure adapters, assets, and development commands from the framework-specific official guide.

## Capabilities and boundaries

| Capability | Current meaning |
| --- | --- |
| Windows | `Deno.BrowserWindow` owns lifecycle and multiple windows |
| Frontend/backend calls | explicit bindings; renderer input is never trusted code |
| Desktop integration | menus, tray, Dock, dialogs, and native notifications |
| Debugging | `--hmr` and unified DevTools |
| Distribution | target triples and `--all-targets` cross-builds |
| Updates | `Deno.autoUpdate()` with bsdiff and failed-launch rollback |

```bash
deno desktop --target aarch64-apple-darwin main.ts
deno desktop --all-targets main.ts
```

## Release checks

- Configure real macOS/Windows code signing; an ad-hoc signature does not remove Gatekeeper warnings.
- Verify notifications, file dialogs, GPU, fonts, and updates on every target OS.
- Sign update manifests with Ed25519 and serve updates over HTTPS.
- Official docs currently say Windows cannot apply a downloaded auto-update patch; verify again before release.
- Error reports may contain stacks and runtime context. Send them only over HTTPS after data classification.

Official sources: [Desktop apps](https://docs.deno.com/runtime/desktop/), [Distribution](https://docs.deno.com/runtime/desktop/distribution/), and [Auto-update](https://docs.deno.com/runtime/desktop/auto_update/).
