Orderly Sdk Debugging
VerifiedDebug and troubleshoot common issues with the Orderly SDK including errors, WebSocket issues, authentication problems, and trading failures.
$ Add to .claude/skills/ About This Skill
# Orderly Network: SDK Debugging
A comprehensive guide to debugging common issues, handling errors, and troubleshooting problems with the Orderly SDK.
When to Use
- Fixing build errors
- Debugging WebSocket connections
- Handling API errors
- Troubleshooting authentication issues
- Investigating trading failures
Prerequisites
- Orderly SDK installed
- Basic debugging knowledge
- Browser DevTools familiarity
1. Build & Setup Errors
Buffer is not defined
``` Uncaught ReferenceError: Buffer is not defined ```
Cause: Wallet libraries use Node.js built-ins (Buffer, crypto) that don't exist in browsers.
Solution: Add `vite-plugin-node-polyfills`:
```bash npm install -D vite-plugin-node-polyfills ```
```ts // vite.config.ts import { nodePolyfills } from 'vite-plugin-node-polyfills';
export default defineConfig({ plugins: [ react(), nodePolyfills({ include: ['buffer', 'crypto', 'stream', 'util'], globals: { Buffer: true, global: true, process: true, }, }), ], }); ```
CSS Import Not Found
``` ENOENT: no such file or directory, open '@orderly.network/trading/dist/styles.css' ```
Cause: Only `@orderly.network/ui` has a CSS file.
Solution: Only import from `@orderly.network/ui`:
```css /* Correct - only ui package has CSS */ @import '@orderly.network/ui/dist/styles.css';
/* Wrong - these don't exist */ /* @import '@orderly.network/trading/dist/styles.css'; */ /* @import '@orderly.network/portfolio/dist/styles.css'; */ ```
2. Common Error Codes
API Error Codes
| Code | Message | Cause | Solution | | ------- | ----------------- | ------------------- | ----------------- | | `-1000` | Unknown error | Server error | Retry request | | `-1002` | Unauthorized | Invalid/expired key | Re-authenticate | | `-1003` | Too many requests | Rate limit | Implement backoff | | `-1102` | Invalid parameter | Wrong order params | Validate inputs |
Order Error Codes
| Code | Message | Cause | Solution | | ------- | ------------------------------- | ----------------------- | -------------------- | | `-2001` | Insufficient balance | Not enough USDC | Deposit more funds | | `-2002` | Order would trigger liquidation | Risk too high | Reduce position size | | `-2004` | Price out of range | Price too far from mark | Adjust limit price | | `-2005` | Order quantity too small | Below minimum | Increase quantity |
Withdrawal Error Codes
| Code | Message | Cause | Solution | | ------- | --------------------------- | -------------------- | ------------------- | | `-3001` | Insufficient balance | Not enough available | Check unsettled PnL | | `-3002` | Withdrawal amount too small | Below minimum | Increase amount |
3. WebSocket Connection
Monitor Connection Status
```tsx import { useWsStatus, WsNetworkStatus } from '@orderly.network/hooks';
function ConnectionIndicator() { const wsStatus = useWsStatus();
return ( <div className="connection-status"> {wsStatus === WsNetworkStatus.Connected && ( <span className="text-green-500">● Connected</span> )} {wsStatus === WsNetworkStatus.Unstable && ( <span className="text-yellow-500">● Reconnecting...</span> )} {wsStatus === WsNetworkStatus.Disconnected && ( <span className="text-red-500">● Disconnected</span> )} </div> ); } ```
WebSocket Status Values
| Status | Description | | -------------- | ---------------------------------------- | | `Connected` | WebSocket is connected and working | | `Unstable` | Connection dropped, attempting reconnect | | `Disconnected` | Connection lost, not reconnecting |
4. Account State Issues
Check Account State
```tsx import { useAccount, AccountStatusEnum } from '@orderly.network/hooks';
function AccountDebugger() { const { state, account } = useAccount();
useEffect(() => { console.log('Account State:', { status: state.status, address: state.address, userId: state.userId, accountId: state.accountId, hasOrderlyKey: !!account?.keyStore?.getOrderlyKey(), }); }, [state, account]);
// Common issues: switch (state.status) { case AccountStatusEnum.NotConnected: return <p>Wallet not connected</p>; case AccountStatusEnum.Connected: return <p>Wallet connected, not signed in</p>; case AccountStatusEnum.NotSignedIn: return <p>Need to sign message to create Orderly key</p>; case AccountStatusEnum.SignedIn: return <p>Fully authenticated</p>; } } ```
Common Account Issues
| Issue | Cause | Solution | | -------------------- | ---------------------- | -------------------- | | Stuck on "Connected" | User didn't sign | Prompt for signature | | Key expired | 365-day expiry | Re-authenticate | | Wrong network | Testnet vs mainnet | Check `networkId` | | No user ID | Account not registered | Complete signup |
5. Order Submission Errors
Validate Before Submit
```tsx import { useOrderEntry } from '@orderly.network/hooks';
function OrderDebugger() { const { formattedOrder, metaState, helper } = useOrderEntry('PERP_ETH_USDC');
// Check for validation errors if (metaState.errors) { console.log('Order Errors:', metaState.errors); }
// Check order readiness console.log('Order Ready:', { canSubmit: !metaState.errors && formattedOrder, maxQty: helper.maxQty, estLiqPrice: helper.estLiqPrice, }); } ```
Debug Order Rejection
```tsx async function submitOrderWithDebug(order) { try { const result = await submit(); console.log('Order submitted:', result); } catch (error) { console.error('Order failed:', { code: error.code, message: error.message, });
if (error.code === -2001) { console.log('Fix: Deposit more USDC or reduce order size'); } else if (error.code === -2002) { console.log('Fix: Reduce leverage or position size'); }
throw error; } } ```
6. Deposit/Withdrawal Errors
Debug Deposit
```tsx import { useDeposit } from '@orderly.network/hooks';
function DepositDebugger() { const { deposit, balance, allowance, approve } = useDeposit();
const handleDeposit = async (amount) => { console.log('Deposit Debug:', { amount, walletBalance: balance, currentAllowance: allowance, needsApproval: Number(amount) > Number(allowance), });
try { if (Number(amount) > Number(allowance)) { console.log('Approving USDC...'); await approve(amount); }
console.log('Depositing...'); const result = await deposit(); console.log('Deposit success:', result); } catch (error) { console.error('Deposit failed:', error);
if (error.message.includes('user rejected')) { console.log('User rejected transaction'); } else if (error.message.includes('insufficient')) { console.log('Insufficient balance or gas'); } } }; } ```
7. Debugging Hooks
Enable Debug Mode
```tsx // Log all hook state changes function useDebugHook(hookName, value) { useEffect(() => { console.log(`[${hookName}]`, value); }, [value, hookName]); return value; }
// Usage const positions = useDebugHook('positions', usePositionStream().positions); ```
8. Network Issues
CORS Errors
``` Access to fetch at 'https://api.orderly.org/...' has been blocked by CORS ```
Solutions:
- SDK handles CORS automatically
- Check you're not calling API directly without SDK
Rate Limiting
```tsx // Implement exponential backoff async function withRetry(fn, maxRetries = 3, baseDelay = 1000) { for (let attempt = 0; attempt < maxRetries; attempt++) { try { return await fn(); } catch (error) { if (error.code === -1003 && attempt < maxRetries - 1) { const delay = baseDelay * Math.pow(2, attempt); console.log(`Rate limited, retrying in ${delay}ms...`); await new Promise((resolve) => setTimeout(resolve, delay)); } else { throw error; } } } } ```
9. Error Boundary
Wrap your app with an error boundary:
```tsx import { ErrorBoundary } from '@orderly.network/react-app';
// Or create custom: class OrderlyErrorBoundary extends React.Component { state = { hasError: false, error: undefined };
static getDerivedStateFromError(error) { return { hasError: true, error }; }
componentDidCatch(error, errorInfo) { console.error('Orderly Error:', error, errorInfo); }
render() { if (this.state.hasError) { return ( <div className="error-fallback"> <h2>Something went wrong</h2> <pre>{this.state.error?.message}</pre> <button onClick={() => window.location.reload()}>Reload Page</button> </div> ); } return this.props.children; } } ```
10. Debugging Checklist
Order Not Submitting
- [ ] Account status is `SignedIn`?
- [ ] Symbol format correct? (e.g., `PERP_ETH_USDC`)
- [ ] Sufficient balance?
- [ ] Order quantity above minimum?
- [ ] Limit price within range?
- [ ] No validation errors in `metaState.errors`?
Wallet Not Connecting
- [ ] WalletConnectorProvider configured?
- [ ] Correct wallet adapters installed?
- [ ] Chain supported for network?
- [ ] User approved connection in wallet?
Data Not Loading
- [ ] WebSocket connected?
- [ ] Correct networkId (mainnet vs testnet)?
- [ ] User authenticated for private data?
- [ ] Check browser console for errors?
Deposit/Withdraw Failing
- [ ] Correct chain selected?
- [ ] USDC approved for deposit?
- [ ] Sufficient gas for transaction?
- [ ] No pending withdrawals?
- [ ] Available balance covers withdrawal?
11. Useful Debug Components
Full State Debugger
```tsx function OrderlyDebugPanel() { const { state } = useAccount(); const wsStatus = useWsStatus(); const { data: accountInfo } = useAccountInfo();
if (!import.meta.env.DEV) return null;
return ( <div className="fixed bottom-4 right-4 bg-black/80 text-white p-4 rounded-lg text-xs"> <h3 className="font-bold mb-2">Debug Panel</h3> <div>Account: {state.status}</div> <div>WS: {wsStatus}</div> <div>Balance: {accountInfo?.freeCollateral?.toFixed(2)} USDC</div> </div> ); } ```
Related Skills
- orderly-sdk-dex-architecture - Provider setup
- orderly-sdk-wallet-connection - Wallet integration
- orderly-api-authentication - Auth flow
- orderly-sdk-install-dependency - Package installation
Use Cases
- Debug build errors like missing Buffer polyfills and CSS import issues in Orderly SDK projects
- Troubleshoot WebSocket connection states and implement reconnection monitoring
- Diagnose order submission failures with error code lookup and validation debugging
- Debug deposit and withdrawal flows including USDC approval and balance checks
- Verify account authentication states across the Orderly SDK lifecycle
Pros & Cons
Pros
- +Comprehensive error code tables for API, order, and withdrawal errors with specific solutions
- +Ready-to-use React debug components for monitoring connection, account, and order states
- +Detailed debugging checklists for the most common failure scenarios
Cons
- -Specific to the Orderly Network SDK — not applicable to other DeFi trading platforms
- -Assumes React and Vite development environment — limited help for other frameworks
FAQ
What does Orderly Sdk Debugging do?
What platforms support Orderly Sdk Debugging?
What are the use cases for Orderly Sdk Debugging?
100+ free AI tools
Writing, PDF, image, and developer tools — all in your browser.
Next Step
Use the skill detail page to evaluate fit and install steps. For a direct browser workflow, move into a focused tool route instead of staying in broader support surfaces.