# What changed in @radix-ui/react-select

> 25 changes in @radix-ui/react-select 2 from its official release notes, upgrade guides and advisories: 1 breaking, 3 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/@radix-ui/react-select/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @radix-ui/react-select 2

### Breaking changes

- The Select hidden input now submits an empty string when no value is selected. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)

### New APIs and options

- Select now supports presence-based exit animations. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)
- Added an unstable part that exposes the previously internal native select so consumers can recompose it explicitly. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)
- Added an unstable part that sets up Select context and state without implicitly rendering the hidden native select, enabling consumers to recompose it explicitly. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)

### Performance

- Improved tree-shaking lets bundlers drop unused components, improving dead-code elimination. (2.3.4) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#234)

### Tooling

- The package was republished through CI so it includes a provenance attestation. (2.3.5) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#235)

### Fixes and other changes

- Fixed a type regression so callback props previously declared as methods accept handlers whose parameter is narrower than the prop's. (2.4.1) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#241)
- Content alignment is fixed when all items are disabled. (2.4.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#240)
- Optional types now allow explicit undefined, making the package compatible with TypeScript's exactOptionalPropertyTypes flag. (2.4.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#240)
- User-driven changes are no longer treated as programmatic in affected cases, allowing bubbled event handlers to be called. (2.4.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#240)
- 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. (2.4.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#240)
- Fixed a bug caused by incorrect tree-shaking in SWC-minified code. (2.4.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#240)
- Radix's internal selection logic no longer fires for disabled items, while consumer-provided event handlers still run. (2.3.8) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#238)
- Reverted breaking changes that caused compatibility issues with React Server Components. (2.3.7) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#237)
- Select values are now updated when the associated form is reset. (2.3.3) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#233)
- Select items no longer intercept Space or Enter keys originating from focusable descendants. (2.3.3) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#233)
- Fixed an infinite re-render loop in React 19 caused by unstable composed ref callback references. (2.3.2) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#232)
- 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. (2.3.1) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#231)
- Fixed a bug that could cause typeahead search to focus an element that no longer exists. (2.3.1) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#231)
- Fixed triggers referencing a non-existent element via aria-controls when their content is removed from the DOM. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)
- Fixed iOS text selection and editing on HTML inputs within react-dialog. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)
- Fixed placeholder rendering when a controlled Select is reset to an empty value. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)
- Added the missing __selectScope prop to PopperContent. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)
- SelectValue no longer logs invalid prop errors when used with both asChild and a placeholder. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)
- Select no longer closes unexpectedly after touch-scrolling its content inside an open shadow DOM. (2.3.0) — [release notes](https://github.com/radix-ui/primitives/blob/925c88b773bb32aecf1b52a296a1a21ba7a720b9/packages/react/select/CHANGELOG.md#230)
