NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4220 most downloaded on npm
🎨 A tiny (3,1 KB) color picker component for React and Preact apps. Fast, well-tested, dependency-free, mobile-friendly and accessible
Last release 1 months ago
01 Sep 2026
Ships unpredictably
gaps range from 2 weeks to 3.7 years
Nearly every release is documented
notes for 56 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
74 releases · first in 2020
One column per quarter.
Fix RGB channels drifting when only the alpha channel is changed: { r: 200, g: 120, b: 35 } no longer becomes { r: 199, g: 119, b: 34 } after moving t
{ r: 200, g: 120, b: 35 } no longer becomes { r: 199, g: 119, b: 34 } after moving the alpha slider. Thanks to @t-hamano for the investigation (via #234, fixes #163)The picker now works inside Shadow DOM. When mounted inside a shadow tree, the component injects its styles into the closest ShadowRoot instead of the
The picker now works inside Shadow DOM. When mounted inside a shadow tree, the component injects its styles into the closest ShadowRoot instead of the document <head>, so it renders correctly in web components and other shadow-DOM-based setups. No API changes required — it just works. (via #232)
ShadowRoot when rendered inside one (via #232)Added onChangeEnd callback that fires when the user finishes changing a color (on mouse up, touch end, or arrow key up). Useful for undo/redo, saving
Added onChangeEnd callback that fires when the user finishes changing a color (on mouse up, touch end, or arrow key up). Useful for undo/redo, saving to a database, or other expensive operations. (via #230)
<HexColorPicker
color={color}
onChange={setColor}
onChangeEnd={(color) => saveToDatabase(color)}
/>
Added onChangeEnd callback that fires when the user finishes changing a color (on mouse up, touch end, or arrow key up). Useful for undo/redo, saving to a database, or other expensive operations. (via #230)
<HexColorPicker
color={color}
onChange={setColor}
onChangeEnd={(color) => saveToDatabase(color)}
/>Fix React 19 TypeScript compatibility (via #229)
Fix React 19 TypeScript compatibility (via #229)
Update export settings to fix Jet 28 issues (via #191)
Add new HexAlphaColorPicker component (via #186)
HexAlphaColorPicker component (via #186)Fix embedding into . The component is rendered correctly by libraries like react-frame-component. Thanks to @leoc4e (via #166)
<iframe>. The component is rendered correctly by libraries like react-frame-component. Thanks to @leoc4e (via #166)Multitouch! ✌️ Thanks to @xnimorz (via #158)
Add new alpha property for HexColorInput to allow "#rgba" and "#rrggbbaa" formats (via #155)
alpha property for HexColorInput to allow "#rgba" and "#rrggbbaa" formats (via #155)Fix potential memory leaks and improve the performance. Thanks to @xnimorz (via #151)
Add new prefixed property for HexColorInput to display "#" prefix (via #146)
prefixed property for HexColorInput to display "#" prefix (via #146)Fix: Make the picker take focus on click (via #143)
Fix "Unable to preventDefault inside passive event listener" (via #141)
Fix rounded corner rendering bug (via #140)
Improve input color parsers to support more CSS color notations and units (via #133)
Fix .mjs file publishing (via #129)
.mjs file publishing (via #129)Export .mjs file to improve different environments and bundlers support. Thanks to @rschristian (via #127)
.mjs file to improve different environments and bundlers support. Thanks to @rschristian (via #127)Add "default" fallback to the exports map (via #124)
"default" fallback to the exports map (via #124)Fix setNonce type declaration file publishing (via #123)
setNonce type declaration file publishing (via #123)The picker complies with the strict CSP (Content Security Policy). The style tag added by the component uses a nonce hash provided by Webpack or the o
style tag added by the component uses a nonce hash provided by Webpack or the one defined manually by the new setNonce function (via #121)The picker supports all HTML attributes and DOM events that a regular tag does (e.g. id or onMouseEnter (via #119)
id or onMouseEnter (via #119)Nothing published for this version
Fix bug when a user releases the mouse button outside of the document bounds (via #99)
Get rid of useLayoutEffect warning when using on the server (via #95)
useLayoutEffect warning when using on the server (via #95)Fix CSS loading in Webpack v5 (via #91)
Disable static class names minification (via #86)
Migrate from CSS modules to static class names (via #84)
Better React 17 support (via #80)
- Round output values (via #77)
Fix pointer rendering bug on Safari 14 (via #74)
Do not display the default focus styles
- 100% code coverage
Better Internet Explorer 11 support (via #65)
The picker follows the WAI-ARIA guidelines to support users of assistive technologies. The component is completely accessible with keyboard navigation
- Simplify gradient CSS styles
Improve pasting from clipboard to HexColorInput
HexColorInputFix: Fast Tap and Release in iOS Safari (via #56)
HsvStringColorPicker and HsvaStringColorPicker components. Thanks to @rschristian (via #48)Resolving TouchEvent error on Firefox. Thanks to @rschristian (via #53)
TouchEvent error on Firefox. Thanks to @rschristian (via #53)Improve Interactive internal typing (via #50)
Interactive internal typing (via #50)Allow to pass custom onBlur callback to HexInput (via #49)
onBlur callback to HexInput (via #49)HexColorInput types (via #49)Alpha channel support (via #47)
Nothing published for this version
Improve TypeScript tooling. Thanks to @rschristian (via #45)
Fix sideEffects to keep CSS-files
sideEffects to keep CSS-filesHexInput props optionaluseEventCallback hook. Thanks to @jeetiss (via #40)Nothing published for this version
Nothing published for this version
Extend allowed HexInput props with HTMLInputElement
HexInput props with HTMLInputElementThe entire codebase was rewritten in TypeScript by @rschristian ❤️ (via #23)
Nothing published for this version
Fix type definitions: make all of the picker props optional
TypeScript types are now bundled with the library. Thanks to @rschristian (via #22)
Make the pointer grabbable even if it is outside of the picket bounds (via #21)
Nothing published for this version
Fix bug if user taps on the picker and does not move the pointer afterward
Add HexInput component that allows to paste and type a HEX color
HexInput component that allows to paste and type a HEX colorReduce the number of folders published to NPM
Interactive to make the bundle lighterFix HSV to RGB conversion algorithm
Support new input/output formats: RGB object, RGB string, HSL object, HSL string, HSV object
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →