--- title: CopilotChatScrollView description: "Scrollable message container with auto-scroll behavior" --- `CopilotChatScrollView` is the default scroll container used by [CopilotChat](/reference/copilot-chat). It handles auto-scrolling during message streaming, provides a scroll-to-bottom button, and displays a gradient fade (feather) overlay. ## What is CopilotChatScrollView? The CopilotChatScrollView component: - Provides a scrollable container for the message list - Auto-scrolls to bottom during AI response streaming - Shows a scroll-to-bottom button when scrolled up - Includes a gradient "feather" overlay for visual polish - Built on the [slot system](/reference/slot-system) for deep customization ## Component Architecture CopilotChatScrollView provides slots for customizing its visual elements: ```mermaid graph LR SV[CopilotChatScrollView] --> scrollToBottomButton SV --> feather ``` ### Slot Descriptions | Slot | Description | | ---------------------- | ------------------------------------------------------ | | `scrollToBottomButton` | Button that appears when scrolled up from bottom | | `feather` | Gradient fade overlay at the bottom of the scroll area | ## Basic Usage Customize the scroll view through the `scrollView` prop on [CopilotChat](/reference/copilot-chat): ```tsx ``` ## Auto-Scroll Behavior By default, CopilotChatScrollView automatically scrolls to the bottom when: - New messages are added to the conversation - The AI is streaming a response - The user is already near the bottom of the scroll area To disable auto-scroll: ```tsx ``` When auto-scroll is disabled, users must manually scroll to see new messages. The scroll-to-bottom button will appear when new content is available below the viewport. ## Slot Customization CopilotChatScrollView uses the [slot system](/reference/slot-system). Each slot accepts four types of values: 1. **Tailwind class string** - Add or override CSS classes 2. **Props object** - Pass additional props to the default component 3. **Custom component** - Replace the component entirely 4. **Nested sub-slots** - Drill down to customize child components ### Scroll-to-Bottom Button Customization Style the scroll-to-bottom button: ```tsx ``` Or with a custom component: ```tsx function CustomScrollButton({ onClick }) { return ( ); } ; ``` ### Feather (Gradient Overlay) Customization The feather provides a gradient fade at the bottom of the scroll area: ```tsx ``` To remove the feather entirely: ```tsx null, }} /> ``` ## Replacing the Scroll View To completely replace the scroll view with your own component: ```tsx import { CopilotChatView } from "@copilotkit/react-core"; function CustomScrollView({ children, autoScroll, ...props }) { return ( {children} ); } ; ``` ## Examples ### Custom Scroll Button ```tsx ``` ### Dark Mode Feather ```tsx ``` ### Removing Visual Elements Remove both the scroll button and feather for a minimal look: ```tsx null, feather: () => null, }} /> ``` ### Custom Themed Scroll View ```tsx ``` ## Related - [CopilotChat](/reference/copilot-chat) - Parent component that uses CopilotChatScrollView - [CopilotChatMessageView](/reference/copilot-chat-message-view) - Message list rendered inside the scroll view - [Slot System](/reference/slot-system) - Deep dive into slot customization