Rich-text messages (WebView editor)
The composer (ui.chatRoom.composer.richText, default true) and the Canvas editor use a Lexical editor that runs inside react-native-webview, with a native toolbar (bold, italic, underline, strikethrough, code, link, headings, bullet / numbered lists, alignment) and typeahead menus for @ mentions, # channels and : emoji.
Installation — host app
How it is built (maintainers)
How formatted messages are stored
The backend stores one field: content. Plain messages are plain text; formatted messages are sanitized HTML — the same wire format as the web composer, so messages look the same on both. Received HTML is converted to native Text runs by RichMessageText (headings, lists, quotes, code, links, mention / channel chips) — no WebView per bubble.
Set richText: false for a plain TextInput composer; received formatted messages still render.