splitch

DocsSDKexposure-dedup.md

Exposure dedup.

Repeat evaluations replay locally. Run boundaries do not.

Repeat evaluate calls for the same Flag and targetingKey within the revalidation window (revalidateMs, default 60 seconds) replay locally with reason: "CACHED" and fire no second Exposure. Rendering a component twice in one page load counts the subject once.

When a new experiment Run starts, the SDK detects the boundary within that window and fires a fresh Exposure. A Run is the unit analysis is computed over, so an Exposure suppressed across a Run boundary would attribute the subject to the wrong Run.

Errors are never cached. A failed resolution replayed from cache would turn one outage into a window of them with no new signal.

Bounding the seen set

Dedup state is an in-memory seen set bounded by maxSize and a TTL. Both must be positive; a zero or negative bound would disable dedup without saying so, which is exactly the silent-default failure the SDK refuses.

Telemetry for a replayed local resolution is reported separately. If that report cannot be delivered you get SDK_CACHED_TELEMETRY_FAILED. The value your code received is unaffected; it is surfaced so a telemetry gap never reads as an absence of traffic.