Hooks & State
Deep dive into useThread, useThreadList, and related headless state hooks.
All headless hooks must run inside ChatProvider.
useThread()
Handles active conversation state:
messagesisRunningprocessMessage()cancelMessage()- message mutation helpers
const { messages, isRunning, processMessage, cancelMessage } = useThread();useThreadList()
Handles thread sidebar state:
threadsselectedThreadIdloadThreads()selectThread()createThread()/deleteThread()
const { threads, selectedThreadId, selectThread, switchToNewThread } = useThreadList();Use selectors when needed to minimize re-renders, for example useThread((s) => s.messages).