# Reference: Runtime API

> **Verify signatures against the shipped types.** Code examples in these docs illustrate usage and intent. The
> authoritative signatures are the TypeScript types shipped with `@chainrender/client` — your editor's
> autocomplete and the package's `.d.ts` files are the source of truth. Where an example and the shipped type
> differ, the shipped type wins.


`@chainrender/client/runtime` — rendering an app and turning declared actions into wallet transactions.

- **`renderComponent({ rpc, router }, hash)`** → `Promise<string>` — render an app to HTML via `renderHash` (a free
  `eth_call`).
- **`renderComponent({ rpc, hash, context })`** — render with a presentation context (theme/palette/dims).
- **`buildActionRequest(action, inputs)`** → `{ to, data, value }` — construct-for-sign: the calldata is *exactly*
  the declared selector + args, nothing else.
- **`describeAction(action, inputs)`** → a plain-language description for the user to review before signing.
- **`splitArgs(template)`** — parse an action's arg template (`"$amount"`) into the structured form.
- Wallet connection (EIP-6963) + the declared-action submit path.

All runtime hooks fail closed: no wallet → safe no-ops; a reverting render → an honest error, never a fabrication.
