# Interactable Components URL: /concepts/components/interactable-components When you want to place specific components on screen rather than letting Tambo choose which to show, but still want to allow your users to interact with them using natural language, use Tambo's Interactable components. Unlike regular registered components that Tambo generates and renders from scratch when responding to messages, interactable components are pre-placed by you while still allowing Tambo to modify their props. ## Creating Interactable Components The easiest way to make a component interactable to Tambo is by using `withInteractable`. Pass in your component, a name, a description, and the props schema, and get an interactable version of your component that Tambo knows about. 1. **Build the presentational component.** Use `useEffect` to keep any local UI state aligned with incoming props from Tambo. ```tsx import { useEffect, useState } from "react"; type NoteProps = { title: string; content: string; color?: "white" | "yellow" | "blue" | "green"; }; export function Note({ title, content, color = "yellow" }: NoteProps) { const [draftContent, setDraftContent] = useState(content); useEffect(() => { setDraftContent(content); }, [content]); return (

{title}