UX.SOL

Hook

useTokenSafety

Loads token metadata and exposes normalized safe, caution, danger, and unknown states for financial UI.

Installation

terminal
$npx shadcn@latest add https://uxdotsol.xyz/r/use-token-safety.json

Usage

usage
"use client";
 
import { useTokenSafety } from "@/hooks/uxdotsol/use-token-safety";
 
export function TokenSafetyDisclosure({ mint }: { mint: string }) {
const safety = useTokenSafety(mint);
 
if (safety.isLoading) return <p>Checking token...</p>;
if (safety.status === "not-found") return <p>Token information unavailable.</p>;
if (safety.error) {
return <button onClick={safety.refetch}>Retry safety check</button>;
}
 
return (
<section aria-live="polite">
<p>Risk: {safety.risk}</p>
<ul>
{safety.reasons.map((reason) => (
<li key={reason.code}>{reason.message}</li>
))}
</ul>
</section>
);
}
.env.local
JUPITER_API_KEY=your_server_side_key

Options

NameTypeDefaultDescription
mintstring | null | undefinedrequiredSolana token mint to assess. Empty values keep the hook idle.
adapterTokenSafetyAdaptersame-origin HTTP adapterOptional provider adapter implementing getToken. Use this to replace the bundled endpoint.
endpointstring'/api/token-safety'Same-origin endpoint used by the default HTTP adapter.
assessTokenSafetyAssessorassessTokenSafetyOptional policy function for converting normalized metadata into risk and reasons.
enabledbooleantrueDisables requests and returns the idle state when false.
fetcher / headerstypeof fetch / HeadersInitfetch / undefinedOptional HTTP overrides for the default adapter.

Functions

NameTypeDefaultDescription
refetch() => void-Repeats the current token lookup.
assessTokenSafety(token: TokenSafetyToken) => TokenSafetyAssessment-Default explainable policy. Suspicious or banned tokens are danger; other detected risks are caution.
createTokenSafetyHttpAdapter(config?) => TokenSafetyAdapter-Creates a same-origin adapter with endpoint, fetch and header overrides.

Types

NameTypeDefaultDescription
TokenSafetyRisk'safe' | 'caution' | 'danger' | 'unknown'-Small risk vocabulary designed for disclosure UI.
TokenSafetyReason{ code; severity; message }-Explainable signal that can be rendered directly or mapped to product copy.
TokenSafetyAdapter{ getToken(mint, context?): Promise<TokenSafetyToken | null> }-Provider boundary used to replace Jupiter or the bundled server route.

Returns

NameTypeDefaultDescription
risk / reasonsTokenSafetyRisk / TokenSafetyReason[]'unknown' / []Normalized risk state and its supporting explanations.
tokenTokenSafetyToken | nullnullNormalized token identity, verification, audit, activity, liquidity, and holder data.
status / isLoadingTokenSafetyStatus / boolean'idle' / falseRequest lifecycle state.
isVerified / isSuspiciousboolean / booleanfalse / falseConvenience values for common disclosure branches.
errorError | nullnullNetwork or invalid-response error.