Best Practices
Essential patterns for optimal performance, type safety, and maintainability
Type Safety
// β
Good: Proper typing
const args: [string, bigint, boolean] = [address, amount, isEnabled];
const contractAddress = config.contractAddress as `0x${string}`;
const method = 'balanceOf' as const;
// β
Use contract factories
import { VOT3__factory } from '@vechain/vechain-kit/contracts';
const abi = VOT3__factory.abi;
// Avoid: Manual ABI definitions
const functionAbi = contractAbi.find((e) => e.name === "delegates");Query Optimization
// β
Good: Conditional enablement
return useCallClause({
abi,
address: contractAddress,
method: 'getData',
args: [userAddress],
queryOptions: {
enabled: !!contractAddress && !!userAddress && isConnected,
},
});
// β
Good: Configure caching
queryOptions: {
staleTime: 30000, // 30 seconds for price data
refetchInterval: 60000, // Refetch every minute
}Data Transformation
Error Handling
Query Key Management
Performance Tips
Security
Single Contract Call Pattern
Multiple Contract Calls Pattern
Transaction Building Pattern
Multi-Clause Transactions
Error Handling
Last updated
Was this helpful?