Skip to content

Custom Emojis

Register custom emojis via the provider or per-instance. Each category contains an array of emojis with image sources.

import emojiMartData from '@emoji-mart/data';
import { fromEmojiMart } from 'react-emoji-text/adapters/emoji-mart';
const data = fromEmojiMart(emojiMartData);
<EmojiProvider
data={data}
customEmojis={[
{
id: 'custom',
name: 'Custom',
emojis: [
{
id: 'partyparrot',
name: 'Party Parrot',
keywords: ['party', 'parrot'],
skins: [{ src: '/emojis/partyparrot.gif' }],
},
],
},
]}
>
<EmojiText>:partyparrot:</EmojiText>
</EmojiProvider>

Custom emojis render as <img> elements. If a custom emoji shares the same ID as a built-in emoji, the custom emoji takes precedence.

Each custom emoji requires:

FieldTypeDescription
idstringUnique identifier, used as shortcode
namestringDisplay name
keywordsstring[] (optional)Search keywords
skinsArray<{ src: string }>Image sources (at least one required)

Custom emojis can be referenced by extraAliases. Since custom emojis are indexed before aliases are resolved, aliases can point to custom emoji IDs:

<EmojiProvider data={data} customEmojis={customCategories} extraAliases={{ dance: 'partyparrot' }}>
<EmojiText>:dance:</EmojiText> {/* renders the partyparrot image */}
</EmojiProvider>

Type any built-in shortcode to see it rendered:

hello 👋 world ❤️