Comment by pembrook

4 hours ago

Native radios are notoriously hard to style consistently across browsers. You can do it with appearance: none, pseudo-elements, etc., but:

- You re-implement focus rings, checked states, hover, disabled, error states.

- You end up bloating your stylesheet incomprehensibly

- Cross-browser differences (especially Safari) still leak through.

- Controlled components, validation layers, animations/transitions, rich layouts are annoying and break accessibility

- Turning native radios into radio cards for example breaks accessibility and keyboard navigation

- Rows with icons, badges, subtext, etc. between the radio and label is a huge issue

Hence why everybody uses Shadcn instead.