# Suggestions
URL: /docs/guides/suggestions
Display suggested prompts to help users get started with your assistant.
***
title: Suggestions
description: Display suggested prompts to help users get started with your assistant.
-------------------------------------------------------------------------------------
Suggestions are pre-defined prompts that help users discover what your assistant can do. They appear in the welcome screen and provide a quick way to start conversations.
## Overview
The Suggestions API allows you to configure a list of suggested prompts that are displayed when the thread is empty. Users can click on a suggestion to either populate the composer or immediately send the message.
## Quick Start
Configure suggestions using the `Suggestions()` API in your runtime provider:
```tsx
import { useAui, Tools, Suggestions } from "@assistant-ui/react";
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
const runtime = useChatRuntime();
const aui = useAui({
tools: Tools({ toolkit: myToolkit }),
suggestions: Suggestions([
"What can you help me with?",
"Tell me a joke",
"Explain quantum computing",
]),
});
return (
{children}
);
}
```
## Suggestion Format
Suggestions can be provided as either strings or objects with title, label, and prompt:
### Simple Strings
```tsx
const aui = useAui({
suggestions: Suggestions([
"What's the weather today?",
"Help me write an email",
"Explain React hooks",
]),
});
```
### Objects with Title and Description
For more detailed suggestions with separate display text and prompts:
```tsx
const aui = useAui({
suggestions: Suggestions([
{
title: "Weather",
label: "in San Francisco",
prompt: "What's the weather in San Francisco?",
},
{
title: "React Hooks",
label: "useState and useEffect",
prompt: "Explain React hooks like useState and useEffect",
},
{
title: "Travel Tips",
label: "for Tokyo",
prompt: "Give me travel tips for visiting Tokyo",
},
]),
});
```
## Displaying Suggestions
The default Thread component from the shadcn registry already includes suggestion rendering. The suggestions are displayed in the welcome screen when the thread is empty.
### Customizing Suggestion Display
If you want to customize how suggestions are displayed, you can modify your Thread component:
```tsx
import {
ThreadPrimitive,
SuggestionPrimitive,
AuiIf,
} from "@assistant-ui/react";
const ThreadWelcome = () => {
return (
Welcome!
How can I help you today?
{/* Display suggestions */}
);
};
const SuggestionItem = () => {
return (
);
};
```
## Suggestion Primitives
### ThreadPrimitive.Suggestions
Renders all suggestions from the suggestions scope.
```tsx
```
### SuggestionPrimitive.Title
Displays the suggestion's title (the first part when using object format, or the full text when using strings).
```tsx
```
### SuggestionPrimitive.Description
Displays the suggestion's description/label (only shown when using object format).
```tsx
```
### SuggestionPrimitive.Trigger
A button that triggers the suggestion action when clicked.
```tsx
```
**Props:**
* `send` (boolean): When true, automatically sends the message. When false, only populates the composer.
* `clearComposer` (boolean, default: true): When `send` is false, determines if the composer is cleared before adding the suggestion (true) or if the suggestion is appended (false).
* `asChild` (boolean): Merge props with child element instead of rendering a button.
## Dynamic Suggestions
You can dynamically change suggestions based on your application state:
```tsx
import { useMemo } from "react";
function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
const runtime = useChatRuntime();
const user = useUser(); // Your user hook
const suggestions = useMemo(() => {
if (user.isPremium) {
return [
"Analyze my business data",
"Generate a detailed report",
"Create a custom workflow",
];
}
return [
"What can you do?",
"Tell me a joke",
"Help me get started",
];
}, [user.isPremium]);
const aui = useAui({
tools: Tools({ toolkit: myToolkit }),
suggestions: Suggestions(suggestions),
});
return (
{children}
);
}
```
## Context-Aware Suggestions
Suggestions can be tailored to different contexts or user intents:
```tsx
const suggestions = [
{
title: "Code Review",
label: "Get feedback on your code",
prompt: "Can you review this code for me?",
},
{
title: "Debug Help",
label: "Find and fix issues",
prompt: "Help me debug this error",
},
{
title: "Best Practices",
label: "Learn recommended patterns",
prompt: "What are the best practices for this?",
},
];
```
## Best Practices
1. **Keep suggestions concise**: Use clear, actionable prompts that users can understand at a glance
2. **Show capabilities**: Use suggestions to highlight your assistant's key features
3. **Provide variety**: Offer suggestions across different use cases
4. **Use the object format for complex suggestions**: When you need separate title/description, use the object format
5. **Limit the number**: 3-6 suggestions work best to avoid overwhelming users
6. **Make them actionable**: Each suggestion should lead to a meaningful interaction
## Migration from Legacy API
If you're using the deprecated `ThreadPrimitive.Suggestion` component, migrate to the new API:
### Before (Deprecated)
```tsx
```
### After (Recommended)
1. Configure suggestions in your runtime provider:
```tsx
const aui = useAui({
suggestions: Suggestions(["What's the weather?"]),
});
```
2. Display suggestions using the primitives:
```tsx
```
The new API provides:
* **Centralized configuration**: Define suggestions once in your runtime provider
* **Better separation of concerns**: Configuration separate from presentation
* **Type safety**: Full TypeScript support
* **Consistency**: Follows the same pattern as the Tools API
## Related
* [Thread Component](/docs/ui/thread) - Main chat interface
* [Tools Guide](/docs/guides/tools) - Configure assistant actions
* [Context API](/docs/guides/context-api) - Access assistant state