React error "Maximum update depth exceeded"

Issue

I am using the AI SDK in a React project with the useChat or useCompletion hooks and I get the following error when AI responses stream in: Maximum update depth exceeded.

Background

By default, the UI is re-rendered on every chunk that arrives. This can overload the rendering, especially on slower devices or when complex components need updating (e.g. Markdown). Throttling can mitigate this.

Solution

Use the experimental_throttle option to throttle the UI updates:

useChat

const { messages, ... } = useChat({
// Throttle the messages and data updates to 50ms:
experimental_throttle: 50
})

useCompletion

const { completion, ... } = useCompletion({
// Throttle the completion and data updates to 50ms:
experimental_throttle: 50
})