Documentation for Redweb 0.13.0. Install that exact version when following these examples.
Upgrade an existing Redweb application
Match the installed package to its versioned documentation. Redweb 0.13.0 contains the capabilities described by the 0.13.0 guides; a later development checkout may not match that release. See release verification and the changelog shipped with your selected package. Keep your lockfile and rollback artifact, and run your own real HTTP/WebSocket/browser tests after upgrading.
0.8 migration notes
- Unmatched WebSocket paths are rejected unless
fallbackToRoot: trueis configured. - Handler exception details are hidden unless
exposeErrors: trueis configured. Do not expose private exception messages in production. - Shutting down a WebSocket server no longer closes a caller-supplied HTTP/HTTPS server by default. Explicitly set
closeServerOnShutdown: trueonly when handing cleanup responsibility to that socket server. bindis honored by HTTP, HTTPS, WebSocket, and secure WebSocket listeners.shutdown()is asynchronous; await it when deterministic cleanup matters. Awaiting a shutdown is not a delivery or persistence guarantee.
0.9 migration notes
- No migration is required when the new multiplayer options are disabled.
- Production controls are route-local and opt-in; size them from measured capacity rather than copying example limits.
ProtocolClientis available fromredweb/clientfor negotiated protocol routes without adding runtime dependencies. It wraps a transport; your application creates and reconnects that transport.- Node.js 18 is the installation/legacy-compatibility floor, not a recommendation to deploy an end-of-life runtime. Use a maintained LTS release with current security patches; check runtime compatibility.
Live HTML migration
The executable .htmx sandbox and enableHtmxRendering option were replaced. Templates are ordinary .html files registered through decorated plain classes. Move calculations and imports into the page class, mark reactive fields with @state(), expose browser-callable methods with @action(), and start the page with start(PageClass).
For server-rendered TSX, extend redweb/tsconfig.json; do not configure React's JSX runtime. redweb init --existing creates a missing root configuration without overwriting one you already have. Check the effective configuration with your installed CLI: npx --no-install redweb doctor --json. Review warnings and fix errors before compiling; preservation does not imply correctness.
In the reactive-rendering candidate, ordinary TSX expressions reading decorated state update after assignment. Replace arrays/objects instead of mutating them in place. Use stable JSX keys for lists. Existing explicit HTML bindings remain supported. See rendering and lifecycle for owner isolation, component lifetimes and reconnect behavior, and runtime diagnostics for failure categories and retry limits.
Shared page state is process-local, not durable or automatically private. Add explicit identity, authorization and persistence for your application. The private dashboard recipe demonstrates one single-process implementation; it is not a distributed session store.