// the find
assistant-ui/assistant-ui
Typescript/React Library for AI Chat💬🚀
assistant-ui is a React component library for building AI chat interfaces, following a Radix-style composable primitives pattern. It integrates with Vercel AI SDK, LangGraph, and a growing list of other backends out of the box. Primarily targets Next.js/React developers who want a production-ready chat UI without writing the boring parts from scratch.
- The composable primitives approach (Thread, Message, Composer, ActionBar) means you're not fighting a monolithic component when you need to customize — you assemble what you need and style it yourself, similar to how shadcn/ui works.
- Backend adapter coverage is genuinely broad: Vercel AI SDK, LangGraph, AG-UI, Google ADK, and custom data streams are all first-class, with the runtime swappable at the top level rather than baked into components.
- Generative UI support (rendering tool calls as React components, inline human-in-the-loop approvals) is something most chat libraries skip entirely, and here it appears to be a core feature rather than an afterthought.
- The browser devtools extension for inspecting message parts, tool calls, MCP state, and run timelines is a rare and practical inclusion that most competing libraries don't have.
- The library is heavily Next.js-centric — the CLI scaffolds Next.js projects, examples assume RSC/App Router, and using it in Vite or non-Next React setups will require more manual wiring than the docs imply.
- The managed cloud offering (thread history, telemetry, file storage) is closed-source and paid, meaning if you need persistence at scale, you're either building it yourself or becoming a customer — the OSS layer alone is intentionally incomplete for production-grade multi-user scenarios.
- The package count is sprawling (react, react-ai-sdk, react-langgraph, react-ag-ui, react-google-adk, react-opencode, react-native, react-ink, etc.) with each being a separate versioned package, which means keeping integrations in sync and tracking breaking changes across adapters is a real ongoing maintenance burden for adopters.
- React Native and terminal (Ink) packages exist but appear underdeveloped compared to the web library — treating them as first-class options based on README alone would be a mistake without checking their actual feature parity.