Skip to main content

Discord messages.
Without screenshots.

Create dynamic Discord message examples with React.

announcement.jsxComponents V2
import React, { useState, useEffect } from "react";
import { DiscordUI, Message } from "@arcscord/discord-ui";
import "@arcscord/discord-ui/styles.css";

const previewTheme = "dark";

const announcement = {
"id": "launch",
"author": {
"id": "demo-bot",
"displayName": "Community Bot",
"bot": true,
"color": "#a7a9ff",
"avatarFallback": {
"background": "#6055a8",
"letter": "A"
}
},
"timestamp": "2026-11-01T10:00:00Z",
"body": {
"kind": "components-v2",
"components": [
{
"id": "launch-card",
"kind": "container",
"accentColor": "#a7a9ff",
"components": [
{
"id": "title",
"kind": "text-display",
"content": "## Your next adventure starts here.\nNew places. Familiar faces. A whole community to explore."
},
{
"id": "cover",
"kind": "media-gallery",
"items": [
{
"id": "cover-image",
"url": "/examples/landscape.svg",
"alt": "An illustrated mountain landscape"
}
]
},
{
"id": "details",
"kind": "text-display",
"content": "**Community night · Friday, 18:00 UTC**\nBring your friends. We’ll bring the quests."
},
{
"id": "actions",
"kind": "action-row",
"buttons": [
{
"id": "explore",
"kind": "link-button",
"label": "Build a message like this",
"url": "https://ui.arcscord.dev/playground?example=announcement"
}
]
}
]
}
]
}
};

const Example = (function AnnouncementExample({ theme }) {
const [message, setMessage] = useState(announcement);
useEffect(() => {
const url = new URL("/playground?example=announcement&theme=" + theme, window.location.origin).href;
setMessage({ ...announcement, body: { ...announcement.body, components: announcement.body.components.map(card => ({
...card, components: card.components.map(component => component.kind === "action-row"
? { ...component, buttons: component.buttons.map(button => ({ ...button, url })) }
: component),
})) } });
}, [theme]);
return <Message message={message} />;
});

export default function Preview({ theme = previewTheme } = {}) {
return (
<DiscordUI theme={theme} locale="en-US" timeZone="UTC"
entities={{"users":{"123456789012345678":{"name":"Inès"}}}}>
<Example theme={theme} />
</DiscordUI>
);
}
One message. Many possibilities.
Community BotAPP
Your next adventure starts here.
New places. Familiar faces. A whole community to explore.
Community night · Friday, 18:00 UTC
Bring your friends. We’ll bring the quests.
Rendered with the real React components.Edit this announcement →

Every conversation. All the context.

Turn a resolved ticket into a readable transcript. Replies, files and threads included.

● Resolved ticket · 6 messages

ticket-1042

Resolved · Welcome message setup

  1. Inès
    Hi! My welcome message never appears when someone joins. Could you help?
  2. InèsMy welcome message never appears when someone joins.
    Alex
    Of course. Which channel should it appear in?
  3. Inès
    In #welcome. Here’s the configuration I’m using.
  4. Alex
    The config looks good. Let’s check the channel permissions together.
  5. Inès(edited)
    It works! The first welcome just came through. Thanks for the quick help.
  6. Alex
    All sorted. I’ve marked this ticket as resolved. Have a great community launch!
    💜1
A saved conversation. Open “Permission check” to see the thread.Edit this transcript →

Less watching. More playing.

Roll a die. Take a quiz. Ask the eight ball. Three commands, real UI interactions.

Type / to start playing
Try a command

bot-playground

Three commands. A few little surprises.

  1. ArcadeAPP
    Ready to play?
    Type / below to roll a die, try a quiz or ask the magic eight ball.

    Pick a shortcut above if you need a starting point.
Simulated in your browser. No Discord connection required.Edit this arcade →

Your next example starts here.

Add Discord UI to your React project.