Installation
Add @sigx/server-renderer to your project and import from the right subpath.
Install
pnpm add @sigx/server-rendererDependency
The only runtime dependency is sigx, the host framework. It is declared as a
regular dependency, so installing @sigx/server-renderer pulls sigx in
automatically — there is no separate install step and no peer dependency to add.
The package is ESM-only ("type": "module", no CommonJS build). Use it from
an ESM project or bundler.
Subpath imports
@sigx/server-renderer ships four tree-shakeable entry points (all with
sideEffects: false). Import from the right one so a browser or edge bundle never
pulls in Node code:
| Import path | Use it for | Notes |
|---|---|---|
@sigx/server-renderer | createSSR, renderDocument, useResponse, ssrClientPlugin, renderHeadToString, shared types | Universal, WinterCG-clean — plugin system + convenience re-exports |
@sigx/server-renderer/server | renderDocument*, renderToString, renderToStream, renderToStreamWithCallbacks | Web-stream render APIs; WinterCG-clean (runs on the edge) |
@sigx/server-renderer/node | renderToNodeStream, renderDocumentToNodeStream, toNodeStream, createRequestHandler | Node-only — anything touching node:stream |
@sigx/server-renderer/client | hydrate, ssrClientPlugin, plugin hooks | Browser-only hydration |
The root and /server entries import no Node built-ins, so they run on edge
runtimes. Everything that needs node:stream — a Readable, or the Node request
handler — lives in /node.
A typical app uses several across its entry files:
// entry-server.tsx
import { renderDocument } from '@sigx/server-renderer/server';
// server.mjs (Node) — a Readable stream, or the request handler
import { renderToNodeStream, createRequestHandler } from '@sigx/server-renderer/node';
// entry-client.tsx
import { ssrClientPlugin } from '@sigx/server-renderer/client';
// any component
import { useHead, useData } from 'sigx'; // head + data loading live in core sigx
Node stream APIs (renderToNodeStream, renderDocumentToNodeStream, toNodeStream)
are exported only from /node. Hydration internals (hydrate, hydrateNode,
registerClientPlugin, …) are exported only from /client.
useHead,useData, anduseStreamcome from coresigx, not this package. They are plain composables that gain server behavior when this renderer drives them.
Import side effects
Importing the package runs one-time setup automatically: it augments the SSR
directive types and patches getSSRProps onto built-in directives such as show
so they serialize correctly during SSR. You do not need to call anything to enable
this.
Build / Vite wiring
No special Vite config is required to consume the package — the standard
SignalX JSX/Vite setup for your host app applies. There is no CLI or bin —
the package is a library you import.
Adding islands
@sigx/server-renderer has no concept of client:* directives on its own. To
hydrate only the interactive parts of a page, add the islands package on top:
pnpm add @sigx/ssr-islandsSee @sigx/ssr-islands for the full setup.
