The fastest HTML your TypeScript can produce.
Velocits renders on the server with a custom JSX runtime and a serializer written for this job. No React, no virtual DOM, no hydration pass — just a document that arrives complete.
Why Velocits
Everything a server-rendered site needs, and nothing it does not.
No virtual DOM, no client bundle, and no runtime dependency outside Node's own standard library.
Streams from the first byte
Headers go out before the body finishes. A slow async component delays only its own subtree, not the page.
Escaping you can audit
Context-aware output escaping and a URL allowlist, both with tests carrying real attack payloads.
File-based routing
Nested layouts, error boundaries and not-found pages, discovered from the directory tree at build time.
Prerenders to identical bytes
A build walks the same manifest a request does, so a generated page and a served page cannot drift.
A CLI that does not shell out
Builds run the workspace's own TypeScript and bundler directly. No package manager on PATH, no quoting bugs.
Tailwind in the build
Stylesheets are compiled and content-hashed by the framework, and linked automatically in dev and in prod.
Familiar, on purpose
It is a JSX file. It is an async function.
Components are functions that may return a promise. The serializer awaits them in document order and writes each result as soon as it resolves, so a slow page never blocks a fast one.
- Output is escaped according to where it lands — element text, attribute or script.
- An async component suspends only its own subtree.
- A client disconnect mid-stream truncates the response instead of buffering it.
// app/products/page.tsx
import { getProducts } from './_lib/data.js';
export const meta = {
title: 'Products — Velocits',
};
export default async function ProductsPage() {
const products = await getProducts();
return (
<ul className="grid gap-4">
{products.map((product) => (
<li key={product.id}>
<h2>{product.name}</h2>
<p>{product.price}</p>
</li>
))}
</ul>
);
}Numbers
Measured, not estimated.
Live data
Rendered on this request.
This list comes from an async component. It is not baked into the page — the server fetched it while you were reading this sentence.
- Cast Iron Anvil$129.00
- Model Rocket$24.50
- Flux Capacitor$8999.00
- Lattice Frame$450.00
Start with one file
Add a page.tsx, run velocits dev, and you have a streaming server-rendered site.