BluxBlux

useOrderbook

Fetch orderbook data for an asset pair in your React app using the Blux SDK.

The useOrderbook hook returns orderbook data for a given asset pair. Both selling and buying are required — the hook will not run without them. Import Asset from @bluxcc/react.

Import

import { useOrderbook, Asset } from "@bluxcc/react";

Usage

Basic usage with required arguments:

import { useOrderbook, Asset } from "@bluxcc/react";

function App() {
  const selling = Asset.native();
  const buying = new Asset("USDC", "GA5Z....KZVN");

  const { data } = useOrderbook([selling, buying]);
}
root.render(
  <BluxProvider
    config={{
      appName: "MyApp",
      networks: [networks.testnet, networks.mainnet],
    }}
  >
    <App />
  </BluxProvider>
);

With call-builder options and TanStack Query options:

import { useOrderbook, Asset } from "@bluxcc/react";

function App() {
  const selling = Asset.native();
  const buying = new Asset("USDC", "GA5Z....KZVN");

  const { data, isStale } = useOrderbook(
    [selling, buying],              // Required arguments
    { limit: 20, order: "asc" },    // Core parameters
    { retry: 3, staleTime: 5000 },  // TanStack parameters
  );
}
root.render(
  <BluxProvider
    config={{
      appName: "MyApp",
      networks: [networks.testnet, networks.mainnet],
    }}
  >
    <App />
  </BluxProvider>
);

Pass required arguments first, then core call-builder options, then TanStack Query options. The hook relies on this order to work correctly.

Parameters

selling (required)

Asset

The asset being sold in the orderbook.

buying (required)

Asset

The asset being bought in the orderbook.

limit

number | undefined

Number of records to return.

network

string | undefined

The network to query. Omit to use the active network.

order

'asc' | 'desc' | undefined

Sort order for the results.

Query Options

OptionTypeDefaultDescription
enabledbooleantrueSet to false to disable automatic fetching
staleTimenumber | Infinity0Time in ms before data is considered stale
gcTimenumber | Infinity300000Time in ms before inactive cache data is garbage collected
retryboolean | number3How many times to retry on failure
retryDelaynumber | functionDelay in ms between retry attempts
refetchIntervalnumber | false | functionContinuously refetch at this interval in ms
refetchOnMountboolean | 'always'trueRefetch on component mount if data is stale
refetchOnWindowFocusboolean | 'always'trueRefetch when the window regains focus
refetchOnReconnectboolean | 'always'trueRefetch when network reconnects
refetchIntervalInBackgroundbooleanKeep refetching even when tab is in background
placeholderDataGetOrderbookResult | functionPlaceholder data shown while query is pending (not persisted to cache)
initialDataGetOrderbookResult | functionInitial data for the cache (persisted)
initialDataUpdatedAtnumber | functionTimestamp of when initialData was last updated
selectfunctionTransform or select a subset of the returned data
notifyOnChangePropsstring[] | 'all'Limit re-renders to specific property changes
structuralSharingboolean | functiontrueRetain references from old data for performance
networkMode'online' | 'always' | 'offlineFirst''online'Controls when queries can run relative to network status
metaRecord<string, unknown>Attach arbitrary metadata to the query cache entry
queryClientQueryClientUse a custom QueryClient instead of the nearest context one

Return Type

data

GetOrderbookResult | undefined

type GetOrderbookResult = {
  builder: OrderbookCallBuilder;
  response: Horizon.ServerApi.OrderbookRecord;
};

Status Booleans

PropertyTypeDescription
isPendingbooleanNo cached data and no completed fetch yet
isSuccessbooleanQuery resolved successfully
isErrorbooleanQuery failed
isLoadingbooleanFirst fetch in-flight (isFetching && isPending)
isFetchingbooleanQuery function is currently executing
isRefetchingbooleanBackground refetch in progress
isFetchedbooleanQuery has been fetched at least once
isFetchedAfterMountbooleanQuery fetched after component mounted
isStalebooleanCached data is stale or older than staleTime
isPlaceholderDatabooleanCurrently showing placeholder data
isLoadingErrorbooleanFailed on the first fetch
isRefetchErrorbooleanFailed during a background refetch
isPausedbooleanQuery wanted to fetch but was paused

Other Returns

PropertyTypeDescription
status'pending' | 'success' | 'error'Current query status
fetchStatus'fetching' | 'idle' | 'paused'Current fetch status
errornull | ErrorError object if the query failed
dataUpdatedAtnumberTimestamp of last successful fetch
errorUpdatedAtnumberTimestamp of last error
errorUpdateCountnumberTotal number of errors
failureCountnumberFailures since last success
failureReasonnull | ErrorReason for last retry failure
refetchfunctionManually trigger a refetch

On this page