Shadcn Evaluation

https://github.com/neetozone/neeto-atoms

Why Shadcn

  • AI-friendly — AI tools generate correct shadcn/Radix code natively

  • Accessibility built-in — keyboard navigation, focus management, and ARIA handled by Radix

  • Tailwind-native — all 15 products already on Tailwind 4

  • RTL support — components automatically adapt for Arabic, Hebrew, and Persian

  • Active ecosystem — strongest community momentum in React UI today

Migration Challenges

  • ~27% of NeetoUI components have no direct shadcn equivalent

  • Prop names, variant names, and composition patterns all change

  • Formik layer — 13 form components, completely different underlying library

  • Table — resize, reorder, virtual scroll, bulk select have no shadcn equivalent

  • NeetoUI and @neeto/atoms will coexist during migration

NeetoUI vs Shadcn

NeetoUI

Shadcn

Status

ProgressBar

Progress

✅ Direct swap

Spinner

Spinner

✅ Direct swap

Kbd

Kbd

✅ Direct swap

Select (async / multi / creatable)

❌ No equivalent

DatePicker (timezone / time)

❌ Needs re-evaluation (Calendar now has timezone prop)

TimePicker

❌ No equivalent

ColorPicker

❌ No equivalent

MultiEmailInput

❌ No equivalent

TreeSelect / Tree

❌ No equivalent

Table (advanced)

❌ No equivalent

Stepper

❌ No equivalent

Formik layer (13 components)

Form (react-hook-form)

❌ Different library

Button

Button

🟡 Prop changes

Input

Input

🟡 Prop changes

Textarea

Textarea

🟡 Prop changes

Label

Label

🟡 Prop changes

Checkbox

Checkbox

🟡 Prop changes

Radio

RadioGroup

🟡 Prop changes

Switch

Switch

🟡 Prop changes

Slider

Slider

🟡 Prop changes

Select (basic)

Select

🟡 Prop changes

Select (searchable)

Combobox

🟡 No async / creatable

Modal

Dialog

🟡 No size variants, API changes

Pane

Sheet

🟡 No size variants, API changes

Tooltip

Tooltip

🟡 No theme, no interactive mode

Dropdown

DropdownMenu

🟡 No hover trigger

Popover

Popover

🟡 API changes

Accordion

Accordion

🟡 API changes

Tab

Tabs

🟡 No size variants

Pagination

Pagination

🟡 No URL integration

Avatar

Avatar

🟡 API changes

Tag / Badge

Badge

🟡 Missing success / warning / info variants

Callout

Alert

🟡 Missing warning / success variants

Toastr

Sonner

🟡 No Axios / i18n support

DatePicker (basic / range)

Calendar + Popover

🟡 No year/quarter picker

Table (basic)

Table

🟡 Plain HTML only

Typography

🟡 Utility classes only

NoData

Empty

🟡 Limited


Biggest Efforts

Component

Effort

Table

Resize, reorder, freeze, virtual scroll — full rebuild

Formik layer

13 components, entirely different form library

Select

Async / multi / creatable — no shadcn equivalent

TimePicker

No shadcn equivalent

ColorPicker / MultiEmailInput / TreeSelect

No shadcn equivalent

Next Steps

  1. Publish @neeto/atoms to npm

  2. Pilot on the simplest products first

  3. Migrate simple components across all 15 products

  4. Evaluate complex components separately (Table, Formik, DatePicker timezone)

  5. Deprecate @neeto/ui once all products fully migrated