Skip to main content

Composer

The default chat input occupies chat.composer, a single slot. A replacement declares kind: "composer" and includes that exact slot, then registers its component there.

A replacement hides the product fallback. Disposing the registration restores the default input. A second replacement is refused: this is an exclusive surface.

Page-scoped lifetime

The chat page declares this slot, so it exists only while chat is mounted. Do not assume a boot-time registration can target it before the page exists. Multichat shares the registration and renders a composer per cell.

If you only need a button beside the existing input, declare chat.composer.action, a list slot, instead. A full replacement decides whether to render those satellite actions itself.

There is no standalone composer template among the supplied examples. The SDK's generic slot API does not document a message-send prop contract for a replacement input. Verify the runtime's chat integration before attempting a full replacement; do not invent send callbacks or props from the slot name alone.