use user balance
Fetches a connected user's position in a vault — shares and equivalent asset value.
const { position, isLoading, refetch } = useUserBalance('yoETH', address)Usage
import { useUserBalance } from '@yo-protocol/react'
import { useAccount } from 'wagmi'
import { formatEther } from 'viem'
function UserPosition() {
const { address } = useAccount()
const { position, isLoading } = useUserBalance('yoETH', address)
if (!address) return <p>Connect wallet to view position</p>
if (isLoading) return <p>Loading position...</p>
return (
<dl>
<dt>Shares</dt>
<dd>{formatEther(position?.shares ?? 0n)}</dd>
<dt>Assets</dt>
<dd>{formatEther(position?.assets ?? 0n)}</dd>
</dl>
)
}Parameters
Parameter
Type
Required
Description
vault
Address | VaultId
Yes
Vault address or named ID
account
Address | undefined
No
User address. Query is disabled when undefined.
Return Value
Field
Type
Description
position
UserVaultPosition | undefined
Full user position
isLoading
boolean
true while the initial fetch is in progress
isError
boolean
true if the query failed
error
Error | null
Error object if the query failed
refetch
() => void
Manually trigger a refetch
UserVaultPosition shape
Property
Type
Description
shares
bigint
Vault share balance
assets
bigint
Equivalent asset value at current exchange rate
Caching
Setting
Value
Description
staleTime
15s
Position data is considered fresh for 15 seconds
refetchInterval
30s
Background refetch every 30 seconds