I'm in love with Kibo UI. Feels like the missing parts of shadcn/ui. And that's the whole point of the lib. As the docs say: "While shadcn/ui focuses on wrapping primitives from Radix UI, Kibo UI is designed to be a more comprehensive library of components that can be used to
The best way to build your website
Kibo UI is a custom registry of composable, accessible and open source components designed for use with shadcn/ui.
Built with
Functional and fully composable
Kibo UI components are designed to be fully composable so you can build, customize and extend them to your own needs.
Color Picker
Allows users to select a color. Modeled after the color picker in Figma.
Image Zoom
Image zoom is a component that allows you to zoom in on an image.
QR Code
QR Code is a component that generates a QR code from a string.
Code Block
Provides syntax highlighting, line numbers, and copy to clipboard functionality for code blocks.
function MyComponent(props) { return ( <div> <h1>Hello, {props.name}!</h1> <p>This is an example React component.</p> </div> );}
Dropzone
Allows users to drag-and-drop files into a container to upload or process them.
Marquee
Marquees are a great way to show a list of items in a horizontal scrolling motion.
Building blocks for interfaces
Get your apps and websites up and running quickly with precomposed and animated blocks.
AI Chatbot
Use Kibo UI components to create a fully featured AI chatbot interface.
Can you explain how to use React hooks effectively?
React Hooks Best Practices
React hooks are a powerful feature that let you use state and other React features without writing classes. Here are some tips for using them effectively:
Rules of Hooks
- Only call hooks at the top level of your component or custom hooks
- Don't call hooks inside loops, conditions, or nested functions
Common Hooks
- useState: For local component state
- useEffect: For side effects like data fetching
- useContext: For consuming context
- useReducer: For complex state logic
- useCallback: For memoizing functions
- useMemo: For memoizing values
Example of useState and useEffect
function ProfilePage({ userId }) { const [user, setUser] = useState(null); useEffect(() => { // This runs after render and when userId changes fetchUser(userId).then(userData => { setUser(userData); }); }, [userId]); return user ? <Profile user={user} /> : <Loading />;}
Would you like me to explain any specific hook in more detail?
Yes, could you explain useCallback and useMemo in more detail? When should I use one over the other?
useCallback vs useMemo
Both hooks help with performance optimization, but they serve different purposes:
useCallback
useCallback
// Without useCallback - a new function is created on every renderconst handleClick = () => { console.log(count);};// With useCallback - the function is only recreated when dependencies changeconst handleClick = useCallback(() => { console.log(count);}, [count]);
useMemo
useMemo
// Without useMemo - expensive calculation runs on every renderconst sortedList = expensiveSort(items);// With useMemo - calculation only runs when items changeconst sortedList = useMemo(() => expensiveSort(items), [items]);
When to use which?
-
Use useCallback when:
- Passing callbacks to optimized child components that rely on reference equality
- Working with event handlers that you pass to child components
-
Use useMemo when:
- You have computationally expensive calculations
- You want to avoid recreating objects that are used as dependencies for other hooks
Performance Note
Don't overuse these hooks! They come with their own overhead. Only use them when you have identified a genuine performance issue.
Collaborative Canvas
Create an online, realtime collaborative canvas with Kibo UI components.



Pricing
A pricing page with a list of plans and features.
Simple, transparent pricing
Managing a business is hard enough, so why not make your life easier? Our pricing plans are simple, transparent and scale with you.
The perfect starting place for your web app or personal project.
Free forever.Everything you need to build and scale your business.
Critical security, performance, observability and support.
Get in touch for pricing.What people are saying
We're proud to have a community of users who love using Kibo UI.
Was looking for a stack dialog component for shadcn - came across amazing Kibo UI components by @haydenbleasel It's really NUTS 🔥 kibo-ui.com/components
Extend your #shadcnui toolkit with Kibo UI! Adds complex, open-source components like Gantt, Kanban, Editor, Color Picker, Dropzone & more directly into your #React project 👉 next.jqueryscript.net/shadcn-ui/comp… #WebDev #UI
I was exploring kibo-ui.com/overview by @haydenbleasel - amazing work. Cherry on the top: Cool codebase: github.com/haydenbleasel/… Just one question: Is it possible to add dependencies to gantt chart - what would be the starting point for accomplishing this?
Kibo-UI has a pretty good sandbox component for fumadocs. kibo-ui.com/components/san…
Обратил свое внимание на Kibo UI это база более сложных компонентов, которая расширяет идеи shadcn/ui Всякие kanban, gant, редактор и прочее Выглядит интересно, но на первый взгляд сыровато
Definitely, components that contain time jobs are maybe the hardest things. I can also recommend this kibo-ui.com/components/gan… from @haydenbleasel
realised kibo ui exists gonna try it out ASAP
So clean
Its Amazing Thanks
this is an awesome set! love how many advanced components exist in kibo
Awesome work!
Thank you. Blocks are really nice. I've been hoping for ShadCN to add an AI input block for a while, and it's great to see the one you created!
This looks great 👍, thank you for sharing this gem 💎
We need moar components! Moarrrr 🥲🥲🥲
Very nice
looks great, Hayden!
Get started with Kibo UI
Install your first component in seconds with the Kibo UI or shadcn CLI.
npx kibo-ui@latest add gantt