createReactiveStoreWithInitialValueAndSlotTracking
Creates a ReactiveStreamStore that combines an initial RPC fetch with an ongoing subscription to keep its state up to date.
The store uses slot-based comparison to ensure that only the most recent value is kept, regardless of whether it came from the initial RPC response or a subscription notification. This prevents stale data from overwriting newer data when the RPC response and subscription notifications arrive out of order.
Things to note:
getUnifiedState()starts instatus: 'loading'until the first response or notification arrives. Once data arrives it transitions tostatus: 'loaded'with a SolanaRpcResponse containing the value and the slot context at which it was observed.- On error from either source, the store transitions to
status: 'error'preserving the last known value. Only the first error per connection window is captured. - Calling ReactiveStreamStore.retry | `retry()` while in
status: 'error're-sends the RPC request and re-subscribes to the subscription using a fresh inner abort signal. The store transitions throughstatus: 'retrying'back toloaded/error. - Triggering the caller's abort signal disconnects the store permanently; subsequent
retry()calls are no-ops.
Type Parameters
| Type Parameter |
|---|
TRpcValue |
TSubscriptionValue |
TItem |
Parameters
| Parameter | Type | Description |
|---|---|---|
config | CreateReactiveStoreWithInitialValueAndSlotTrackingConfig<TRpcValue, TSubscriptionValue, TItem> | - |
Returns
ReactiveStreamStore<Readonly<{
context: Readonly<{
slot: Slot;
}>;
value: TItem;
}>>
Example
See
ReactiveStreamStore