Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Supersolid framework API

Legend: ✅ supported today · 🟡 not supported yet, but planned · ⛔ won’t be supported. Tier T0–T3. Since = the superui version a capability first shipped in.

These globals are the Supersolid reactive framework. They are installed into every runtime and are available to authored .js and to transpiled .tsx (whose import { … } from "solid-js" is stripped in favour of these globals). They are a separate layer from the browser DOM / Web API surface — see JS / DOM for that.

Reactive core

GlobalStatusTierSinceNotes
createSignal(v, {equals?}) → [get, set]✅T00.1fine-grained signal; updater-form set; equals gates notifications
createEffect(fn, seed?)✅T00.1tracks reads, re-runs on change; disposed with owner
createMemo(fn, seed?, {equals?})✅T00.1lazy, memoized derived value; is itself a source
createRoot(fn => …)✅T00.1disposable reactive scope
onMount(fn) / onCleanup(fn)✅T00.1run-once-after-setup / owner teardown
createContext(default?) / useContext(ctx)✅T00.1context via the owner tree
untrack(fn) / batch(fn)✅T00.1read without subscribing / coalesce writes

Render + control flow

GlobalStatusTierSinceNotes
render(code, mountEl)✅T00.1root entry; returns dispose
<Show>✅T00.1conditional; branch disposal via memo recompute
<For>✅T00.1keyed by item identity; per-row disposable roots; state preserved on reorder
<Index>✅T00.1keyed by position; item is an in-place-updated signal
<Switch> / <Match>✅T00.1first truthy branch, else fallback

State-preserving hot reload

When the hmr feature is enabled and the asset server is watching, a .tsx/.js edit re-executes on the same engine and render() rehydrates each component’s signal cells (keyed by module × instance × creation-order), rebuilding the DOM fresh while preserving values. A per-instance signal-shape change (add/remove a signal) resets that instance. <For> rows preserve state by item identity, <Index> rows by position. Off by default (feature off, or no watcher) — then render() takes its normal fast path.

PROJECTSUPERUI · BEVY UI
DRAWN BYSTROWK
SCALENOT TO SCALE
REVR1 · 0.1 EARLY BUILD
LICENCEMIT / APACHE-2.0