UNPKG

@base-ui/react

Version:

Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.

1,299 lines (861 loc) 95.4 kB
# Versions ## v1.5.0 _May 19, 2026_ ### General changes - Use local document for virtual arrow (#4662) by @lyzno1 - Fix macOS Safari and Firefox minimizing fullscreen when closing popups with <kbd>Esc</kbd> (#4695) by @arturbien - Drop unnecessary memoization (#4693) by @flaviendelangle - Do not use `Math.random()` in `useStableCallback()` (#4732) by @michaldudak - Fix return focus when reference disconnects (#4655) by @atomiks - Improve mount performance with interaction splitting (#4661) by @atomiks - Don't steal initial focus if focus already moved inside a popup (#4775) by @stefee ### Alert Dialog - Fix handle defaults (#4834) by @atomiks ### Autocomplete - Fix native `FormData` for popup inputs (#4725) by @lunaxislu ### Checkbox - Submit the associated form when pressing <kbd>Enter</kbd> (#4713) by @michaldudak ### Combobox - Expose clear visibility state (#4664) by @atomiks - Fix popup input form submit (#4687) by @atomiks - Preserve `closeQuery` when closing multiple input-inside-popup combobox (#4715) by @mj12albert - Fix RTL component behavior (#4840) by @atomiks - Ignore hidden-input changes while readonly or disabled (#4810) by @lunaxislu ### Dialog - Consider the controlled `open` prop for open state detection (#4712) by @michaldudak ### Drawer - Forward `style` prop in `<Drawer.Viewport>` (#4841) by @atomiks ### Field - Avoid `flushSync` during validation (#4685) by @atomiks ### Form - Avoid `flushSync` during validation (#4685) by @atomiks ### Menu - Fix submenu pointer-events scope for `keepMounted` portals (#4723) by @twillhorn - Support `<Menu.GroupLabel>` in `<Menu.RadioGroup>` (#4826) by @nami8824 - Consider the controlled `open` prop for open state detection (#4712) by @michaldudak ### Navigation Menu - Fix RTL component behavior (#4840) by @atomiks - Fix `keepMounted` content sizing (#4817) by @atomiks ### Number Field - Allow Persian digits in keyboard input (#4719) by @lunaxislu - Sync pasted input during step interactions (#4824) by @lunaxislu ### OTP Field - **Breaking change:** Rename `sanitizeValue()` to `normalizeValue()` and allow composing with validation (#4717) by @atomiks - Avoid `flushSync` during validation (#4685) by @atomiks - Support <kbd>Ctrl</kbd> and <kbd>Cmd</kbd> shortcuts (#4606) by @atomiks - Fire `onValueComplete()` for full paste (#4690) by @atomiks - Fix vertical arrow slot navigation (#4844) by @atomiks - Ignore hidden input changes while readonly or disabled (#4806) by @lunaxislu - Prevent locked hidden autofill validation (#4827) by @lunaxislu - Fix RTL arrow navigation (#4847) by @atomiks ### Popover - Fix RTL component behavior (#4840) by @atomiks - Preserve active trigger on close press (#4741) by @mj12albert - Consider the controlled `open` prop for open state detection (#4712) by @michaldudak ### Preview Card - Consider the controlled `open` prop for open state detection (#4712) by @michaldudak - Integrate inline positioning (#2074) by @atomiks ### Scroll Area - Fix RTL component behavior (#4840) by @atomiks ### Select - Clear stale item text ref (#4683) by @atomiks - Add `data-popup-side` to trigger (#4671) by @mj12albert - Allow mouse selection without highlight (#4699) by @atomiks - Ignore hidden-input changes while readonly or disabled (#4810) by @lunaxislu - Fix nested Select requiring extra outside clicks to dismiss parent (#4820) by @mattrothenberg ### Tabs - Fire `onValueChange()` for automatic tab selection (#4704) by @michaldudak ### Toast - Re-use `getElementTransform()` and remove local implementation (#4749) by @sai6855 - Fix stuck drag state on release (#4742) by @aeterno-caspian - Remove memoized selector (#4751) by @atomiks ### Tooltip - Consider the controlled `open` prop for open state detection (#4712) by @michaldudak - Fix flickering when nesting tooltip inside another tooltip's trigger (#4501) by @michaldudak All contributors of this release in alphabetical order: @aeterno-caspian, @arturbien, @atomiks, @flaviendelangle, @Janpot, @lunaxislu, @lyzno1, @mattrothenberg, @michaldudak, @mj12albert, @nami8824, @sai6855, @stefee, @twillhorn ## v1.4.1 _Apr 20, 2026_ ### General changes - Clear highlight on pointer leave when item is clipped by scroll container (#4604) by @atomiks - Fix `display: contents` tabbability (#4642) by @atomiks - Fix multi-argument event handler forwarding in `mergeProps` (#4598) by @atomiks - Mark `date-fns` peer dependencies as optional (#4639) by @LukasTy ### Navigation Menu - Fix stale popup size on rapid trigger hover (#4646) by @atomiks All contributors of this release in alphabetical order: @atomiks, @LukasTy ## v1.4.0 _Apr 13, 2026_ ### General changes - Improve `render` prop warning accuracy (#4324, #4363) by @atomiks - Fix `preventBaseUIHandler` runtime wrapping (#4330) by @atomiks - Fix Uncaught TypeError: Converting circular structure to JSON (#4452) by @Profesor08 - Expose `form` prop on hidden inputs (#4352) by @atomiks - Add `suppressHydrationWarning` to hidden inputs (#4482) by @devxoul - Fix outside-press dismissal in a shared shadow root (#4333) by @atomiks - Fix `Positioner` not repositioning to a different trigger when reopened with `keepMounted` (#4407) by @mdm317 - Lock scroll of full-width anchored `modal` popups with touch input (#3100) by @atomiks ### Alert Dialog - Fix detached trigger HMR with recreated handles (#4472) by @atomiks ### Autocomplete - Fix initial live region announcements (#4286) by @atomiks ### Avatar - Fix flash when image is cached (#4469) by @mj12albert ### Checkbox - Fix uncontrolled default initialization (#4535) by @atomiks - Prevent input state changes in `readOnly` mode (#4551) by @tsbehlman ### Collapsible - Fix open state when `keepMounted` has no transitions (#4555) by @mj12albert ### Combobox - Fix clicks in `Chips`/`InputGroup` areas not focusing the input or opening the popup (#4296) by @CiscoFran10 - Fix iOS viewport settling (#4351) by @atomiks - Fix initial live region announcements (#4286) by @atomiks - Prevent scroll lock when a controlled value triggers a re-render (#4507) by @ryanrhee - Fix browser autofill with object values when autofill uses the label (#4560) by @mattrothenberg - Prevent item taps from blurring the input (#4578) by @atomiks - Respect rendered chips for keyboard navigation (#4572) by @atomiks ### Dialog - Fix detached trigger HMR with recreated handles (#4472) by @atomiks ### Drawer - Fix touch scroll in portaled popups (#4382) by @atomiks - Fix nested swipe cancel state (#4410) by @atomiks - Fix interrupted swipe dismiss cleanup (#4467) by @lunaxislu - Warn when a popup is missing `Viewport` (#4495) by @atomiks - Prevent dialogs from affecting nested drawer stack (#4493) by @atomiks ### Field - Fix form error matching in `<Field.Error>` (#4494) by @atomiks ### Menu - Fix `SubmenuTrigger` not respecting disabled state from `render` (#3858) by @CiscoFran10 - Preserve dialog focus on pointer leave (#4581) by @atomiks ### Navigation Menu - Remove invalid `aria-orientation` attribute (#4355) by @atomiks - Add generic `Value` typing (#4328) by @atomiks - Fix initial trigger switch size snap (#4327) by @atomiks - Fix top-level trigger pointer events blocking (#4362) by @atomiks - Fix reverse <kbd>Shift</kbd>+<kbd>Tab</kbd> submenu re-entry (#4464) by @atomiks - Fix nested inline submenu hover handoff (#4413) by @atomiks - Fix transition width when reopening (#4587) by @mdm317 ### Number Field - Fix format rounding error on blur (#4557) by @atomiks ### OTP Field - Add preview `OTPField` component for one-time password and verification code entry (#4365) by @atomiks ### Popover - Remove stray focus guards around trigger when `modal` (#4350) by @atomiks - Sync hover open event state (#4526) by @atomiks ### Preview Card - Fix hover reopen race conditions across close transitions (#4446) by @arturbien ### Select - Fix browser autofill with object values when autofill uses the label (#4560) by @mattrothenberg - Preserve touch exit animations (#4325) by @atomiks - Fix touch reopen highlight (#4356) by @atomiks - Fix scroll arrows stopping short of the edges (#4447) by @atomiks - Fix RTL-aligned popup positioning with `alignItemWithTrigger` (#4531) by @atomiks ### Slider - Fix edge thumb alignment after reveal (#4354) by @atomiks - Remove extra TalkBack focus targets (#4242) by @atomiks - Fix keyboard floating-point rounding (#4548) by @atomiks - Skip client-only prehydration scripts (#4530) by @atomiks ### Switch - Prevent input state changes in `readOnly` mode (#4551) by @tsbehlman ### Tabs - Fix `activationDirection` not updating on programmatic value changes (#4347) by @LukasTy - Fix activation direction on first render (#4532) by @atomiks - Skip client-only prehydration scripts (#4530) by @atomiks ### Toast - Keep viewport expanded while touch swiping (#4411) by @atomiks - Add upsert support to `add` method (#4440) by @atomiks - Fix timers not resuming after window regains focus (#4438) by @kyrregjerstad ### Toggle Group - Fix incorrect keyboard nav on cross axis (#4488) by @mj12albert All contributors of this release in alphabetical order: @arturbien, @atomiks, @CiscoFran10, @devxoul, @flaviendelangle, @kyrregjerstad, @LukasTy, @lunaxislu, @mattrothenberg, @mdm317, @michaldudak, @mj12albert, @Profesor08, @ryanrhee, @sai6855, @tsbehlman ## v1.3.0 _Mar 12, 2026_ ### General changes - Warn when a component function is rendered directly (#4077) by @atomiks - Reset `openMethod` after close transition (#4128) by @atomiks - Fire <kbd>Space</kbd> activation on `keydown` in composite widgets (#4053) by @atomiks - Skip CSS-hidden items during keyboard navigation in composite widgets (#4195) by @atomiks - Optimize hot paths in `useHover` hooks and `safePolygon` (#4199) by @atomiks - Snap `--anchor-width` and `--anchor-height` to device pixel grid (#4082) by @flaviendelangle - Fix outside press dismissal when a component is portaled into a shadow DOM (#4230) by @dmitri-gb - Fix nested hoverable popups (#4206) by @dmitri-gb - Apply `data-base-ui-inert` to highest-level node (#3955) by @atomiks - Fix portable types (#4058) by @cgatian ### Accordion - Add generic `Value` typing (#4138) by @atomiks ### Autocomplete - Respect a `null` `filter` prop (#4117) by @atomiks - Add `InputGroup` part (#3745) by @atomiks ### Avatar - Remove fallback transition logic and prevent premature image display (#4110) by @atomiks ### Button - Avoid checking `disabled` twice in `onKeyDown` and `onKeyUp` (#4132) by @flaviendelangle ### Checkbox - Add automatic `aria-labelledby` support (#4142) by @atomiks ### Combobox - Avoid applying field attributes to input when it is inside popup (#4154) by @atomiks - Preserve inline input on `Enter` when nothing is highlighted (#4235) by @atomiks - Fix ARIA attributes during SSR (#4179) by @atomiks - Fix wrapping in virtualized grid arrow-key navigation (#4164) by @atomiks - Add `InputGroup` part (#3745) by @atomiks - Add support for a visually hidden close button and improve modal focus trapping (#4084) by @atomiks - Add `Label` part (#4167) by @atomiks ### Context Menu - Ignore `mouseup` on non-Mac platforms (#3944) by @atomiks ### Drawer - **Breaking change:** `Drawer` is no longer marked as preview<br /> `Drawer` is now stable and should be imported as `{ Drawer } from '@base-ui/react/drawer'` (#4293) by @atomiks - Fix React 17 support (#4178) by @atomiks - Include border in frontmost height variable (#4202) by @atomiks - Improve touch selection (#4104) by @atomiks - Preserve cross-axis scrolling during touch gestures (#4187) by @atomiks - Prevent swipe dismissal when component is controlled (#4133) by @flaviendelangle - Add `SwipeArea` part (#4102) by @atomiks - Make `data-base-ui-swipe-ignore` explicit for touch interactions (#4295) by @atomiks - Disable inheritance for swipe CSS variables (#4099) by @atomiks ### Field - Fix field validation when `Form` errors or `invalid` prop are present at same time (#4112) by @mj12albert ### Menu - Prevent `pointerleave` from stealing focus from dialogs (#4125) by @atomiks - Optimize `pointer-events` for submenu hover interactions (#4231) by @atomiks - Fix `closeDelay` not being applied to `Menu.SubmenuTrigger` (#4134) by @flaviendelangle - Implement content transitions with `Viewport` (#4060) by @michaldudak ### Meter - Fix label announcements in NVDA (#4200) by @mj12albert ### Navigation Menu - Fix support for nested inline menus (#4198) by @atomiks - Fix close propagation in nested hover menus (#4285) by @atomiks - Close parent menus when nested link with `closeOnClick` is clicked (#4276) by @CiscoFran10 - Fix duplicate `aria-orientation` (#4309) by @atomiks - Fix delayed trigger switches in Safari (#4310) by @atomiks ### Number Field - Fix increment/decrement press `reason` values in `onValueCommitted` (#4259) by @jijiseong ### Popover - Trap focus when `<Popover.Close>` is rendered inside and `modal` is `true`, and add support for a visually hidden close button (#4084) by @atomiks - Fix nested hoverable popups (#3798) by @flaviendelangle ### Preview Card - Fix nested hoverable popups (#3798) by @flaviendelangle ### Progress - Fix label announcements in NVDA (#4200) by @mj12albert ### Radio Group - Add automatic `aria-labelledby` support (#4142) by @atomiks ### Scroll Area - Fix focus trapping with a non-scrollable viewport (#4220) by @atomiks - Fix thumb size after remounting (#4107) by @atomiks ### Select - Fix hidden input `id` fallback (#4135) by @atomiks - Fix `Value` placeholder not rendering with `Record` items (#4137) by @vcode-sh - Fire `onClick` during drag-to-select (#3969) by @obeattie - Fix `items` type definition for groups (#3884) by @aarongarciah - Fix `alignItemWithTrigger` fallback with browser zoom (#4292) by @atomiks - Add `Label` part (#4167) by @atomiks ### Slider - Add `Label` part (#4167) by @atomiks - Stop committing validation on `touchend` (#4091) by @jijiseong ### Switch - Add automatic `aria-labelledby` support (#4142) by @atomiks ### Tabs - Re-render indicator position on tab resize (#4165) by @atomiks ### Toast - Enable closing all toasts (#3979) by @chuganzy - Prevent duplicate `onClose` calls for ending toasts (#4280) by @chuganzy ### Tooltip - Add `closeOnClick` prop (#4140) by @atomiks All contributors of this release in alphabetical order: @aarongarciah, @atomiks, @cgatian, @chuganzy, @CiscoFran10, @dmitri-gb, @flaviendelangle, @jijiseong, @michaldudak, @mj12albert, @obeattie, @vcode-sh ## v1.2.0 _Feb 12, 2026_ ### General changes - Do not memoize `state` when not needed (#3812) by @flaviendelangle - Support lazy element in `render` prop (#3856) by @oliviertassinari - Replace Firefox deprecated mozInputSource check for virtual click detection (#3942) by @CiscoFran10 - Use `WeakRef` for previously focused elements (#3916) by @atomiks - Fix page scroll jump when input has focus on unmount in Safari (#3925) by @atomiks - Fix flash at origin before positioning completes in Preact (#3975) by @OliverSpeir - Reduce style recalculation with classic scrollbars (#3854) by @mdm317 - Fix event handling in useEnhancedClickHandler (#3981) by @sai6855 ### Autocomplete - Fix filter method's `useMemo` dependency (#3862) by @ZeeshanTamboli - Fix Autocomplete not using its internal filter method when `mode` is `list` (#3936) by @ZeeshanTamboli - Remove unnecessary double stringification of item in filtering logic (#3945) by @ZeeshanTamboli - Add `useFilteredItems` hook (#3732) by @guisehn - Fix popup closing on iOS VoiceOver (#3859) by @atomiks - Remove `aria-readonly` prop from `Clear` and `Popup` components when `readOnly` (#3907) by @markocupic024 ### Avatar - Add transition attributes (#3939) by @atomiks ### Button - Capture component stack for `nativeButton` error message (#3861) by @atomiks ### Checkbox - Cleanup disabled state tracking (#3913) by @atomiks - Preserve modifier key properties in the change event (#3935) by @mj12albert - Allow exit animations on `<Checkbox.Indicator>` when `keepMounted={false}` (#3939) by @atomiks ### Combobox - Fix the type of the ref of the `Icon` part (#3796) by @flaviendelangle - Avoid clearing selected value if item is not present in items array (#3824) by @atomiks - Fix highlight change reason in `ChipRemove` (#3980) by @sai6855 - Keep highlight on last deselect (#3923) by @atomiks - Fix inline filtering after selection in single mode (#3978) by @atomiks - Clear highlight on inline blur when inline (#3973) by @atomiks - Prevent opening popup on autofill change (#3924) by @atomiks - Distinguish `input-press` from `trigger-press` in `onOpenChange` reason (#4015) by @jijiseong - Fix async items while popup is open (#4034) by @atomiks - Prevent `Chip` from receiving focus when `disabled` (#4044) by @jijiseong - Add `useFilteredItems` hook (#3732) by @guisehn - Fix popup closing on iOS VoiceOver (#3859) by @atomiks - Remove `aria-readonly` prop from `Clear` and `Popup` components when `readOnly` (#3907) by @markocupic024 - Fix `onClick` `Item` type (#3964) by @atomiks - Use reactive `domReferenceElement` subscriptions (#4017) by @atomiks - Add `autoComplete` prop for explicit browser autofill support (#4005) by @mattrothenberg - Fix inconsistent isItemEqualToValue argument order (#4056) by @atomiks ### Context Menu - Fix `disabled` prop not working (#3806) by @arturbien - Fix explicit `collisionAvoidance` with `side: 'flip'` not working (#3877) by @obeattie ### Drawer - Create new Drawer / Sheet component (#3680) by @atomiks ### Field - Prevent re-renders when `Field.Control` is uncontrolled (#3820) by @atomiks - Fix autofocus in SSR environments (#3871) by @mj12albert - Fix max update depth loop when using `<React.Activity>` (#3931) by @atomiks - Add transition attributes (#3939) by @atomiks ### Input - Fix autofocus in SSR environments (#3871) by @mj12albert - Update ref type to `HTMLElement` (#3866) by @mj12albert ### Menu - Fix `onClick` `Item` type (#3964) by @atomiks - Fix submenu stuck glitch (#3783) by @atomiks - Fix race conditions (#3821) by @atomiks - Add `<Menu.LinkItem>` part (#3400) by @mj12albert ### Navigation Menu - Fix forwarded ref types (#3775) by @CrawlerCode - Add `keepMounted` prop to `Content` part (#3794) by @atomiks ### Number Field - Fix click handlers on ScrubArea (#3827) by @mj12albert - Remove `event.isTrusted` (#3920) by @atomiks - Stop repeat change at bounds (#3915) by @atomiks - Add `allowOutOfRange` prop (#3919) by @atomiks - Fix pen pointer handling (#3917) by @atomiks - Fix missing field state data attributes (#3909) by @mj12albert ### Popover - Fix missing `aria-owns` element (#3959) by @atomiks - Use reactive `domReferenceElement` subscriptions (#4017) by @atomiks - Fix broken scale transition with detached triggers (#3810) by @michaldudak ### Preview Card - Fix broken scale transition with detached triggers (#3810) by @michaldudak ### Progress - De-duplicate `formatValue` function (#3805) by @sai6855 ### Radio Group - Preserve modifier key properties in the change event (#3935) by @mj12albert - Allow exit animations on `<Radio.Indicator>` when `keepMounted={false}` (#3939) by @atomiks - Rely on individual radio hidden inputs (#3826) by @atomiks - Add generic `Value` typing to `Radio` (#4033) by @atomiks ### Scroll Area - Add `data-scrolling` state attribute to `Root` and `Viewport` parts (#3823) by @arturbien - Fix overflow edge rounding (#3888) by @atomiks ### Select - Add `finalFocus` prop (#3785) by @markocupic024 - Fix `alignItemWithTrigger` transform with CSS animations (#3831) by @atomiks - Fix `highlightItemOnHover` not being respected (#3868) by @sarthakmalik0810 - Reset typeahead on external blur (#2618) by @antonfrolovsky - Fix scroll height loop (#3795) by @atomiks - Add `autoComplete` prop for explicit browser autofill support (#4005) by @mattrothenberg - Fix inconsistent isItemEqualToValue argument order (#4056) by @atomiks ### Slider - Fix missing field state data attributes (#3909) by @mj12albert - Fix change event cloning (#3960) by @atomiks ### Switch - Preserve modifier key properties in the change event (#3935) by @mj12albert ### Tabs - Add transition attributes to `<Tabs.Panel>` part (#3880) by @atomiks ### Toast - Make `useToastManager` and `createToastManager` generic functions (#3882) by @solastley - Prevent dismissed promise toast from reopening on updates (#4040) by @atomiks - Introduce a store (#3464) by @flaviendelangle ### Toggle - Improve type safety and inference (#3173) by @michaelhazan ### Toggle Group - Type value as string to match Toggle (#3770) by @markocupic024 - Enable `Home`/`End` key navigation (#3971) by @jijiseong - Improve type safety and inference (#3173) by @michaelhazan ### Tooltip - Prevent opening when focusing a disabled Trigger (#3902) by @michaldudak - Fix broken scale transition with detached triggers (#3810) by @michaldudak - Fix disabled prop on Triggers (#4049) by @michaldudak All contributors of this release in alphabetical order: @antonfrolovsky, @arturbien, @atomiks, @CiscoFran10, @CrawlerCode, @flaviendelangle, @guisehn, @jijiseong, @LukasTy, @markocupic024, @mattrothenberg, @mdm317, @michaelhazan, @michaldudak, @mj12albert, @obeattie, @OliverSpeir, @oliviertassinari, @sai6855, @sarthakmalik0810, @solastley, @ZeeshanTamboli ## v1.1.0 _Jan 15, 2026_ ### General changes - Fix `onOpenChangeComplete(true)` timing (#3558) by @atomiks - Fix touch `openMethod` when tapping outside element bounds on Safari (#3541) by @atomiks - Fix visually hidden input styles across form components (#3606) by @atomiks - Fix click and drags outside a nested popup component from closing its parents (#3571) by @atomiks - Fix forwarded ref types (#3638) by @atomiks - Fix detached trigger remounting (#3724) by @atomiks - Include `ref` in `BaseUIComponentProps` (#2813) by @atomiks - Remove duplicated `disabled` prop (#3650) by @seongminn - Allow `actionsRef` to be `null` (#3682) by @mj12albert ### Accordion - Fix keyboard navigation with non-interactive trigger elements (#3684) by @ZeeshanTamboli ### Autocomplete - Add `data-popup-side` and `data-list-empty` state attributes to `<Autocomplete.Trigger>` (#3491) by @atomiks - Add `loopFocus` prop (#3592) by @atomiks - Fix hidden input `id` and `required` props (#3640) by @atomiks ### Button - Remove discriminated props union (#3643) by @atomiks ### Checkbox - Fix hidden input `id` and `required` props (#3640) by @atomiks ### Combobox - Add `data-popup-side` and `data-list-empty` state attributes to `<Combobox.Trigger>` (#3491) by @atomiks - Add `loopFocus` prop (#3592) by @atomiks - Add `toolbar` role to `<Combobox.Chips>` to prevent NVDA from entering browse mode (#3647) by @atomiks - Add `placeholder` prop to `<Combobox.Value>` (#3604) by @atomiks - Fix controlled `value` prop when `items` change (#3607) by @atomiks - Fix `multiple` values label resolution in `<Combobox.Value>` (#3314) by @atomiks - Forward root `id` to visible form element (#3722) by @atomiks - Do not trigger Field `onBlur` handlers when opening popup (#3609) by @atomiks ### Context Menu - Avoid creating sibling elements next to trigger (#3645) by @atomiks ### CSP Provider - Add `CSPProvider` (#3553) by @atomiks ### Dialog - Fix `Maximum update depth exceeded` error with Suspense (#3700) by @michaldudak - Fix `<Dialog.Title>` forwardedRef type (#3736) by @ZeeshanTamboli ### Field - Add `actionsRef` prop (#3395) by @mj12albert - Add `nativeLabel` prop to `<Field.Label>` (#3723) by @atomiks - Add missing type export (#3702) by @DiegoAndai ### Form - Add `actionsRef` prop (#3395) by @mj12albert ### Menu - Fix focus guard handling (#3654) by @atomiks - Avoid disabling modality on click after hover-open (#3455) by @atomiks ### Menubar - Fix submenu outside-press dismiss on touch (#3556) by @atomiks ### Number Field - Fix Field `data-focused` state (#3563) by @atomiks - Fix hidden input focus on submit (#3581) by @atomiks ### Popover - Fix popup auto resize glitches (#3591) by @atomiks - Fix focus guard handling (#3654) by @atomiks - Prevent disabling focus management when clicking trigger before hover delay completes (#3572) by @atomiks - Refactor popup auto resize logic. It is no longer necessary to specify `--positioner-width`/`--positioner-height` CSS variables on `<Popover.Positioner>` when using detached triggers unless the `Viewport` part has been added to the JSX. (#3652) by @atomiks ### Preview Card - Support detached triggers (#3566) by @michaldudak and @atomiks ### Radio Group - Fix `value` type (#3582) by @atomiks - Fix hidden input `id` and `required` props (#3640) by @atomiks ### Scroll Area - Perf improvements (#3536) by @atomiks ### Select - Add `placeholder` prop to `<Select.Value>` (#3604) by @atomiks - Fix support for transform animations when `alignItemWithTrigger` is active (#3532) by @atomiks - Fix support for `max-height` popup style when `alignItemWithTrigger` is active (#3573) by @atomiks - Fix `data-filled` state in `multiple` mode (#3608) by @atomiks - Fix highlight being removed on popup mouseout when `highlightItemOnHover` is disabled (#3492) by @atomiks - Fix support for individual transform animations when `alignItemWithTrigger` is active (#3637) by @atomiks - Fix `multiple` values label resolution in `<Select.Value>` (#3314) by @atomiks - Forward root `id` to visible form element (#3722) by @atomiks - Do not trigger Field `onBlur` handlers when opening popup (#3609) by @atomiks ### Slider - Fix `onValueCommitted` not called for range sliders (#3600) by @mj12albert ### Switch - Add `value` prop (#3676) by @Grafikart - Fix hidden input `id` and `required` props (#3640) by @atomiks ### Toast - Fix timers not being rescheduled when updated (#3564) by @atomiks ### Tooltip - Fix popup auto resize glitches (#3591) by @atomiks - Fix `trackCursorAxis` handling (#3679) by @atomiks - Refactor popup auto resize logic. It is no longer necessary to specify `--positioner-width`/`--positioner-height` CSS variables on `<Tooltip.Positioner>` when using detached triggers unless the `Viewport` part has been added to the JSX. (#3652) by @atomiks ### mergeProps - Make `mergeProps` public (#3642) by @michaldudak and @LukasTy ### useRender - Export missing types (#3565) by @michaldudak All contributors of this release in alphabetical order: @albertdugba, @atomiks, @brijeshb42, @chuganzy, @colmtuite, @dav-is, @DiegoAndai, @Grafikart, @Janpot, @LukasTy, @michaldudak, @mj12albert, @oliviertassinari, @seongminn, @updbqn, @ZeeshanTamboli ## v1.0.0 _Dec 11, 2025_ ### General changes - **Breaking change:** Rename packages to use the `@base-ui` org.<br /> The package name has changed from `@base-ui-components/react` to `@base-ui/react`. (#3462) by @mnajdova ### Combobox - Respect `itemToStringValue` for `onFormSubmit` (#3441) by @atomiks - Add `null` as an option for the value prop (#3488) by @mnajdova ### Menu - Fix submenu opens with 0 delay (#3459) by @atomiks - Fix focus not returning to trigger on <kbd>Esc</kbd> while pointer rests on popup (#3482) by @atomiks - Fix always `null` open method (#3486) by @atomiks - Allow side axis fallback for submenus by default (#3470) by @atomiks ### Navigation Menu - Fix mount transitions on `Positioner` in Firefox (#3424) by @atomiks ### Number Field - Fix multiple scrub area support (#3471) by @atomiks ### Popover - Fix mount transitions on `Positioner` in Firefox (#3424) by @atomiks - Fix skipped viewport transitions (#3453) by @atomiks ### Select - Respect `itemToStringValue` for `onFormSubmit` (#3441) by @atomiks - Add `null` as an option for the value prop (#3488) by @mnajdova ### Tabs - Fix indicator positioning in transformed containers (#3439) by @atomiks - Do not initially select a disabled tab (#3475) by @michaldudak ### Toast - Fix `flushSync` dev error when toast is added (#3443) by @atomiks - Fix `<Toast.Close>;` emitting `aria-hidden` warning on click (#3469) by @atomiks ### Toggle Group - More permissive towards falsy toggle values (#3477) by @mj12albert ### Tooltip - Fix mount transitions on `Positioner` in Firefox (#3424) by @atomiks - Fix ignored "modal" setting in Popovers experiment (#3474) by @michaldudak - Fix shared tooltip closing with trigger gaps (#3452) by @atomiks - Fix skipped viewport transitions (#3453) by @atomiks All contributors of this release in alphabetical order: @atomiks, @LukasTy, @michaldudak, @mj12albert, @mnajdova, @oliviertassinari, @pondorasti, @romgrk, @ZeeshanTamboli ## v1.0.0-rc.2 _Dec 11, 2025_ This release contains the same code as v1.0.0. Please refer to that version to see the changes. ## v1.0.0-rc.1 _Dec 11, 2025_ This release contains the same code as v1.0.0. Please refer to that version to see the changes. ## v1.0.0-rc.0 _Dec 4, 2025_ ### General changes - Fix missing `'use client'` directives (#3408) by @atomiks ### Autocomplete - Fix `keepHighlight` focus sync (#3399) by @atomiks ### Checkbox - **Breaking change:** Match native unchecked state in form submission.<br /> The Checkbox will not submit the `"off"` value with a form when unchecked anymore, unless the new `uncheckedValue` prop is set. (#3406) by @atomiks ### Collapsible - Remove `render={null}` (#3407) by @mj12albert ### Combobox - **Breaking change:** Removed the `keepHighlight` prop (#3377) by @atomiks ### Dialog - Close when pressing focusable element outside (#3380) by @atomiks - Fix closing after pointer lock exit in Firefox (#3379) by @atomiks ### Menu - Add `highlightItemOnHover` prop (#3377) by @atomiks - Do not import client components from MenuStore (#3409) by @michaldudak ### Number Field - Ensure hidden input participates in form validation (#3374) by @atomiks - Improve symbol replacement logic (#3376) by @atomiks - Fix fractional step snapping (#3375) by @atomiks - Fix parsing numbers with Swiss locale (#3361) by @michaldudak - Fix pointer lock release when soft clicking in Firefox (#3378) by @atomiks ### Popover - Close when pressing focusable element outside (#3380) by @atomiks - Fix modal backdrop on touch (#3383) by @atomiks - Fix popover glitching when flipped (#3364) by @michaldudak ### Select - Add `highlightItemOnHover` prop (#3377) by @atomiks ### Switch - **Breaking change:** Match native off state in form submission.<br /> The Switch will not submit the `"off"` value with a form when unchecked anymore, unless the new `uncheckedValue` prop is set. (#3406) by @atomiks ### Tabs - **Breaking change:** Fix Panel `keepMounted` behavior.<br /> The `value` prop is now required on `<Tabs.Tab>` and `<Tabs.Panel>` parts. (#3372) by @atomiks ### Toast - Recalculate content height when layout size is fixed (#3359) by @atomiks - Fix multiple swipe directions on same axis (#3392) by @mj12albert ### Tooltip - Improve contained triggers performance (#3385) by @michaldudak All contributors of this release in alphabetical order: @atomiks, @michaldudak, @mj12albert, @oliviertassinari, @pondorasti, @romgrk ## v1.0.0-beta.7 _Nov 27, 2025_ ### General changes - Fix error about `props.ref` access in React &lt;=18 (#3257) by @atomiks - Prefer non-adaptive anchoring position in `<Positioner>` components and fix `autoFocus` scroll jumps (#3250) by @atomiks - Make popups' `data-anchor-hidden` state attribute check for anchor presence in layout (#3267) by @atomiks - Prevent popups from sticking after hover when pressing `&lt;a&gt;` tags inside them (#3318) by @atomiks - Improve performance when detached triggers are used (#3277) - Fix iOS VoiceOver voice control accessibility in non-modal popups (#3340) ### Alert Dialog - Fix trigger registration loop (#3249) by @atomiks - Fix focus restoration when focused element is hidden with CSS (#3313) ### Checkbox Group - Fix `aria-describedby` on checkbox group (#3269) by @mj12albert ### Combobox - Revert overload types to ensure typed wrappers work correctly (#3254) by @atomiks - Fix ignored `filteredItems` instances (#3272) by @atomiks - Fix loop when passing `undefined` to `items` prop (#3348) ### Context Menu - Block mouseup at initial cursor point (#3274) by @atomiks ### Dialog - Fix trigger registration loop (#3249) by @atomiks - Fix focus restoration when focused element is hidden with CSS (#3313) ### Form - Fix cast `ref` type (#3324) by @mj12albert ### Menu - Fix trigger registration loop (#3249) by @atomiks - Do not pass `key` to the rendered element (#3255) by @michaldudak - Fix nested dialog from closing on <kbd>Shift+Tab</kbd> (#3346) ### Navigation Menu - Fix Safari 18 issue where `<Positioner>` width may be set to 0 on hover (#3309) by @EmilNordling - Ensure submenu triggers participate in composite list (#3344) by @atomiks ### Number Field - Fix literal space handling with symbols (#3334) by @atomiks ### Popover - Fix trigger registration loop (#3249) by @atomiks - Do not pass `key` to the rendered element (#3255) by @michaldudak - Fix focus restoration when focused element is hidden with CSS (#3313) ### Select - Revert overload types to ensure typed wrappers work correctly (#3254) by @atomiks ### Slider - Fix extra `onValueCommitted` calls (#3312) by @mj12albert - Fix cast `ref` type (#3324) by @mj12albert ### Tooltip - Fix trigger registration loop (#3249) by @atomiks All contributors of this release in alphabetical order: @atomiks, @brijeshb42, @Copilot, @EmilNordling, @michaldudak, @mj12albert, @oliviertassinari, @ZeeshanTamboli ## v1.0.0-beta.6 _Nov 17, 2025_ This is a hotfix release with the following changes: - Fix for rendering of Alert Dialog, Dialog, Menu, Popover, and Tooltip in React Server Components (#3241) by @michaldudak - Fix of the types of the refs in the Checkbox, Switch and Radio components (#3246) by @mnajdova - Fix of the value type error with mergeProps (#3247) by @atomiks ## v1.0.0-beta.5 _Nov 17, 2025_ ### General changes - **Breaking change:** Replace `trackAnchor` with `disableAnchorTracking`.<br /> If you were using `trackAnchor={false}`, be sure to update your usage to `disableAnchorTracking` instead. (#3188) by @mnajdova - **Breaking change:** Rename `loop` to `loopFocus` (#3186) by @mnajdova - Fix type portability (#2912) by @atomiks - Accept a function for the `style` prop (#3038) by @mnajdova - Create portal elements inside React (#2889) by @atomiks - Avoid applying `hidden` attribute to indicator elements when they specify `keepMounted` and are invisible (#3228) by @atomiks - Fix crash in Next.js 16 when accessing `render.props.ref` (#3231) by @atomiks ### Accordion - **Breaking change:** Change `multiple` prop to be false by default and add a demo (#3141) by @mnajdova - Fix flaky exit transition (#3101) by @atomiks ### Alert Dialog - Fix `initialFocus` as function being called on close (#2949) by @atomiks - Support detached triggers (#2974) by @michaldudak - Place `overflow: hidden` on `<body>` for overlay scrollbars by default. Avoids sticky elements shifting if `<body>` has an `overflow` style specified. (#3083) by @atomiks - Add `<AlertDialog.Viewport>` part (#2808) by @atomiks ### Autocomplete - **Breaking change:** Refactor `alwaysSubmitOnEnter` to `submitOnItemClick` prop.<br /> If you were using `alwaysSubmitOnEnter`, be sure to update your usage to `submitOnItemClick` instead. (#3018) by @atomiks - Prevent blocking filtering while composing text on Android (#2944) by @atomiks - Add empty state to `List.State` (#2934) by @atomiks - Fix `initialFocus` as function being called on close (#2949) by @atomiks - Add `role="combobox"` to `<Autocomplete.Trigger>` if `<Autocomplete.Input>` is inside Popup (#2973) by @atomiks - Fix stale `onItemHighlighted` data when filtering with `autoHighlight` (#2829) by @atomiks - Add empty and side styling attributes on `<Autocomplete.Input>` (#2926) by @atomiks - Fix `<Autocomplete.Value>` component return type for React 17 (#3050) by @atomiks - Support `autoHighlight: "always"`, and add `keepHighlight`, `highlightItemOnHover` props (#2976) by @atomiks - Keep focus on input when pressing list element (#3092) by @atomiks - Allow <kbd>Esc</kbd> to bubble if `<Autocomplete.Empty>` is not used (#2935) by @atomiks - Add `dialog` role to popup when input is inside (#3213) by @atomiks ### Button - New `<Button>` component (#2363) by @atomiks ### Checkbox - **Breaking change:** Render root as `<span>` instead of `<button>` (#3205) by @mj12albert ### Collapsible - Fix `starting-style` state (#2985) by @atomiks ### Combobox - Take into account `isItemEqualToValue` when selecting an option in multiple mode (#2893) by @epr3 - Move `CompositeList` to `List` component to make `Input` work with composites (#2883) by @chuganzy - Fix `onValueChange` type inference when `value` is unspecified (#2897) by @atomiks - Fix `required` form submission with multiple values (#2925) by @atomiks - Fix <kbd>Home</kbd>/<kbd>End</kbd> Input scroll in Chrome/Safari (#2928) by @atomiks - Prevent blocking filtering while composing text on Android (#2944) by @atomiks - Add empty state to `List.State` (#2934) by @atomiks - Fix `initialFocus` as function being called on close (#2949) by @atomiks - Add `role="combobox"` to `<Combobox.Trigger>` if `<Combobox.Input>` is inside Popup (#2973) by @atomiks - Fix `Field` control ref when input is inside popup (#2971) by @atomiks - Fix stale `onItemHighlighted` data when filtering with `autoHighlight` (#2829) by @atomiks - Add empty and side styling attributes on `<Combobox.Input>` (#2926) by @atomiks - Fix `<Combobox.Value>` component return type for React 17 (#3050) by @atomiks - Fix input value derivation on `value` and `items` prop updates (#3067) by @atomiks - Support `autoHighlight: "always"`, and add `keepHighlight`, `highlightItemOnHover` props (#2976) by @atomiks - Keep focus on input when pressing list element (#3092) by @atomiks - Fix support of dialog + combobox pattern (#3049) by @atomiks - Support drag-to-select (#3167) by @atomiks - Allow <kbd>Esc</kbd> to bubble if `<Combobox.Empty>` is not used (#2935) by @atomiks - Fix stuck filtering with differing stringifiers (#3201) by @atomiks - Add `dialog` role to popup when input is inside (#3213) by @atomiks ### Context Menu - Add `open` state to `<ContextMenu.Trigger>` (#3195) by @atomiks - Fix ignored `anchor` prop on `<ContextMenu.Positioner>` (#3202) by @atomiks ### Dialog - **Breaking change:** Replace `dismissible` with `disablePointerDismissal`.<br /> If you were using `dismissible={false}`, replace it with `disablePointerDismissal`. (#3190) by @mnajdova - Fix `initialFocus` as function being called on close (#2949) by @atomiks - Support detached triggers (#2974) by @michaldudak - Place `overflow: hidden` on `<body>` for overlay scrollbars by default. Avoids sticky elements shifting if `<body>` has an `overflow` style specified. (#3083) by @atomiks - Add `<Dialog.Viewport>` part and scrollable demos on docs (#2808) by @atomiks ### Field - **Breaking change:** Add `onSubmit` validation mode and make it the default over `onBlur`.<br /> Fields that use non-`required` attribute validation no longer validate the control on blur. Instead, validation first occurs `onSubmit`, and afterwards revalidation occurs `onChange`. (#3013) by @mj12albert - Add `dirty` and `touched` props (#2950) by @mj12albert - New `<Field.Item>` part (#2810) by @mj12albert - Fix `validationMode="onChange"` not clearing custom error state (#3048) by @mj12albert - Fix external `onChange` validation mode errors (#3137) by @atomiks ### Form - **Breaking change:** The `onClearErrors` prop has been removed.<br /> Errors from the `errors` prop are always cleared when the value changes. (#3136) by @mj12albert - Add `onSubmit` validation mode.<br /> Additionally, `validationMode` can be set on `<Form>`. (#3013) by @mj12albert - Add `onFormSubmit` callback (#3131) by @mj12albert ### Menu - **Breaking change:** Support detached triggers.<br /> `openOnHover`, `delay`, and `closeDelay` props have been moved from `<Menu.Root>` to `<Menu.Trigger>`.<br /> Additionally, menus now must have at least one `<Menu.Trigger>` element. (#3170) by @michaldudak - Ignore disabled item on initial focusing (#2604) by @mnajdova - Fix stealing focus from dialogs on close (#2920) by @atomiks - Place `overflow: hidden` on `<body>` for overlay scrollbars by default. Avoids sticky elements shifting if `<body>` has an `overflow` style specified. (#3083) by @atomiks ### Navigation Menu - Fix nested popup dismiss actions (#2978) by @atomiks - Fix error on React 17 (#3204) by @atomiks ### Number Field - Granular change reasons (#3132) by @atomiks ### Popover - **Breaking change:** Support detached triggers and multiple triggers per popover.<br /> `openOnHover`, `delay`, and `closeDelay` props have been moved from `<Popover.Root>` to `<Popover.Trigger>`. (#2336) by @michaldudak - Fix `initialFocus` as function being called on close (#2949) by @atomiks - Fix swiping or scrolling on nested popup dismissing popover on touch (#3011) by @atomiks - Place `overflow: hidden` on `<body>` for overlay scrollbars by default. Avoids sticky elements shifting if `<body>` has an `overflow` style specified. (#3083) by @atomiks ### Preview Card - **Breaking change:** Move delay props to trigger.<br /> If you were using `delay` or `closeDelay` props, be sure to move them to from `<PreviewCard.Root>` to the `<PreviewCard.Trigger>` component. (#3182) by @atomiks ### Radio Group - **Breaking change:** Render root as `<span>` instead of `<button>` (#3205) by @mj12albert ### Scroll Area - **Breaking change:** Improve CSS vars performance.<br /> The CSS variables are now on the `<ScrollArea.Viewport>` part, not `<ScrollArea.Root>`, and inheritance is disabled for all child elements (or pseudo-elements). Children must manually opt in using `--scroll-area-[variable-name]: inherit`. (#3156) by @atomiks ### Select - **Breaking change:** Make the trigger native button by default.<br /> The trigger now renders a `<button>` element, be sure to adjust your code if necessary. (#3177) by @mnajdova - Add `open` state type on `Select.Icon` interface (#2919) by @komkanit - Fix `onValueChange` type inference when `value` is unspecified (#2897) by @atomiks - Fix `required` form submission with multiple values (#2925) by @atomiks - Avoid re-rendering on popup height expansion (#2972) by @atomiks - Place `overflow: hidden` on `<body>` for overlay scrollbars by default. Avoids sticky elements shifting if `<body>` has an `overflow` style specified. (#3083) by @atomiks - Add `data-placeholder` attribute (#2737) by @seongminn ### Slider - **Breaking change:** Add `thumbCollisionBehavior` prop.<br /> In range sliders, moving a thumb with a pointer will now push other thumbs it collides with to avoid blocking drag movements by default (the default value is `push`).<br /> The value `swap` was also added, which allows thumbs to be dragged past each other when they collide.<br /> Lastly, the value `none` is the same as the previous behavior, where thumbs can't be dragged past one another.<br /> Keyboard interactions always use `none` behavior. (#2856) by @atomiks - Granular change reasons (#3132) by @atomiks ### Switch - **Breaking change:** Render root as `<span>` instead of `<button>` (#3205) by @mj12albert ### Tabs - **Breaking change:** Fix selected/active state naming consistency.<br /> - Renamed `[data-selected]` to `[data-active]` in `<Tabs.Tab>` - Removed `[data-highlighted]` (`:focus-visible` was already the recommendation in styles) - `selectedTabPosition`/`selectedTabSize` are now `activeTabPosition`/`activeTabSize` in `Tabs.Indicator.State` (#3024) by @atomiks - **Breaking change:** Change `activateOnFocus` to false.<br /> If you need your Tabs to activate on focus, be sure to add `activateOnFocus` prop. (#3176) by @mnajdova - Fix Next.js 16 error from `Math.random` id generation (#3051) by @atomiks - Fix indicator sizing and offsets (#3214) by @atomiks ### Toast - Allow `React.ReactNode` for `title`/`description` properties (#2929) by @atomiks - Add ability to anchor to an element (#3096) by @atomiks ### Toolbar - **Breaking change:** The `cols` prop has been removed.<br /> This prop was not supposed to be exposed. (#3133) by @mj12albert ### Tooltip - **Breaking change:** Support detached triggers.<br /> `delay` and `closeDelay` props have been moved from `<Tooltip.Root>` to `<Tooltip.Trigger>`. (#3071) by @michaldudak - **Breaking change:** Change `hoverable` to `disableHoverablePopup`.<br /> In case you need to disable the hoverable popup behavior, be sure to add the `disableHoverablePopup` prop. (#3178) by @mnajdova - Fix `data-instant` ending transition of same tooltip (#2962) by @atomiks All contributors of this release in alphabetical order: @atomiks, @brianle1301, @brijeshb42, @chuganzy, @dav-is, @epr3, @fredericoo, @Janpot, @komkanit, @LukasTy, @michaldudak, @mj12albert, @mnajdova, @oliviertassinari, @romgrk, @seongminn, @sukvvon, @ZeeshanTamboli ## v1.0.0-beta.4 _Oct 1, 2025_ ### General changes - **Breaking change:** Generic event details. The main exported type is now `BaseUIChangeEventDetails` (with a paired `BaseUIGenericEventDetails`), not `BaseUIEventDetails`. (#2796) by @atomiks - Update `disabled` prop of buttons when ref changes (#2756) by @chuganzy - Refine event details (#2698) by @atomiks ### Accordion - **Breaking change:** Use `useId` instead of composite index as fallback value. Accordion items must have an explicit `value` set in order to be initially open. Inferring the value by their DOM index is no longer supported. (#2664) by @mj12albert - **Breaking change:** Rename `openMultiple` prop to `multiple` (#2764) by @LukasTy ### Autocomplete - **Breaking change:** Rename `cols` to `grid` prop. Specify `grid={true}` instead of `cols={number}` - the columns are automatically inferred from `Autocomplete.Row` (#2683) by @atomiks - Fix duplicate `onOpenChange` calls and pass correct DOM `event`. (#2682) by @atomiks - Fix controlled input value updates (#2707) by @atomiks - Fix input focus on close when clicking trigger (#2723) by @atomiks - Add `alwaysSubmitOnEnter` prop and allow form submission on <kbd>Enter</kbd> if no item is highlighted by default (#2700) by @atomiks - Use `ReadonlyArray` type for `items` (#2819) by @atomiks ### Collapsible - Fix CollapsiblePanel type to use its own state (#2697) by @chuganzy - Respect user's CSS `display` property on panel (#2772) by @mj12albert ### Combobox - **Breaking change**: `onItemHighlighted` now has a `reason` property instead of `type` to be consistent with the `eventDetails` API. (#2796) by @atomiks - **Breaking change:** Rename `cols` to `grid` prop. Specify `grid={true}` instead of `cols={number}` - the columns are automatically inferred from `Combobox.Row` (#2683) by @atomiks - Fix duplicate `onOpenChange` calls and pass correct DOM `event`. (#2682) by @atomiks - Fix initial closed typeahead (#2665) by @atomiks - Support `autoHighlight` prop (#2668) by @atomiks - Set default input value based on `value` prop (#2680) by @atomiks - Fix controlled input value updates (#2707) by @atomiks - Fix input focus on close when clicking trigger. Fixes a jump to the bottom of the page in Safari (#2723) by @atomiks - Fix unexpected close with multiple selection and input inside popup (#2771) by @atomiks - Allow form submission on <kbd>Enter</kbd> if no item is highlighted by default (#2700) by @atomiks - Avoid refiltering with ending transition in multiple selection mode (#2681) by @atomiks - Support object values with `isItemEqualToValue` prop (#2704) by @atomiks - Use `ReadonlyArray` type for `items` (#2819) by @atomiks - Fix misleading `item-press` reason in `onInputValueChange` (#2830) by @atomiks - Clear single-select value on input clear (#2860) by @atomiks - Fix `focusout` of input not closing popup under certain conditions (#2864) ### Context Menu - Ensure submenus close when parents close (#2768) by @atomiks - Fix `onClick` firing twice on first click of item (#2849) by @atomiks ### Menu - Ensure submenus close when parents close (#2768) by @atomiks - Allow non-nested portals across differing popup trees (#2818) by @atomiks ### Menubar - Fix Menubar not disabling child Menus (#2736) by @aarongarciah - Ensure submenus close when parents close (#2768) by @atomiks - Fix `CompositeList` not updating item order on reordering (#2675) by @chuganzy ### Navigation Menu - Make link close on click configurable (#2740) by @atomiks - Fix focus returning to trigger without animations (#2779) by @atomiks - Fix `CompositeList` not updating item order on reordering (#2675) by @chuganzy ### Number Field - Fix stuck virtual cursor after mouse tap (#2720) by @atomiks - Improve parsing logic (#2725) by @atomiks - Align value changes with `Slider`. An `onValueCommitted` callback has been added. (#2726) by @atomiks ### Popover - Allow non-nested portals across differing popup trees (#2818) by @atomiks ### Scroll Area - Add overflow presence state attributes and CSS variables (#2478) by @atomiks - Fix RTL horizontal scrollbar on Safari (#2776) by @atomiks - Fix thumb size flicker (#2778) by @atomiks ### Select - **Breaking change:** Add `Select.List` component. It is now possible for `Select.ScrollArrow` to show when in fallback (`alignItemWithTrigger` deactivated). As a result, if you want the scroll arrows to be hidden in this mode like before, change the styles to default to `display: none` on `.ScrollArrow`, and `display: block` when `[data-side="none"]`. (#2596) by @atomiks - Block opening the popup when provided `readOnly` (#2717) by @seongminn - Add `open` state for `Select.Icon` and fix `ref` type (#2714) by @seongminn - Support o