HextaUI and assistant-ui
assistant-ui is a chat framework: a runtime that manages the conversation, with components that read from it. HextaUI gives you finished screens as plain components, and leaves the state where it already is. This page compares them as of October 2026.
The short answer
Use assistant-ui when you want a free, complete chat framework and are happy to build on its runtime, especially with an agent backend such as LangGraph. Use HextaUI when you want finished screens in one design, from the chat to the settings pages of your AI product, as components you pass data to. Both put their source in your project and share the shadcn/ui theme tokens.
At a glance
| HextaUI compared with assistant-ui | HextaUI | assistant-ui |
|---|---|---|
| What you get | Components, AI blocks and a complete chat app | A chat runtime, headless primitives and styled components |
| Price | Components free, AI blocks paid once, Prompt Input free | Free, with an optional paid cloud service |
| License | MIT for components, Pro License for blocks | MIT |
| Primitives | Base UI | Base UI or Radix |
| Chat state | Yours. Blocks take messages as props | Held by an assistant-ui runtime |
| Backends | Any, using AI SDK message parts | AI SDK, LangGraph, LangChain, AG-UI, A2A, Google ADK or your own |
| Platforms | React on the web | React, plus React Native and terminal apps |
| Product screens | Settings, models, API keys, billing and team pages | Focused on chat and agent interfaces |
A framework or a set of screens
assistant-ui starts from state. You wrap your app in AssistantRuntimeProvider, pick a runtime for your backend, and its components read the thread from that runtime. Branching, editing, attachments, tool approvals and resumable streams come from the runtime, and its styled components already show states like a stopped run or a failed reply. That is a lot of work done for you, and the trade is that your chat lives inside its model. Moving off it later means rewriting the state as well as the screens.
HextaUI starts from the screen. Each block is a component you pass messages to, in the shape useChat returns, with the hard states already designed:
- Chat Thread: failed replies offer Try again, stopped replies say so, and edits and retries become versions you can switch between. Your question pins to the top while the answer streams, and older history loads without the view jumping.
- Prompt Input: Enter never interrupts Japanese, Chinese or Korean input, uploads show progress and retry, messages typed during a reply wait in a queue, and drafts survive a reload. It is free.
- Tool Calls: every AI SDK tool state has its own look, including approvals, with “Tell it what to do instead” to send a reason back to the model.
- Settings: the pages around the chat, such as Models, API keys, Billing and Team, in the same design.
HextaAI puts every block together into a complete chat app you can open and try before you install anything.
Piece by piece
Most assistant-ui components have a HextaUI counterpart. The names below are from the assistant-ui docs.
| assistant-ui | HextaUI |
|---|---|
| Thread, Message actions, Edit message, Error state | Chat Thread, with the free Message and Message scroller |
| Message branches, Checkpoint history | Versions and checkpoints in Chat Thread |
| Composer, Composer attachments, Model selector, Message queue, Draft restore | Prompt Input, free |
| Thread list, Thread list sidebar | Chat Sidebar |
| Reasoning, Sources, Inline citation | Thinking |
| Tool call, Tool group, Approval card | Tool Calls |
| Agent plan, Todo list | Agent Todos |
| Markdown text, Streaming text | Markdown and Streaming |
| Syntax highlighter, Terminal block | Code Block |
| Artifact card, Web preview | Artifact |
| Reviewable diff, File tree | Diff Review, with the free Tree |
| Composer voice, Voice conversation | Voice Mode |
| Runtimes, Assistant Cloud | No counterpart. HextaUI has no runtime or hosted storage, so the state stays in your code. |
When assistant-ui is the better choice
- You want everything free and open source. Most of HextaUI’s AI blocks are paid.
- Your backend is an agent framework such as LangGraph, LangChain, AG-UI or Google ADK, and you want an adapter for it rather than mapping its messages yourself.
- You want saved threads, run reports and analytics without building the storage. Assistant Cloud does that, and HextaUI has no hosted service.
- You also ship a React Native or terminal app and want one chat model across them. HextaUI is web only.
- You want Radix primitives. HextaUI is built on Base UI only.
- You want the widest catalog of chat and agent components, with a large community behind it.
Using them together
Pick one to own the conversation. If assistant-ui already runs your chat, keep it, and use HextaUI for the screens around it, such as Models or API keys. If you are on the AI SDK and only want better screens, HextaUI blocks read the message parts useChat already gives you, so there is no runtime to adopt. Start with the composer, since Prompt Input is free.
Questions
Is assistant-ui free?
Yes. assistant-ui is open source under the MIT license. Assistant Cloud, its hosted service for saved threads and analytics, is optional and has a free plan alongside paid ones.
Does HextaUI have a runtime like assistant-ui?
No. HextaUI blocks are React components that take messages as props, in the same shape the AI SDK’s useChat returns. Your chat state stays in useChat, your own store or your server, and nothing wraps your app.
Is HextaUI free?
The components are free and MIT licensed. The AI blocks and full screens are HextaUI Pro, a single payment with every later block included. Prompt Input is free.
Can I use HextaUI and assistant-ui in the same project?
Yes, but let one of them own the chat. Both put their source in your project and use the shadcn/ui theme tokens, so HextaUI settings pages or components sit next to an assistant-ui thread without restyling.