Measured entry

shadcn-native-select

selectunclassified

A React and TypeScript wrapper around the browser's native select, plus pass-through option and optgroup components. It ships as shadcn registry source and uses Tailwind theme classes, the shared cn utility backed by clsx and tailwind-merge, and a decorative Lucide chevron.

Specimen
Harness screenshot of shadcn-native-select at 375 pixels wide
Harness screenshot at 375 pixels wide. No horizontal overflow recorded.
Harness screenshot of shadcn-native-select at 768 pixels wide
Harness screenshot at 768 pixels wide. No horizontal overflow recorded.
Harness screenshot of shadcn-native-select at 1440 pixels wide
Harness screenshot at 1440 pixels wide. No horizontal overflow recorded.

Measured

Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.

Harness measurements recorded for shadcn-native-select
BuildOK
MountOK
Console errors0
Uncaught page errors0
Horizontal overflowclean at 375, 768, 1440
Axe critical1
Axe serious0
Axe moderate0
Axe minor0
Gzip marginal30.4 KB (95.9 KB build, 65.5 KB baseline)
Bare modeFAIL
Provider requiredNO
Demo usedwritten from the component source API

What the harness recorded

BARE BUILD

✗ Build failed in 700ms
error during build:
[vite]: Rollup failed to resolve import "lucide-react" from "<sandbox>re-1e7498bec4a5/src/cut/components/ui/native-select.tsx".

Verdict

A sensible choice for straightforward forms because it preserves native select behavior and mounts without special context. The supplied demo has a critical accessible-name failure, so do not copy it unchanged: connect a label to the control or provide an explicit accessible name.

Use it if

  • You want native keyboard, touch, and platform menu behavior with styling that matches a shadcn interface.
  • You need simple option groups or standard form submission without a custom popover state model.
  • You can provide a real label or an explicit accessible name wherever the control is used.

Skip it if

  • You need searchable options, multiselect, rich option content, or fully custom menu interactions.
  • You require identical open-menu styling across browsers and operating systems.
  • Your team cannot guarantee accessible labeling at each call site, since the supplied demo leaves the select unnamed.

Install

Installation record for shadcn-native-select
Declared dependenciesclsx, tailwind-merge
Missing on installnone
Bare installfails once the shadcn-style helpers are removed, so it needs that setup
Providerno provider required in the harness

In a non-shadcn project, add React, Lucide React, Tailwind CSS, clsx, and tailwind-merge; create the cn class-merging helper; configure the referenced theme tokens and dark-mode styles; and replace the alias import if your project does not map it. Add an associated label or accessible-name attribute at every usage site.

Source and credit

This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.

Author repository

github.com/shadcn-ui/ui
License
MIT
Record published
2026-08-16

Alternatives

Other published entries for the select pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.