Skip to content

Port a web app

Checked against ebe8d96 on 2026-11-10 by Capy (drift after the docs-site merge). The files it covers are unchanged since.

An existing web app is the best test of niso, and the quickest way to find out whether yours will run. You need its static build: the directory a vite build, expo export or similar produces.

Terminal window
target/release/niso-run --page dist/index.html --root dist --url http://localhost/ \
--missing --max-ms 15000

--root serves the build at http://localhost/; --url puts the page at the route the app expects (a router may care). --max-ms gives its timers 15 seconds of page time, which is milliseconds of real time.

--missing prints every DOM interface member and global the app looked up that niso doesn’t have. Not all of them matter: apps feature-test a lot. The ones to look at first are those that appear right before an uncaught exception (niso-run prints it and exits 1) or an error boundary in the --dump output.

Bluesky’s web build is a worked example: it mounts on niso and stops in two error boundaries, one for element.scroll({ behavior: 'smooth' }) and one for IntersectionObserver (Bluesky).

--boxes prints where every element landed, and niso-iced --page shows it in a window. Compare with the same build in Chrome.

A gap is either a missing API (look it up in the Web API reference and the support table) or a bug in one that exists. For niso contributors, an app worth keeping goes into the app corpus with a driver for its core flow, and its findings go on its page under Real apps.