ai-sdk-v6-ui
Build React chat interfaces with Vercel AI SDK v5/v6. Agent integration, tool approval, auto-submit. Use when: implementing AI SDK v5/v6 chat UIs or troubleshooting "useChat failed to parse stream", "useChat no response", or "stale body values" errors.
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Skill: ai-sdk-ui
Scope
- Applies to: React chat interfaces with Vercel AI SDK v5/v6, streaming UI patterns, tool approval workflows, agent integration
- Does NOT cover: Backend AI implementation (see ai-sdk-core), Generative UI/RSC
Assumptions
- AI SDK v5.0.99+ (stable) or v6.0.0-beta.108+ (beta)
- React 18+ (React 19 supported)
- Next.js 14+ (13.4+ works)
-
@ai-sdk/reactpackage
Principles
- Use
useChatfor chat interfaces with streaming - Use
useCompletionfor text completion (non-chat) - Use
useObjectfor structured data generation - Use
useAssistantfor OpenAI-compatible assistant APIs - Use streaming for better UX (show tokens as they arrive)
- Handle tool approval workflows with
addToolApprovalResponse(v6) - Use controlled mode for dynamic body values (avoid stale values)
- Use
toDataStreamResponse()in App Router,pipeDataStreamToResponse()in Pages Router
Constraints
MUST
- Use streaming responses (
toDataStreamResponse()orpipeDataStreamToResponse()) - Use controlled mode when body values change (
sendMessagewithdatainstead ofbodyoption) - Handle loading states (
isLoading) and errors (error)
SHOULD
- Use
stopfunction to allow users to cancel generation - Auto-scroll to latest message during streaming
- Show loading indicators during generation
- Use
InferAgentUIMessage(v6) for type-safe agent integration
AVOID
- Using
bodyoption with dynamic values (causes stale values) - Non-streaming responses (poor UX)
- Infinite loops in
useEffect(only depend onmessages, not callbacks) - Mixing v5 and v6 APIs without migration
Interactions
- Uses ai-sdk-core for backend implementation
- Works with nextjs App Router and Pages Router
- Uses Zod for schema validation (see typescript)
Patterns
Basic Chat
import { useChat } from '@ai-sdk/react'
export default function Chat() {
const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
api: '/api/chat',
})
return (
<form onSubmit={handleSubmit}>
<input value={input} onChange={handleInputChange} />
<button disabled={isLoading}>Send</button>
</form>
)
}
Tool Approval (v6)
import { useChat } from '@ai-sdk/react'
const { messages, addToolApprovalResponse } = useChat({
api: '/api/chat',
})
// Handle approval
addToolApprovalResponse({
toolCallId: 'id',
approved: true,
})
See Templates and Next.js Integration for detailed examples.
References
- Next.js Integration - App Router and Pages Router patterns
- Streaming Patterns - UI streaming best practices
- Top UI Errors - Common error solutions
Resources
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-02-03
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!