Stop styling the native <select>. You're going to lose. π₯
Long lists, async options, form validation, icons, the stock browser select wasn't built for any of it. So I stopped fighting it. π οΈ
I put together 13+ shadcn select patterns I actually reach for when building real forms:
π Grouped options for lists that won't stay flat
π Controlled state + React Hook Form integration (the part everyone gets wrong)
β‘ Async/dynamic options from an API
π Scrollable long lists, icons, disabled states, animated open/close
Every variation builds on the same base structure β so the mental model never changes, you just compose. π§©
π Code + live previews for each one here: https://www.shadcndeck.com/blog/shadcn-select-component

Your upvotes and feedback are welcome!
Words have more power than we think. Be kind.