A simpler way to build
user interfaces.
Retend is a framework for creating interactive applications and user interfaces. It manages complex application logic, allowing you to build fast, smooth sites declaratively.
function ToggleSwitch() {
const isOn = Cell.source(false);
const toggle = () => isOn.set(!isOn.get());
return (
<div>
<h2>Switch status: {isOn}</h2>
<button type="button" onClick={toggle}>Toggle</button>
</div>
);
}Composable.
Retend enables you to build layouts with small, reusable components, ensuring clean and organized code.
Reactive.
Retend links your app's state with the user's view, ensuring updates occur instantly when your data changes.
Performant.
Retend updates only the necessary parts of the interface, keeping your apps lightweight on any device.
Everything you need.
Retend ships with a full suite of tools so you can focus on your product, not your dependency list.
Built-in Router
First-class routing with lazy loading, middleware, route locking, and reactive query params. No external dependencies required.
Server Rendering
SSR and static site generation out of the box. The same components render on the server and hydrate seamlessly on the client.
Async Boundaries
Coordinate loading states across component trees with
<Await>. Nested async data resolves together, eliminating layout shift.Instant HMR
Experience lightning-fast Hot Module Replacement. State is preserved across updates so you never lose your place while iterating on complex UIs.
Scoped Context
Type-safe dependency injection scoped to component subtrees. Create isolated contexts that automatically clean up, with no prop drilling or global singletons required.
Universal Rendering
Write components once and render them anywhere. The same code runs in the browser, on the server, or in tests — powered by a pluggable renderer architecture.
Start building today.
One command to scaffold a new project. TypeScript, routing, and dev server — all configured and ready.
npx retend-start@latest my-app