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 applications fast and lightweight on any device.

Ecosystem

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.

  • 0ms

    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.

Get Started

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