Documents
tool-fallback
tool-fallback
Type
External
Status
Published
Created
Mar 17, 2026
Updated
Mar 17, 2026

import {
ToolFallbackSample,
ToolFallbackRunningSample,
ToolFallbackCancelledSample,
ToolFallbackStreamingSample,
} from "@/components/docs/samples/tool-fallback";

Getting Started#

Add tool-fallback#

<InstallCommand shadcn={["tool-fallback"]} />

This adds a /components/assistant-ui/tool-fallback.tsx file to your project, which you can adjust as needed.

Use it in your application#

Pass the ToolFallback component to the MessagePrimitive.Parts component

import { ToolFallback } from "@/components/assistant-ui/tool-fallback";

const AssistantMessage = () => {
  return (
    <MessagePrimitive.Root>
      <MessagePrimitive.Parts>
        {({ part }) => {
          if (part.type === "tool-call") return <ToolFallback {...part} />;
          return null;
        }}
      </MessagePrimitive.Parts>
    </MessagePrimitive.Root>
  );
};

Examples#

Streaming Demo#

Interactive demo showing the full tool call lifecycle: running → complete.

Running State#

Shows a loading spinner and shimmer animation while the tool is executing.

Cancelled State#

Shows a muted appearance when a tool call was cancelled.

Composable API#

All sub-components are exported for custom layouts:

ComponentDescription
ToolFallback.RootCollapsible container with scroll lock
ToolFallback.TriggerHeader with tool name, status icon, and shimmer
ToolFallback.ContentAnimated collapsible content wrapper
ToolFallback.ArgsDisplays tool arguments
ToolFallback.ResultDisplays tool execution result
ToolFallback.ErrorDisplays error or cancellation messages
import {
  ToolFallback,
  ToolFallbackRoot,
  ToolFallbackTrigger,
  ToolFallbackContent,
  ToolFallbackArgs,
  ToolFallbackResult,
  ToolFallbackError,
} from "@/components/assistant-ui/tool-fallback";

// Compound component syntax
<ToolFallback.Root>
  <ToolFallback.Trigger toolName="get_weather" status={status} />
  <ToolFallback.Content>
    <ToolFallback.Error status={status} />
    <ToolFallback.Args argsText={argsText} />
    <ToolFallback.Result result={result} />
  </ToolFallback.Content>
</ToolFallback.Root>
  • ToolGroup - Group consecutive tool calls together