Skip to main content

Reading Blockchain Data

useSuiClientQuery

The primary hook for querying blockchain data:
import { useSuiClientQuery } from "@mysten/dapp-kit";

function MyComponent() {
  const { data, isPending, error } = useSuiClientQuery(
    "getOwnedObjects",
    { owner: "0x123..." }
  );

  if (isPending) return <div>Loading...</div>;
  if (error) return <div>Error: {error.message}</div>;

  return <pre>{JSON.stringify(data, null, 2)}</pre>;
}

Get SUI Balance

import { useSuiClientQuery, useCurrentAccount } from "@mysten/dapp-kit";

function Balance() {
  const account = useCurrentAccount();

  const { data } = useSuiClientQuery(
    "getBalance",
    { owner: account?.address as string },
    { enabled: !!account }
  );

  const balance = Number(data?.totalBalance ?? 0) / 1_000_000_000;

  return <div>Balance: {balance.toFixed(4)} SUI</div>;
}

Get Owned Objects

import { useSuiClientQuery, useCurrentAccount } from "@mysten/dapp-kit";

function MyObjects() {
  const account = useCurrentAccount();

  const { data, isPending } = useSuiClientQuery(
    "getOwnedObjects",
    {
      owner: account?.address as string,
      options: {
        showContent: true,
        showType: true,
      },
    },
    { enabled: !!account }
  );

  if (!account) return <div>Please connect your wallet</div>;
  if (isPending) return <div>Loading...</div>;

  return (
    <div>
      <h3>Your Objects ({data?.data.length})</h3>
      <ul>
        {data?.data.map((obj) => (
          <li key={obj.data?.objectId}>{obj.data?.objectId}</li>
        ))}
      </ul>
    </div>
  );
}

Next Steps

Sign Transactions

Build, sign, and execute transactions