Skip to main content

Custom emoji

Unicode emoji

ChatUI ships a default Unicode emoji list. Call cloneChatEmojiLibrary, edit, then setChatEmojiLibrary.

ChatUIEmojiLibrary fields:

FieldDescription
iconTab icon URL for the emoji panel (SVG recommended).
chatsArray of Unicode characters.
TypeScript
const library = app.cloneChatEmojiLibrary();
library.icon = 'https://example.com/emoji-tab.svg';
library.chats.push('📚');
app.setChatEmojiLibrary(library);
tip

Set the Unicode emoji library before app.ready().

tip

Reference artwork.

Image / GIF sticker packs

There are no built-in image packs, but you can configure any number of ImageEmojiLibrary objects with cloneImageEmojiLibraries / setImageEmojiLibraries. Taps send as image or GIF messages depending on the asset and ImageEmoji metadata.

Library shape:

FieldDescription
idYour pack id.
iconTab icon for switching packs.
orderSort order; lower values first.
itemWidth / itemHeightCell size in the picker.
itemsArray of ImageEmoji.

Each ImageEmoji:

FieldDescription
urlRemote asset URL reachable from clients.
imageThumbnailOptional static thumbnail (ImageEmojiThumbnail); field names match SDK spelling (thumbnail, thunbnailWidth, thunbnailHeight).
gifInfoOptional GifInfo so the client can send as GIF when appropriate.
TypeScript
import type { ImageEmojiLibrary } from '@nexconn/chatui';

const libraries = app.cloneImageEmojiLibraries();
const sticker: ImageEmojiLibrary = {
id: 'my-stickers',
icon: 'https://example.com/tab.svg',
order: 0,
itemWidth: 72,
itemHeight: 72,
items: [
{
url: 'https://example.com/a.png',
imageThumbnail: {
thumbnail: 'data:image/png;base64,...',
thunbnailWidth: 72,
thunbnailHeight: 72,
},
},
],
};
libraries.push(sticker);
app.setImageEmojiLibraries(libraries);

Unlike most other UI customization APIs, setImageEmojiLibraries can still be called after ready().