Choose channels the same way you choose REST route families. Hyperliquid core channels are for standard perp symbols such as BTC and ETH. Spot work should use Spot-specific route and stream context when available. HIP-3 channels keep the builder prefix, HIP-4 channels keep outcome identifiers, and Lighter channels stay under the Lighter family.
Preserve outcome and side context. REST HIP-4 candles are probability-history series; WebSocket channels do not include funding, liquidation, or a dedicated candle stream.
dashboard, alert, local book, replay, export writer
Sets throughput and gap tolerance
Stop condition
unsubscribe, close, replay stop, retry budget
Prevents abandoned streams
Store the checklist with active connection state. On reconnect, restore from this checklist list. On unsubscribe, remove it from the list before trusting local subscription state.
Do not send a HIP-3 symbol to a Lighter channel. Do not strip a HIP-3 prefix before subscribing. Do not treat HIP-4 outcome identifiers as ordinary perp symbols. Do not add Spot pairs to a generic perp stream; use Spot channel names such as spot_orderbook and keep dashed pair symbols visible in code.
For order books and reconstruction workflows, treat the first snapshot as the baseline and each update as an ordered change. Store channel, symbol, timestamp, and message type with local state so a replay or reconnect can show what happened. If a gap event appears, mark the local state unsafe until it is rebuilt from a fresh snapshot or replay window.
Subscribe to the minimum channel and symbol set for the job, then add more only after throughput and reconnection behavior are understood. A dashboard can usually tolerate fewer channels than a backtest replay, and a backtest replay usually needs stronger gap handling than a simple monitor.
Subscription code should include the inverse operation. If an example subscribes, also show or link to unsubscribe behavior. Long-running clients should track active subscriptions so reconnects do not accidentally duplicate streams.Treat subscription state as application state. Expose the active channel set in debug output so stream bugs can be inspected without reproducing the whole session.