Blitsen

Pre-alpha

Blitsen

Write an app in HTML, CSS and TypeScript. Ship a native executable. No browser included.

Keep your framework and build tool. Blitsen opens their static output in a native window and packages it with its own renderer and JavaScript runtime.

Point Blitsen at built web output

Add one object to package.json. The build command stays yours; Blitsen consumes the directory it leaves behind.

json
{
  "blitsen": {
    "build": "vite build",
    "output": "dist",
    "name": "My App"
  }
}

Plain HTML needs no configuration: blitsen . opens the directory containing index.html.

Use the same output from first window to release

sh
blitsen                       # build and open a native window
blitsen doctor dist           # check the built application
blitsen build                 # create a desktop executable

During development, point Blitsen at a running server such as http://localhost:5173 to keep its transforms and hot reload. Before release, run doctor against static output and test the exported artifact on every target platform.

A native runtime, not a general-purpose browser

  1. Use built output

    Blitsen does not transpile source files or resolve bare npm imports. Vite, webpack or your existing tool must do that first.

  2. Check compatibility

    The runtime implements a deliberate subset of browser APIs. Missing features are absent so feature detection works, and doctor reports what it can see.

  3. Treat it as native software

    There is no browser sandbox, same-origin policy or permission prompt. Run only application code and content you trust.

Use native capabilities when the web has no answer

Package imports expose window controls, dialogs, clipboard formats, application directories and live operating-system readings.

js
import windowApi from "blitsen/window";

addEventListener("load", () => {
  windowApi.setSize?.(1024, 720);
});

Support varies by version and target, so native members are optional and feature detection is part of the API. Browse native APIs →

Build for Windows, macOS and Linux

Desktop exports embed reachable assets in one executable by default. Add platform metadata, connect your signing command, or cross-build for any of the six desktop targets. Every export includes Bun and the native renderer. Mobile support is deferred.

Packaging and release checklist →

Find the task you need

Choose a task to get from static web output to a tested native artifact. Each guide is maintained in the repository.

Start here

Get an application running, then learn the runtime model.

Build your app

Configure a project and connect it to native capabilities.

Ship

Package, test and distribute for the platforms you support.

Reference

Look up commands, supported APIs and fixes for common failures.