Emoji Picker React

A fully customizable, zero-config emoji picker component for React

Library
npm
v4.22.2
1,458 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
83 /100 Excellent
Development Activity 96
Maintenance 72
Community 64
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
74 /100 Good
Architecture 72
Code Quality 74
Innovation 70
Learning Curve 78

emoji-picker-react is a drop-in <EmojiPicker /> component that renders a complete, searchable emoji picker with category navigation, skin-tone selection, and a dedicated “reactions bar” mode for chat-style UIs. It works with no required props out of the box, then layers on deep customization via CSS variables, custom emoji injection, and per-category icon overrides.

The component supports light/dark/auto themes, multiple emoji rendering styles (Apple, Google, Facebook, Twitter, or native system emojis), lazy-loaded emoji images for performance, and built-in i18n data for dozens of languages — making it one of the most complete single-package emoji picker solutions for React apps.

What You Get

  • A zero-config <EmojiPicker /> component with search, category navigation, and skin-tone selection built in
  • A “reactions picker” mode (reactionsDefaultOpen) that renders a compact single-row reaction bar instead of the full picker, common in chat apps
  • Support for custom image-based emojis (customEmojis) alongside the standard emoji set, with a documented data shape
  • Built-in i18n emoji data for dozens of languages, imported and passed via the emojiData prop
  • CSS-variable-based theming (light/dark/auto) plus a getEmojiUrl override for serving emoji images from a custom CDN

Common Use Cases

  • Adding an emoji picker to a chat, comment, or messaging input in a React app
  • Building a reactions bar (like Slack/Discord message reactions) using the compact reactions-picker mode
  • Supporting non-English users with localized emoji search via the built-in language data files
  • Rendering a brand-specific or custom emoji set (e.g. company Slack-style custom emojis) alongside standard Unicode emojis

Under The Hood

Architecture — The root EmojiPickerReact.tsx component composes category navigation, a search bar, a virtualized emoji grid, and a skin-tone/preview footer as independent subcomponents under src/components/. Emoji rendering uses a virtualization module to only render emoji rows near the visible scroll area, keeping the DOM small even though the full emoji dataset (thousands of entries across categories and locales) is loaded. Per-locale emoji data lives under src/data/ as separate importable modules (emojis-es, emojis-ja, etc.) so consumers only bundle the languages they actually import.

Tech Stack — Nearly 100% TypeScript, built with tsdx (zero-config TypeScript package tooling) producing both a build and a build:data step that compiles the emoji/locale datasets separately from the component code. The component depends on the browser window object directly, which is why the README explicitly documents SSR workarounds for Next.js/Remix (dynamic import with ssr: false) and Vite (window.global polyfill).

Code Quality — Tests live in a top-level test/ directory (not colocated with source) organized by concern — components/, hooks/ — covering individual pieces like CategoryButton, ErrorBoundary, SkinTonePicker, useKeyboardNavigation, and useEmojiVirtualization, run via Vitest with a dedicated GitHub Actions tests.yml workflow. An ErrorBoundary component wrapping picker internals is a notable defensive touch for a UI component meant to be dropped into arbitrary host applications.

API Design — The component works with zero required props (<EmojiPicker onEmojiClick={...} /> is a complete integration) while exposing a large, well-documented prop surface (dozens of props covering dimensions, theming, search, categories, and reactions mode) for teams that need deeper control — a common and effective pattern for widely-reused UI components. Keyboard navigation and ARIA labels (searchClearButtonLabel, category icons) suggest accessibility was a design consideration rather than an afterthought.

Used by 14 apps in this directory

TypeScript
89%
MIT

Amical

AI Assistants · Note Taking · Voice AI

1,540

Local-first AI dictation that understands your active app — private, offline, and built for speed.

View details
82
Repo Health
82
Technical
68
Dependency
Built with
TypeScript 89%
Updated 1 weeks ago
TypeScript
92%
GPL 3.0

Blinko

Knowledge Management · Note Taking

11,049

A self-hosted, AI-powered card note-taking tool that lets you capture fleeting thoughts instantly and retrieve them with natural language search.

View details
75
Repo Health
69
Technical
63
Dependency
Built with
TypeScript 92%
Updated 1 months ago
TypeScript
99%
AGPL 3.0

Cherry Studio

AI Assistants

52,202

All-in-one AI desktop client with 300+ assistants and multi-model support

View details
89
Repo Health
84
Technical
70
Dependency
Built with
TypeScript 99%
Updated 4 days ago
Rust
52%
Other

Jan

AI Assistants

44,680

Run LLMs 100% locally with full privacy, or connect to cloud AI — your machine, your data, your control.

View details
90
Repo Health
81
Technical
65
Dependency
Built with
Rust 52%
TypeScript 44%
Updated 4 days ago
TypeScript
97%
Other

Lightdash

Analytics · Data Engineering

6,166

The open-source Looker alternative that turns your dbt project's metrics and dimensions into governed, self-serve charts and dashboards — no license key required.

View details
93
Repo Health
84
Technical
64
Dependency
Built with
TypeScript 97%
Updated 4 days ago
TypeScript
82%
MIT

OpenScreen

Design Tools · Note Taking · Productivity

39,963

Free, open-source screen recorder with zooms, annotations, and system audio capture

View details
52
Repo Health
85
Technical
78
Dependency
Built with
TypeScript 82%
Updated 3 months ago
TypeScript
95%
MIT

Orca

AI Agents · AI Code Assistants

79,834

An open-source Agent Development Environment that orchestrates fleets of parallel AI coding agents — Claude Code, Codex, Gemini and more — each running in its own isolated git worktree.

View details
84
Repo Health
85
Technical
80
Dependency
Built with
TypeScript 95%
Updated 4 days ago
TypeScript
69%
AGPL 3.0

Plane

Collaboration · Productivity · Project Management

59,964

Open-source project management platform to replace Jira, Linear, and ClickUp — with built-in cycles, real-time collaborative docs, and full self-hosting.

View details
90
Repo Health
82
Technical
77
Dependency
Built with
TypeScript 69%
Python 27%
Updated 5 days ago
TypeScript
89%
MIT

Plasmic

CMS · Design Tools · Low Code Platforms

7,048

The open-source visual builder that lets teams design React apps and websites with drag-and-drop while integrating seamlessly with your codebase.

View details
81
Repo Health
78
Technical
64
Dependency
Built with
TypeScript 89%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers