Overview
@akapulu/react-ui is the higher-level React UI package in the Akapulu Web SDK.
It is built on top of @akapulu/react and provides a prebuilt conversation interface for React apps.
Installation
Main export
The main export isAkapuluConversation.
Main responsibility
@akapulu/react-ui is responsible for rendering a ready-made conversation UI with:
- video layout
- transcript UI
- loading and error states
- current node display
- tool event surfaces
- built-in call controls
How it fits in your app
In a typical React app:AkapuluProviderfrom@akapulu/reactpoints at your local routes.- Your routes call Akapulu through
@akapulu/server. AkapuluConversationrenders the higher-level conversation UI on top of that session state.
connectBody, custom UI without this package, and post-call APIs).
When to use this package
Use@akapulu/react-ui when you want:
- the fastest React integration
- a prebuilt conversation UI
- styling and rendering customization without building every surface from scratch
@akapulu/react directly.
Minimal example
Styling AkapuluConversation
@akapulu/react-ui supports slot-level customization via:
classNamefor the rootclassesfor slot class namesstylesfor slot inline style overrides
Example 1: Slot key overrides (classes + styles)
Use slot keys when you want to target specific UI parts directly from React props.
Example 2: Default class overrides (global CSS)
Use built-in default classes when you want to apply theme-like global styles from CSS.Example 3: data-slot overrides (stable CSS selectors)
Use data-slot selectors when you want explicit, inspectable selectors in DevTools.
Slot map
Each slot has both a default class and adata-slot marker so users can inspect and target it in DevTools without guessing.
Layout
Loading
Error modal
Tool events
Video + controls
Transcript
Behavior customization (handlers + custom elements)
Beyond styles,@akapulu/react-ui lets you customize behavior and rendering for transcript and tool events directly on AkapuluConversation.
Built-in handler props on AkapuluConversation
transcriptFilter(entry)to hide transcript rowsrenderTranscriptEntry(entry)to render transcript rows with your own JSXonToolEvent(tool)to run side effects when a tool event arrivesrenderToolEvent(tool)to replace the default tool toast elementtoolEventTimeoutMsto control how long the tool toast stays visible
toolEventTimeoutMs behavior:
- default:
4000 - pass a number to customize the auto-hide timeout
- pass
nullto disable auto-hide
TranscriptEntry shape (entry):
NormalizedToolEvent shape (tool) by tool type:
RAG tool event
vision tool event
http tool event
Handling all conversation events while keeping prebuilt UI
For full event handling (node changes, bot speaking state, transcript updates, tool calls, and timeout), add a small sibling listener component that usesuseAkapuluEvents from @akapulu/react.
event.type:

