Managing tags (skills, categories, labels, etc.) is a common requirement in modern web apps. But most tags input components out there are either too simple or lack flexibility for enterprise-grade use cases.
So, I built a ShadCN UI Tags Input Component — a fully customizable, accessible, and TypeScript-first tags input built on top of:
- ⚛️ React 18+
- 🎯 TypeScript
- 📝 React Hook Form
- 🎞 Framer Motion (smooth animations)
- 🎨 ShadCN/UI + TailwindCSS
This post walks you through why and how to use it in your own projects.
✨ Why Another Tags Input?
The goals were simple:
✅ Enterprise-grade validation (with React Hook Form)
✅ Seamless keyboard support (Enter/Backspace navigation)
✅ Smooth animations with Framer Motion
✅ ShadCN/UI compatibility out of the box
✅ Fully accessible (ARIA-compliant)
🛠 Installation
You’ll need a few peer dependencies:
npm install lucide-react class-variance-authority clsx tailwind-merge cmdk framer-motion react-hook-form
Then add required ShadCN components:
npx shadcn@latest add form input badge
Finally, copy the Tags Input component into your project:
cp components/tags-input-field.tsx your-project/src/components/
💻 Usage Example
Here’s a minimal setup using React Hook Form + the TagsInputField
component:
import { TagsInputField } from "@/components/tags-input-field";
import { useForm, FormProvider } from "react-hook-form";
function MyForm() {
const form = useForm({
defaultValues: {
skills: [],
},
});
return (
<FormProvider {...form}>
<form onSubmit={form.handleSubmit(console.log)}>
<TagsInputField
name="skills"
label="Skills"
placeholder="Enter your skills"
/>
</form>
</FormProvider>
);
}
That’s it — you now have a fully functional tags input with validation, ARIA support, and customization options.
⚡ Features Breakdown
- Variants & Themes – Change size, colors, and layout easily.
- Validation – Built-in error messages via React Hook Form.
- Keyboard Support – Add/remove tags with Enter/Backspace.
- Integration – Works natively with ShadCN form, input, and badge components.
- Customizable – Set max tags, prevent duplicates, enable suggestions.
- Accessibility – ARIA-compliant for screen readers.
📚 Full Documentation
🏁 Wrap Up
If you’re using ShadCN/UI in your React app and need a production-ready tags input, this component will save you tons of boilerplate.
💡 I’d love feedback and contributions! Check out the GitHub repo here:
🔗 GitHub: ShadCN UI Tags Input
🔥 Next steps: I’m considering adding autocomplete suggestions and drag-and-drop reordering.
Would that be useful for your use case?
Top comments (0)