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) loads, the resumed scope's signals are rebuilt from serialized state, and the triggering event replays.
- 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, install the plugin, wire boundary refresh.
- API reference —
resumePlugin, the manifest, andcreateBoundaryRefresh.
