# useComputed

`useComputed(compute, dependencies?, options?)` returns one stable readonly
[`Signal`](/reference/types/canvas-runtime/#signal) for a mounted component hook slot.
Signal reads inside `compute` are tracked dynamically. The optional dependency
array lists captured non-signal values and compares its positions with
`Object.is`.

The formula remains lazy. Dependency changes are adopted only after a
successful render, and result equality prevents unnecessary downstream
invalidation. A retained signal continues using its last successfully committed
formula after its owner is removed.

Related types: [`Signal`](/reference/types/canvas-runtime/#signal) and
[`SignalOptions`](/reference/types/canvas-runtime/#signaloptions).

## API details from source

<span id="api-useComputed"></span>

Creates one component-owned lazy computed signal for a mounted hook slot.

```ts
useComputed: <T>(compute: () => T, dependencies?: readonly unknown[], options?: SignalOptions<T>) => Signal<T>
```

Related API: [useComputed](/reference/hooks/use-computed/), [SignalOptions](/reference/types/canvas-runtime/#signaloptions), [Signal](/reference/types/canvas-runtime/#signal).

### Parameters

- **`compute`** — Synchronous calculation whose signal reads are tracked.

- **`dependencies`** — Values controlling replacement of the captured computation.

- **`options`** — Equality comparison and optional diagnostic name. See [SignalOptions](/reference/types/canvas-runtime/#signaloptions).

### Returns

A mount-owned readonly computed signal. See [Signal](/reference/types/canvas-runtime/#signal).

### See also

[SignalOptions](/reference/types/canvas-runtime/#signaloptions)

[Signal](/reference/types/canvas-runtime/#signal)

[View source — packages/core/src/lib/hooks/use-computed.ts:43](/source/packages/core/src/lib/hooks/use-computed-ts/#L43)

## Implementation guidance for agents

Read the [Authoring, signals, and lifecycle companion](/agents/topics/lifecycle/) for ownership, adaptation, failure modes, and verification. [Agent start](/agents/) provides the version-selection workflow.

## Complete minimal examples

- [Component-owned state and reactions](/minimal-examples/lifecycle/hooks/): Click to update a signal, derive a value, and publish an imperative effect after commit. [Plain source](/minimal/lifecycle/hooks.tsx)
## Documentation version

Documentation built with @pibbl/core 0.0.2, revision 272a94a. ALPHA — NOT FOR PRODUCTION USE.
