# Showing Responses
URL: /concepts/message-threads/showing-responses
### Showing thread messages and components
Since tambo keeps the thread state updated, all you need to do is show the thread's messages somewhere. If a message from tambo includes a component, it can be accessed with `message.renderedComponent`:
```tsx
const { thread } = useTamboThread()
...
thread.messages.map((message) => (
Sent by: {message.role}
message text: {message.content[0]?.text}
component: {message.renderedComponent}
))
```
For canvas-style UIs where you want to display only the most recent component, you can walk backwards through the messages to find the latest one with a `renderedComponent`:
```tsx
const latestComponent = thread.messages
.slice()
.reverse()
.find((message) => message.renderedComponent)?.renderedComponent;
...
{latestComponent}
```
This approach is useful for building interactive canvases, dashboards, or any UI where you want to show the most up-to-date component state without displaying the full conversation history.