Emoji Picker React

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

Library
npm
v4.19.1
1,452stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
49/100Fair
Development Activity12
Maintenance20
Community64
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
74/100Good
Architecture72
Code Quality74
Innovation70
Learning Curve78

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 13 apps in this directory

TypeScript
84%
MIT

Amical

Note Taking · AI Assistants

1,495

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

View details
79
Repo Health
82
Technical
67
Dependency
Built with
TypeScript84%
Updated 3 weeks ago
TypeScript
92%
GPL 3.0

Blinko

Knowledge Management · Note Taking

10,880

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
83
Repo Health
69
Technical
65
Dependency
Built with
TypeScript92%
Updated 2 weeks ago
TypeScript
99%
AGPL 3.0

Cherry Studio

AI Assistants

50,753

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

View details
88
Repo Health
84
Technical
71
Dependency
Built with
TypeScript99%
Updated today
TypeScript
75%
Other

Jan

AI Assistants

44,052

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
66
Dependency
Built with
TypeScript75%
Rust21%
Updated today
TypeScript
96%
Other

Lightdash

Analytics · Data Engineering

6,056

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
66
Dependency
Built with
TypeScript96%
Updated today
TypeScript
82%
MIT

OpenScreen

Design Tools · Note Taking · Productivity

39,869

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

View details
78
Repo Health
85
Technical
78
Dependency
Built with
TypeScript82%
Updated 2 months ago
TypeScript
97%
MIT

Orca

AI Agents · AI Code Assistants

48,625

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
83
Repo Health
85
Technical
81
Dependency
Built with
TypeScript97%
Updated today
TypeScript
70%
AGPL 3.0

Plane

Productivity · Project Management · Collaboration

56,127

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
89
Repo Health
82
Technical
77
Dependency
Built with
TypeScript70%
Python26%
Updated 2 days ago
TypeScript
84%
MIT

Plasmic

CMS · Low Code Platforms · No Code Platforms

6,961

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
65
Dependency
Built with
TypeScript84%
Updated today

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

Search