Resume
Resumability for SignalX SSR — the server renders the page fully, the browser ships only a tiny delegation loader, and a component's chunk loads only when a handler first writes state. Plus single-flight refresh of the server boundaries a mutation invalidated.
Installation
pnpm add @sigx/resumeAbout
@sigx/resume is the second first-party strategy pack on @sigx/server-renderer's plugin API (the sibling of islands). The sigxResume() Vite transform (@sigx/vite/resume) lifts event handlers into lazily-imported chunks that run against a resumed scope of named signals, so component setup never re-runs on load.
The result is a three-step ladder:
- On load — 0 app JS. The page's only script is the generated delegation loader.
- First interaction. The handler's chunk (usually < 1 kB, runtime-free) runs, the resumed scope's signals are rebuilt from serialized state, and the triggering event replays. The document already
modulepreloaded that chunk for every resume boundary the request rendered, so the first interaction pays no cold fetch. - State changes. Only when a handler actually writes does the component's chunk load and that one boundary hydrate — "upgrade-on-write".
On top of that, @sigx/resume powers single-flight boundary refresh: when a mutation server function declares what it invalidates, the endpoint re-renders exactly the server boundaries whose useData reads it touched — fresh HTML in the same response, without loading those boundaries' chunks.
Combine it with islands when you need both — app.use(islandsPlugin()).use(resumePlugin()).
Next steps
- Usage — write resumable components, the contract the transform enforces, install the plugin, wire boundary refresh.
- API reference —
resumePlugin, the manifest, andcreateBoundaryRefresh.
