explaingit

jassisingh08/rn-expo-emoji-picker

Analysis updated 2026-05-18

19TypeScriptAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

A ready made emoji picker component for React Native apps, with a choice of scrolling engines, skin tones, recents, and a WhatsApp style reaction bar.

Mindmap

mindmap
  root((emoji picker))
    What it does
      Emoji grid component
      Skin tone support
      Recents and reactions
    Tech stack
      TypeScript
      React Native
      Expo Modules
    List engines
      FlashList
      LegendList
      FlatList fallback
    Use cases
      Chat apps
      Reaction bars
      Custom keyboards
    Setup
      React 19 required
      New Architecture only
      Optional native rows

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Add a full featured emoji picker to a chat or messaging app without building one from scratch.

USE CASE 2

Build a WhatsApp style quick reaction bar under messages using the bundled reaction component.

USE CASE 3

Swap between FlashList, LegendList, or FlatList as the scrolling engine to match an app's existing dependencies.

USE CASE 4

Ship a smoother native row renderer in production builds while still working in Expo Go via automatic fallback.

What is it built with?

TypeScriptReact NativeExpoFlashListLegendList

How does it compare?

jassisingh08/rn-expo-emoji-pickeravacocloud/avaco-denodoorman11991/budget-aware-mcp
Stars191919
LanguageTypeScriptTypeScriptTypeScript
Setup difficultyeasymoderateeasy
Complexity2/53/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 30min

Requires React 19+, React Native 0.79+, and the New Architecture enabled (default on Expo SDK 53/54).

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

rn-expo-emoji-picker is a ready made emoji picker component for React Native apps. It is built specifically for React Native's newer architecture, and it lets a developer choose which underlying scrolling engine powers the picker, either FlashList, LegendList, or the older FlatList, depending on what the rest of the app already uses. It works both inside Expo apps and in bare React Native apps without Expo. The picker's core logic is pure JavaScript, so it works out of the box in Expo Go with no extra native setup. For apps that build their own custom version of the app, there is an optional native row renderer that draws each emoji row as a real native view instead of a JavaScript one, which can make scrolling feel smoother on long lists. If that native piece is not available, such as inside Expo Go, the picker automatically falls back to the plain JavaScript rows, so the same code works everywhere without extra checks. Beyond the basic grid of emoji, the picker supports skin tone selection both globally and per emoji through a long press, a recently used section that can be saved through a pluggable storage system, and a reaction bar component styled like the quick reaction menu seen in chat apps such as WhatsApp. Search is debounced and runs against an index that is built ahead of time rather than parsed while the app is running, which keeps typing responsive. The picker also supports light and dark themes, an automatic mode that follows the system setting, and customizable text strings for different languages. Installing it is a matter of adding the package along with whichever list engine library you want to pair it with, since those engines are optional dependencies rather than bundled in. The component is designed to fill whatever space its parent container gives it, so it needs to be placed inside a screen, bottom sheet, or modal with a defined height. The project requires React 19 or newer and React Native 0.79 or newer with the new architecture turned on, which is already the default starting with Expo SDK 53. It is released under the MIT license, a permissive license that allows free use including in commercial projects.

Copy-paste prompts

Prompt 1
Show me how to install rn-expo-emoji-picker with the default FlashList engine in my Expo app.
Prompt 2
Help me wire up the EmojiPicker component's onEmojiSelected callback to insert an emoji into a text input.
Prompt 3
Explain how to enable the native row renderer for this emoji picker in a dev build without breaking Expo Go.
Prompt 4
Show me how to add a persistent recently-used emoji list using a custom storage adapter with this picker.

Frequently asked questions

What is rn-expo-emoji-picker?

A ready made emoji picker component for React Native apps, with a choice of scrolling engines, skin tones, recents, and a WhatsApp style reaction bar.

What language is rn-expo-emoji-picker written in?

Mainly TypeScript. The stack also includes TypeScript, React Native, Expo.

What license does rn-expo-emoji-picker use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is rn-expo-emoji-picker to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is rn-expo-emoji-picker for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.