react-colorful

A tiny, dependency-free color picker component for React and Preact apps

Library
npm
v5.8.1
3,561 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
56 /100 Fair
Development Activity 40
Maintenance 32
Community 52
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
83 /100 Excellent
Architecture 82
Code Quality 88
Innovation 78
Learning Curve 85

react-colorful is a color picker component for React (and Preact) applications that ships at roughly 2.8 KB gzipped with zero runtime dependencies. It provides ready-made picker components for every common color model — HEX, RGB(A), HSL(A), and HSV(A), both as objects and as CSS-formatted strings — so teams can drop in exactly the input/output shape their app already uses instead of writing conversion glue code themselves.

Beyond raw size, the library is built entirely with hooks and functional components, is tree-shakeable so unused pickers never reach the bundle, and follows WAI-ARIA guidelines for keyboard and screen-reader accessibility. It works out of the box on both mouse and touch devices, including inside iframes and Shadow DOM, making it a common default choice whenever a project needs a color picker without pulling in a heavier dependency like react-color.

What You Get

  • Fourteen ready-to-use picker components covering HEX, HEX+alpha, RGB(A), HSL(A), and HSV(A) — both as structured objects and as CSS-formatted strings
  • A standalone HexColorInput text field component that pairs with any picker for typed/pasted color entry, with optional # prefix and alpha support
  • Full TypeScript typings shipped in the package itself, including exported types for each color model (e.g. HslColor, RgbaColor)
  • Touch, mouse, keyboard, and screen-reader support out of the box, following WAI-ARIA guidelines
  • Works correctly inside iframes and Shadow DOM via a setNonce utility and window-aware event handling
  • Drop-in Preact compatibility through standard React-to-Preact aliasing

Common Use Cases

  • Adding a color picker to a design-tool, theme editor, or CMS without inflating bundle size
  • Building a custom color-input UI (e.g. a popover trigger) on top of the headless picker primitives
  • Letting users type, paste, or copy a HEX value alongside the visual picker via HexColorInput
  • Embedding a color picker inside an iframe-based editor or a Shadow DOM web component

Under The Hood

Architecture - Every picker component (e.g. HexColorPicker, RgbaColorPicker) is a thin wrapper around a shared ColorPicker in src/components/common/ColorPicker.tsx, which composes a Saturation panel and a Hue/Alpha slider on top of a common Interactive primitive (src/components/common/Interactive.tsx) that normalizes mouse and touch drag events into a single {left, top} coordinate. Internal state is always tracked in HSVA regardless of the public color format, via the useColorManipulation hook (src/hooks/useColorManipulation.ts), which converts incoming color props to HSVA, caches the last synced value in a ref to avoid update loops, and converts back to the target format before calling onChange/onChangeEnd. Each color-model-specific component (HEX, RGB, HSL, HSV, and their alpha/string variants) supplies its own ColorModel object (src/types.ts) with toHsva/fromHsva/equal functions, so adding or swapping a format is a matter of providing new conversion functions rather than touching the interaction logic.

Tech Stack - Written entirely in TypeScript with functional components and hooks (React 16.8+ and Preact are supported as peer dependencies, not bundled). The library has zero runtime dependencies, and styling is inlined via a useStyleSheet hook (src/hooks/useStyleSheet.ts) that injects CSS into the document rather than requiring a separate stylesheet import, with setNonce support for CSP-restricted environments. It’s built with microbundle, producing CJS, ESM, and UMD outputs plus bundled .d.ts types, and distributed at roughly 2.8 KB gzipped per bundlephobia.

Code Quality - The tests/ directory (778 lines across components.test.js and utils.test.js) exercises the public API with @testing-library/react, including synthetic mouse/touch event simulation (a custom FakeMouseEvent class) and dedicated coverage for CSP nonce handling (csp.test.js) and Shadow DOM rendering (shadowDom.test.js). Conversion utilities (src/utils/convert.ts) are pure functions with narrow, single-purpose helpers (clamp, round, compare), and the codebase consistently uses small, well-commented modules — e.g. useEventCallback.ts is an 11-line hook solving one specific problem (stale closures in callbacks) rather than pulling in a general-purpose library for it.

API Design - The public surface is deliberately minimal: every picker accepts just color, onChange, and an optional onChangeEnd, plus standard div props like className and style for styling hooks. Naming is consistent and predictable across all fourteen components (<Model><Alpha?><String?>ColorPicker), so once a developer learns one picker, the rest follow the same pattern with no additional documentation lookup required. The README documents every prop, supported color model, and customization path (CSS overrides, HexColorInput pairing) with runnable CodeSandbox links, keeping the barrier to a working integration very low.

Used by 37 apps in this directory

TypeScript
98%
Other

Outline

Collaboration · Knowledge Management

41,045

A fast, real-time collaborative knowledge base for growing teams built on React, Node.js, and ProseMirror.

View details
91
Repo Health
87
Technical
68
Dependency
Built with
TypeScript 98%
Updated 5 days ago
TypeScript
99%
Other

Papermark

Digital Signiture · File Storage

9,263

Open-source DocSend alternative with page-by-page analytics, secure data rooms, and custom domains for document sharing.

View details
78
Repo Health
63
Technical
66
Dependency
Built with
TypeScript 99%
Updated 2 months ago
TypeScript
81%
AGPL 3.0

Postiz

Automation · Social Media

37,683

The agentic social media scheduler — AI-powered content creation, 33-platform posting, and team workflows, all self-hosted.

View details
92
Repo Health
70
Technical
63
Dependency
Built with
TypeScript 81%
JavaScript 11%
Updated 6 days ago
Ruby
62%
BSD 3

Spree Commerce

CRM · Ecommerce · Marketing

15,774

Open-source headless eCommerce platform with a REST API, TypeScript SDK, and Next.js storefront for B2B, cross-border, and marketplace commerce — no vendor lock-in, no platform fees.

View details
91
Repo Health
84
Technical
75
Dependency
Built with
Ruby 62%
TypeScript 37%
Updated 6 days ago
TypeScript
89%
Other

strapi

CMS

73,368

Open-source headless CMS that auto-generates REST and GraphQL APIs from your content models, with a fully customizable admin panel you control.

View details
93
Repo Health
84
Technical
63
Dependency
Built with
TypeScript 89%
JavaScript 11%
Updated 6 days ago
TypeScript
67%
Apache 2.0

tabularis

Databases · Developer Tools

5,270

Open-source desktop SQL workspace with built-in PostgreSQL, MySQL, and SQLite drivers, SQL notebooks, a visual query builder, and a built-in MCP server for AI agents like Claude and Cursor.

View details
84
Repo Health
89
Technical
66
Dependency
Built with
TypeScript 67%
Rust 31%
Updated 5 days ago
TypeScript
98%
Apache 2.0

TinaCMS

CMS

13,845

An open-source, Git-backed headless CMS that gives editors a live visual editing UI over Markdown, MDX, JSON, and YAML content while developers keep everything in version control.

View details
92
Repo Health
74
Technical
59
Dependency
Built with
TypeScript 98%
Updated 6 days ago
Python
68%
AGPL 3.0

Tracecat

AI Agents · Automation · Security

3,860

Open-source agentic security automation platform that runs AI agents and durable workflows at scale with sandboxed execution.

View details
89
Repo Health
88
Technical
66
Dependency
Built with
Python 68%
TypeScript 30%
Updated 5 days ago
TypeScript
90%
AGPL 3.0

useSend

Developer Tools · Marketing

4,753

Self-hostable open source email platform built on Amazon SES with a full dashboard, SMTP relay, REST API, and multi-language SDKs.

View details
76
Repo Health
72
Technical
68
Dependency
Built with
TypeScript 90%
Updated 1 weeks 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