npm / @radix-ui/react-select
@radix-ui/react-select
What changed in @radix-ui/react-select 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.
1 breaking3 new APIs and options1 performance1 tooling19 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@radix-ui/react-select 225 changes
Breaking changes 1
The Select hidden input now submits an empty string when no value is selected.
New APIs and options 3
Select now supports presence-based exit animations.
Added an unstable part that exposes the previously internal native select so consumers can recompose it explicitly.
Added an unstable part that sets up Select context and state without implicitly rendering the hidden native select, enabling consumers to recompose it explicitly.
Performance 1
Improved tree-shaking lets bundlers drop unused components, improving dead-code elimination.
Tooling 1
The package was republished through CI so it includes a provenance attestation.
Fixes and other changes 19
Fixed a type regression so callback props previously declared as methods accept handlers whose parameter is narrower than the prop's.
Content alignment is fixed when all items are disabled.
Optional types now allow explicit undefined, making the package compatible with TypeScript's exactOptionalPropertyTypes flag.
User-driven changes are no longer treated as programmatic in affected cases, allowing bubbled event handlers to be called.
Programmatically updating a Select value inside a form no longer dispatches a click event from the hidden bubble select that propagates to ancestor onClick handlers.
Fixed a bug caused by incorrect tree-shaking in SWC-minified code.
Radix's internal selection logic no longer fires for disabled items, while consumer-provided event handlers still run.
Reverted breaking changes that caused compatibility issues with React Server Components.
Select values are now updated when the associated form is reset.
Select items no longer intercept Space or Enter keys originating from focusable descendants.
Fixed an infinite re-render loop in React 19 caused by unstable composed ref callback references.
An item with an empty string value can act as a clear option, resetting the selection to the placeholder and restoring native optional-select behavior.
Fixed a bug that could cause typeahead search to focus an element that no longer exists.
Fixed triggers referencing a non-existent element via aria-controls when their content is removed from the DOM.
Fixed iOS text selection and editing on HTML inputs within react-dialog.
Fixed placeholder rendering when a controlled Select is reset to an empty value.
Added the missing __selectScope prop to PopperContent.
SelectValue no longer logs invalid prop errors when used with both asChild and a placeholder.
Select no longer closes unexpectedly after touch-scrolling its content inside an open shadow DOM.