JSPM

@react-ai-stream/react

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 16
  • Score
    100M100P100Q54509F

React hooks and context for react-ai-stream

Package Exports

  • @react-ai-stream/react

Readme

@react-ai-stream/react

npm License: MIT

Stream AI chat from any backend with a single React hook. Works with Anthropic, OpenAI, Groq, FastAPI, Go, Rails, or any server that speaks HTTP + SSE.

Install

npm install @react-ai-stream/react

Peer dependencies: React 18 or 19.

Quick start

'use client'
import { useAIChat } from '@react-ai-stream/react'

export default function Page() {
  const { messages, sendMessage, loading, stop, error } = useAIChat({
    endpoint: '/api/chat',
  })

  return (
    <div>
      {messages.map((m) => (
        <p key={m.id}><strong>{m.role}:</strong> {m.content}</p>
      ))}
      <button onClick={() => sendMessage('Hello!')} disabled={loading}>Send</button>
      {loading && <button onClick={stop}>Stop</button>}
      {error && <p style={{ color: 'red' }}>{error}</p>}
    </div>
  )
}

Event hooks

const chat = useAIChat({
  endpoint: '/api/chat',
  onToken: (token) => console.log('chunk:', token),
  onComplete: (message) => saveToDatabase(message),
  onError: (err) => Sentry.captureException(err),
})

Hook return values

Value Type Description
messages Message[] Full conversation history
sendMessage (text: string) => Promise<void> Send a message
loading boolean True while streaming
stop () => void Abort in-flight stream
error string | null Last error message
clearMessages () => void Reset conversation

Documentation

Full docs, backend setup, and provider options: github.com/trimooo/react-ai-stream