Blitsen

Documentation Web API support

Web API support#

Blitsen implements the browser APIs needed by its supported application profile, not a complete browser. Build-time checks and runtime feature detection are both part of using it safely.

Check an application#

Run doctor against built output:

sh
npx blitsen doctor dist

Errors block export because the scanner found a construct the application cannot recover from. Warnings identify missing or narrower behavior that may be guarded by a fallback—or may fail when the path executes. Review every warning and test the result in Blitsen.

For a machine-readable report or a different target:

sh
npx blitsen doctor dist --json
npx blitsen doctor dist --target win32-x64

Supported areas#

This is a practical summary. The generated compatibility matrix lists individual globals, classes and members.

AreaCurrent support
DOMDocuments, elements, text, fragments, templates, attributes, selectors, mutation observers and common traversal/mutation APIs
EventsEvent targets, custom, mouse, keyboard, focus, input, pointer, wheel, error and submit events
FormsBasic input, textarea, select, option, button and form state; keyboard editing and selection
Layout readsBounding rectangles, client/offset geometry, computed style, scrolling, ranges, carets and selection
SchedulingrequestAnimationFrame, timeouts and intervals
NetworkingBuffered fetch, request/response/headers/blob, abort signals and WebSocket
WorkersDedicated workers, message channels, structured clone and transferable buffers
Routinglocation, history, hash changes and popstate within the application
StylingStylesheets, rule source, media queries, CSS support checks and resize observers
Audio<audio> and a focused Web Audio subset
StoragelocalStorage and sessionStorage, both in-memory for one process

Important absences#

FeatureWhat to use or expect
Canvas 2D, WebGL and WebGPUNot implemented; a document containing <canvas> is a doctor error
WebAssembly and IntlAbsent from the standard shipped JavaScript engine
XHRUse fetch
StreamsResponses are buffered; streaming body APIs are absent
FormData, File and FileReaderAbsent; use supported request bodies or native file paths
IndexedDBAbsent; use application-owned durable storage
SharedWorker and ServiceWorkerAbsent; dedicated Worker is supported
Browser modal dialogsalert, confirm, prompt and print are absent; use blitsen/dialog where available
CookiesNo cookie jar; document.cookie is absent
Custom elements and shadow DOMAbsent; DOMParser is supported
Video and text tracksAbsent; audio is supported
Accessibility treeNot exported to the platform in this release
Full IME and complex text editingIncomplete; verify every input language and workflow you support

Feature detection#

Missing APIs are absent rather than installed as no-op stubs:

js
if ("ResizeObserver" in globalThis) {
  const observer = new ResizeObserver(handleResize);
  observer.observe(element);
}

The same rule applies to optional native members:

js
import dialog from "blitsen/dialog";

if (dialog.openFile) {
  const path = await dialog.openFile();
}

Do not infer support from TypeScript's browser library. A package can add Blitsen declarations but cannot remove unsupported names from lib.dom.d.ts; doctor checks the built application instead.

Renderer differences#

HTML and CSS are rendered by Blitz rather than a browser engine. Some valid browser styles render differently or are ignored. Current high-impact areas include transitions, fixed/sticky positioning, paint effects, SVG, form-control styling, font fallback and complex text.

Doctor reports patterns it can recognize, but it cannot prove visual equivalence. Keep screenshot or interaction tests for important layouts and verify them on each target operating system.

Local and remote resources#

An export has no web server. Local HTML, CSS, modules and assets are loaded from the application bundle. Remote fetch and WebSocket are supported; remote script/module loading and remote subresources are deliberately narrower or refused. Prefer a self-contained application and use relative local URLs.

Security model#

A Blitsen application is trusted native software. There is no same-origin policy, browser sandbox, permission prompt or safe boundary for untrusted third-party pages. Validate remote data as you would in any native application and never use the runtime as a general web-content viewer.