Skip to content
Introducing AI Conversations: Natural Language Interaction for Your Apps! Learn More

ChatView

A production-ready chat UI control that handles message bubbles, typing indicators, reactions, pagination, smart scrolling, and input — so you can focus on your messaging logic instead of pixel-pushing.

  • NuGet downloads for Shiny.Maui.Controls
  • NuGet downloads for Shiny.Blazor.Controls
Frameworks
.NET MAUI
Blazor
ChatView
FeatureMAUIBlazor
Message bubbles with grouping & timestamps
Multi-person chat with avatars & colors
Typing indicators (animated dots)
Image messages
Link auto-detection
Acknowledgement reactions (emoji badges)
Smart scroll & unread pill
Load-more pagination
DateSent pending state (dimmed bubble, offline support)
Input bar with attach button
Per-message bubble tools (⋯ menu)
Input bar tools (FAB menu)
Custom message templates
Speech-to-text input
Text-to-speech bubble tool
Haptic feedback
xmlns:shiny="http://shiny.com/controls"
<shiny:ChatView Messages="{Binding Messages}"
SendCommand="{Binding SendCommand}"
MyBubbleColor="#DCF8C6"
OtherBubbleColor="White" />
public partial class ChatViewModel : ObservableObject
{
[ObservableProperty] ObservableCollection<ChatMessage> messages = [];
[RelayCommand]
void Send(string text)
{
Messages.Add(new ChatMessage
{
Text = text,
SenderId = "me",
IsFromMe = true,
Timestamp = DateTimeOffset.Now
});
}
}
@using Shiny.Blazor.Controls.Chat
<div style="height: 600px;">
<ChatView Messages="messages"
SendCommand="OnSend"
MyBubbleColor="#DCF8C6"
OtherBubbleColor="#FFFFFF" />
</div>
@code {
List<ChatMessage> messages = new();
Task OnSend(string text)
{
messages.Add(new ChatMessage
{
Text = text,
SenderId = "me",
IsFromMe = true,
Timestamp = DateTimeOffset.Now
});
StateHasChanged();
return Task.CompletedTask;
}
}
SectionWhat You’ll Learn
Getting StartedFull setup, packages, first working chat
MessagesSending, images, links, pending state, identifiers
Participants & AvatarsMulti-person mode, avatars, per-user colors
Typing IndicatorsAnimated dots, toast pills, scroll-aware behavior
Scrolling & PaginationSmart scroll, unread pill, load-more, scroll-to-message
AcknowledgementsEmoji reactions, grouping, dynamic updates
Bubble ToolsPer-message action menus, built-in & custom tools
Input Bar & ToolsInput config, FAB tools, speech-to-text
Message TemplatesCustom rendering with DataTemplate/DataTemplateSelector
ScenariosAI assistant, customer support, group chat, read-only
API ReferenceFull property, command, method & event tables
claude plugin marketplace add shinyorg/skills
claude plugin install shiny-controls@shiny
copilot plugin marketplace add https://github.com/shinyorg/skills
copilot plugin install shiny-controls@shiny
View shiny-controls Plugin