Skip to content

SSR

The package is safe to import in Node without a DOM.

Server rules

  • Do not call DOM binding helpers on the server.
  • Do not serialize DOM objects.
  • Use stable IDs when hydration must match server markup.
  • Compute placement only after layout exists in the browser.
ts
import { createDisclosure, hasDOM } from 'ui-headless-runtime';

const disclosure = createDisclosure();
console.log(hasDOM()); // false during Node SSR
console.log(disclosure.getSnapshot().expanded);

disclosure.destroy();

DOM access is resolved from bound elements or explicit owner-document helpers, not from module evaluation.

Headless behavior; consumer-owned rendering and styling.