Back to components
ElementForm & InputFree

Emoji Rating Scale React component

A five-face satisfaction rating for quick feedback: hand-drawn faces from a frown to a wide smile that wobble on hover, fill with their own colour and pop when picked, a label that rolls in underneath, and full keyboard support as a radio group.

About the Emoji Rating Scale component

Emoji Rating Scale is a five-face satisfaction rating, from a frown to a wide smile. Hovering a face makes it wobble and shows its label, and picking one fills it with that level's color and gives it a small pop. The faces are drawn as SVG, so they look the same on every device and take any color.

value or defaultValue sets the rating from 1 to 5, or null for none, and onValueChange reports it. options replaces the five labels and colors (Terrible, Bad, Okay, Good, Great by default), worst first. size picks sm, md or lg, showLabel shows the picked label under the faces, and allowClear lets a second click on the picked face clear the rating. It is a radio group, so arrow keys, Home and End move between faces, and the hover and pop animations are skipped under reduced motion.

When to use it

Use Emoji Rating Scale for fast, low-effort feedback: after checkout, support chats, onboarding steps, or an in-app 'How are we doing?' prompt.

For precise product reviews use Rating Stars; for yes/no feedback a thumbs pair is simpler.

Installation

Add the Emoji Rating Scale component to your project with the shadcn CLI. It lands in components/emoji-rating-scale.tsx as plain React + Tailwind CSS source you own and can edit.

Install
Copied!
npx shadcn@latest add @reactframe/emoji-rating-scale

Or copy the source by hand and install its dependencies:

Install
Copied!
npm install motion clsx tailwind-merge

Related components

Inline Link Button
Free
Glossy Gradient Button
Free
Icon Action Button
Free
Callout
Free
Alert Toast
Free
Menubar
Free