Skip to main content
Components allow you to add interactive elements to modals and the messages your app sends. They’re accessible, customizable, and easy to use. To use components, messages must be sent with the IS_COMPONENTS_V2 flag (1<<15). Note that using this flag disables traditional content and embeds—all content must be sent as components instead.
Legacy message component behavior will not be deprecated and will continue to be available to your apps on a message-by-message basis. However, we recommend using the new components for new projects and features.

Using Message Components

A guide on sending message components with examples.

Component Reference

Explore the complete components reference documentation.

Interactions Overview

Learn how components integrate with the interactions system.

Component Categories

Components are organized into three categories based on their purpose:

Layout Components

Layout components organize and structure the visual presentation of your message:
  • Action Row (type 1) — A top-level container for a row of interactive components. Can hold up to 5 buttons or a single select menu.
  • Section (type 9) — Associates text content with an accessory component (like a button or thumbnail) side by side.
  • Separator (type 14) — Adds vertical padding and a visual divider between other components.
  • Container (type 17) — Visually groups a set of components with an optional accent color bar.
  • Label (type 18) — Wraps modal components with a label and optional description. Used in modals instead of Action Row.

Content Components

Content components display static text, images, and files:
  • Text Display (type 10) — Renders markdown-formatted text. Behaves similarly to the message content field but allows multiple instances.
  • Thumbnail (type 11) — A small image used as an accessory in a Section. Supports GIF and WEBP.
  • Media Gallery (type 12) — Displays 1–10 images or media items in an organized gallery.
  • File (type 13) — Displays an uploaded file attachment.

Interactive Components

Interactive components respond to user input and generate interaction events:
  • Button (type 2) — A clickable element with customizable style, label, and emoji. Must be inside an Action Row or Section accessory.
  • String Select (type 3) — A dropdown with developer-defined options. Available in messages and modals.
  • Text Input (type 4) — A single- or multi-line text field. Only available in modals.
  • User Select (type 5) — A dropdown auto-populated with server members.
  • Role Select (type 6) — A dropdown auto-populated with server roles.
  • Mentionable Select (type 7) — A dropdown auto-populated with users and roles.
  • Channel Select (type 8) — A dropdown auto-populated with server channels. Can be filtered by channel type.
  • File Upload (type 19) — Allows users to upload files in modals. Only available in modals.
  • Radio Group (type 21) — A single-choice set of options. Only available in modals.
  • Checkbox Group (type 22) — A multi-selectable group of checkboxes. Only available in modals.
  • Checkbox (type 23) — A single yes/no checkbox. Only available in modals.

Using the IS_COMPONENTS_V2 Flag

When you send a message with the IS_COMPONENTS_V2 flag (1 << 15, value 32768), the following changes apply:
  • The content and embeds fields no longer work. Use Text Display and Container instead.
  • Attachments won’t show by default—they must be exposed through File components.
  • The poll and stickers fields are disabled.
  • Messages allow up to 40 total components.
Once a message has been sent with the IS_COMPONENTS_V2 flag, the flag cannot be removed from that message when editing.

Get Help & Join the Community

Do you have a question or want to connect with other app developers? Join the DDevs Discord Server and get help from the community, share best practices, and discover new ways to enhance your apps.