A modernized, lightweight, and dependency-free TypeScript fork of the highly popular legacy react-color library.
This repository brings the classic color pickers (Sketch, Photoshop, Chrome, etc.) into the modern era, fully compatible with React 19, while completely eliminating legacy bloat and ensuring long-term maintainability.
🎨 Try the Live Demo — All pickers, fully interactive. Compare side-by-side with the original react-color.

react-color library was brilliantly designed and created by Case Sandberg (@casesandberg). All credit for the iconic UI designs, component structures, and the original reactCSS paradigm goes to him.Version 4.0 marks a significant milestone in the evolution of this fork, moving from a "modernized wrapper" to a completely rebuilt internal architecture.
tinycolor2) and replaced it with a custom, high-precision internal color engine.reactCSS engine. Styles are now handled via native React inline styles, making the library even lighter and faster.className and style props out of the box.The original react-color library was a staple in the React ecosystem but suffered from significant bit-rot:
lodash, lodash-es, and @icons/material.reactcss Abandonment: The underlying styling engine (reactcss) was unmaintained, throwing numerous deprecation warnings and causing performance bottlenecks.@types.lodash, material-colors, and external icon libraries.reactcss engine with pure React inline styles, ensuring zero overhead and better performance.tsup to output optimized ESM and CommonJS bundles.import React, { useState } from 'react'
import { SketchPicker } from 'replace-react-color'
export const Component = () => {
const [color, setColor] = useState('#fff')
return (
<SketchPicker
color={color}
onChangeComplete={(newColor) => setColor(newColor.hex)}
/>
)
}
You can now style any picker using standard React props:
<ChromePicker
className="my-custom-picker"
style={{ boxShadow: 'none', border: '1px solid #eee' }}
/>
The legacy styles prop (from the original react-color) is still supported for backward compatibility but is now considered deprecated. We recommend migrating to the standard style and className props.
Migrating from the legacy react-color is a seamless, drop-in replacement.
npm uninstall react-color @types/react-color
npm install replace-react-color
// OLD: import { SketchPicker } from 'react-color'
// NEW:
import { SketchPicker } from 'replace-react-color'
You no longer need to use --legacy-peer-deps or worry about console flooding with deprecation warnings. You can now safely upgrade your application to React 18 or React 19!
You can import AlphaPicker, BlockPicker, ChromePicker, CirclePicker, CompactPicker, GithubPicker, HuePicker, MaterialPicker, PhotoshopPicker, SketchPicker, SliderPicker, SwatchesPicker, and TwitterPicker.