Migrate from rn-emoji-keyboard
EmojiPickerSheet takes visible and onClose like the other sheets, and onSelect gets the emoji string first. Search and recently used are on by default. Skin tones are built in, and the category bar sits where the platform's own emoji keyboard has it. For a picker inside your own layout, use EmojiPicker.
rn-emoji-keyboard 1.7.0, the latest release, calls InteractionManager.runAfterInteractions. React Native 0.88 no longer exports InteractionManager, so the keyboard throws Cannot read property 'runAfterInteractions' of undefined when it renders. EmojiPicker uses React Native core only and works on 0.88.
- import EmojiPicker from 'rn-emoji-keyboard';
+ import { EmojiPickerSheet } from '@elik56a/react-native-pickers';
- <EmojiPicker open={open} onClose={() => setOpen(false)} onEmojiSelected={(e) => setEmoji(e.emoji)} />
+ <EmojiPickerSheet visible={open} onClose={() => setOpen(false)} onSelect={setEmoji} />
| rn-emoji-keyboard | React Native Pickers |
|---|---|
open | visible |
onClose / onRequestClose | onClose |
onEmojiSelected({ emoji, name, … }) | onSelect(emoji, data); data has name, keywords, category, version, skins |
allowMultipleSelections | closeOnSelect={false} |
enableSearchBar | searchable (on by default) |
enableRecentlyUsed | showRecent (on by default); recent / onRecentChange to keep them |
categoryPosition="top" | "bottom" | categoryBarPosition="top" | "bottom" |
disabledCategories | categories lists the ones to show |
categoryOrder | the order of categories |
emojiSize | emojiSize |
defaultHeight | sheetProps={{ height }} |
translation | categoryLabels, searchPlaceholder, emptyText |
theme / styles | theme tokens and styles slots |
selectedEmojis | no equivalent |
| — | maxEmojiVersion to hide emoji older phones can't draw, exclude |
See EmojiPicker for skin tones, recents and the field.
See all migration guides for other libraries, and Comparison for when another library is the better choice.