# PropsForRenderer

**Kind:** Type

**Source:** [`src/context.ts`](https://github.com/honojs/hono/blob/main/src/context.ts#L83)

Extracts the props for the renderer.

`PropsForRenderer` extracts the prop type expected by a renderer. It lets context and rendering code share the renderer’s input contract without restating prop fields.

## Definition

```ts
[...Required<Parameters<Renderer>>] extends [unknown, infer Props] ? Props : unknown
```

## Diagram

```mermaid
graph LR
  Renderer[Renderer type] --> PropsForRenderer[PropsForRenderer]
  PropsForRenderer --> RendererProps[Extracted renderer props]
  RendererProps --> Context[Context and render calls]
```

## Usage

```ts
import type { PropsForRenderer } from "./context";

const renderer = ({ value, onChange }: { value: string; onChange(value: string): void }) => {
  return { value, onChange };
};

type RendererProps = PropsForRenderer<typeof renderer>;

const props: RendererProps = {
  value: "hello",
  onChange(nextValue) {
    console.log(nextValue);
  },
};
```

## AI Coding Instructions

- Pass the renderer type to `PropsForRenderer` instead of manually duplicating its prop shape.
- Keep renderer parameter types explicit so the extracted props remain accurate.
- Update call sites when renderer props change; `PropsForRenderer` will reflect the new contract.
- Use the extracted type for context values and helpers that forward props to the renderer.
