Server/Packages/Server Renderer/Installation
@sigx/server-renderer · Stable

Installation#

Add @sigx/server-renderer to your project and import from the right subpath.

Install#

Terminal
pnpm add @sigx/server-renderer

Dependency#

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 pathUse it forNotes
@sigx/server-renderercreateSSR, renderDocument, useResponse, ssrClientPlugin, renderHeadToString, shared typesUniversal, WinterCG-clean — plugin system + convenience re-exports
@sigx/server-renderer/serverrenderDocument*, renderToString, renderToStream, renderToStreamWithCallbacksWeb-stream render APIs; WinterCG-clean (runs on the edge)
@sigx/server-renderer/noderenderToNodeStream, renderDocumentToNodeStream, toNodeStream, createRequestHandlerNode-only — anything touching node:stream
@sigx/server-renderer/clienthydrate, ssrClientPlugin, plugin hooksBrowser-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:

TSX
// 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, and useStream come from core sigx, 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:

Terminal
pnpm add @sigx/ssr-islands

See @sigx/ssr-islands for the full setup.

Next steps#