Releases: mui/base-ui
v1.0.0-rc.0
General changes
Autocomplete
Checkbox
- Breaking change: Match native unchecked state in form submission.
The Checkbox will not submit the"off"value with a form when unchecked anymore, unless the newuncheckedValueprop is set.
(#3406) by @atomiks
Collapsible
- Remove
render={null}(#3407) by @mj12albert
Combobox
Dialog
- Close when pressing focusable element outside (#3380) by @atomiks
- Fix closing after pointer lock exit in Firefox (#3379) by @atomiks
Menu
- Add
highlightItemOnHoverprop (#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
Switch
- Breaking change: Match native off state in form submission.
The Switch will not submit the"off"value with a form when unchecked anymore, unless the newuncheckedValueprop is set.
(#3406) by @atomiks
Tabs
- Breaking change: Fix Panel
keepMountedbehavior.
Thevalueprop 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
General changes
- Fix error about
props.refaccess in React <=18 (#3257) by @atomiks - Prefer non-adaptive anchoring position in
<Positioner>components and fixautoFocusscroll jumps (#3250) by @atomiks - Make popups'
data-anchor-hiddenstate attribute check for anchor presence in layout (#3267) by @atomiks - Prevent popups from sticking after hover when pressing
<a>tags inside them (#3318) by @atomiks - Improve performance when detached triggers are used (#3277) by @michaldudak
- Fix iOS VoiceOver voice control accessibility in non-modal popups (#3340) by @atomiks
Alert Dialog
- Fix trigger registration loop (#3249) by @atomiks
- Fix focus restoration when focused element is hidden with CSS (#3313) by @atomiks
Checkbox Group
- Fix
aria-describedbyon checkbox group (#3269) by @mj12albert
Combobox
- Revert overload types to ensure typed wrappers work correctly (#3254) by @atomiks
- Fix ignored
filteredItemsinstances (#3272) by @atomiks - Fix loop when passing
undefinedtoitemsprop (#3348)
Context Menu
Dialog
- Fix trigger registration loop (#3249) by @atomiks
- Fix focus restoration when focused element is hidden with CSS (#3313) by @atomiks
Form
- Fix cast
reftype (#3324) by @mj12albert
Menu
- Fix trigger registration loop (#3249) by @atomiks
- Do not pass
keyto the rendered element (#3255) by @michaldudak - Fix nested dialog from closing on Shift+Tab (#3346) by @atomiks
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
Popover
- Fix trigger registration loop (#3249) by @atomiks
- Do not pass
keyto the rendered element (#3255) by @michaldudak - Fix focus restoration when focused element is hidden with CSS (#3313)
Select
Slider
- Fix extra
onValueCommittedcalls (#3312) by @mj12albert - Fix cast
reftype (#3324) by @mj12albert
Tooltip
All contributors of this release in alphabetical order: @atomiks, @brijeshb42, @Copilot, @EmilNordling, @michaldudak, @mj12albert, @oliviertassinari, @ZeeshanTamboli
v1.0.0-beta.6
This is a hotfix release with the following changes:
v1.0.0-beta.5
General changes
- Breaking change: Replace
trackAnchorwithdisableAnchorTracking.
If you were usingtrackAnchor={false}, be sure to update your usage todisableAnchorTrackinginstead. (#3188) by @mnajdova - Breaking change: Rename
looptoloopFocus(#3186) by @mnajdova - Fix type portability (#2912) by @atomiks
- Accept a function for the
styleprop (#3038) by @mnajdova - Create portal elements inside React (#2889) by @atomiks
- Avoid applying
hiddenattribute to indicator elements when they specifykeepMountedand are invisible (#3228) by @atomiks - Fix crash in Next.js 16 when accessing
render.props.ref(#3231) by @atomiks
Accordion
- Breaking change: Change
multipleprop to be false by default and add a demo (#3141) by @mnajdova - Fix flaky exit transition (#3101) by @atomiks
Alert Dialog
- Fix
initialFocusas function being called on close (#2949) by @atomiks - Support detached triggers (#2974) by @michaldudak
- Place
overflow: hiddenon<body>for overlay scrollbars by default. Avoids sticky elements shifting if<body>has anoverflowstyle specified. (#3083) by @atomiks - Add
<AlertDialog.Viewport>part (#2808) by @atomiks
Autocomplete
- Breaking change: Refactor
alwaysSubmitOnEntertosubmitOnItemClickprop.
If you were usingalwaysSubmitOnEnter, be sure to update your usage tosubmitOnItemClickinstead. (#3018) by @atomiks - Prevent blocking filtering while composing text on Android (#2944) by @atomiks
- Add empty state to
List.State(#2934) by @atomiks - Fix
initialFocusas 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
onItemHighlighteddata when filtering withautoHighlight(#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 addkeepHighlight,highlightItemOnHoverprops (#2976) by @atomiks - Keep focus on input when pressing list element (#3092) by @atomiks
- Allow Esc to bubble if
<Autocomplete.Empty>is not used (#2935) by @atomiks - Add
dialogrole to popup when input is inside (#3213) by @atomiks
Button
Checkbox
- Breaking change: Render root as
<span>instead of<button>(#3205) by @mj12albert
Collapsible
Combobox
- Take into account
isItemEqualToValuewhen selecting an option in multiple mode (#2893) by @epr3 - Move
CompositeListtoListcomponent to makeInputwork with composites (#2883) by @chuganzy - Fix
onValueChangetype inference whenvalueis unspecified (#2897) by @atomiks - Fix
requiredform submission with multiple values (#2925) by @atomiks - Fix Home/End 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
initialFocusas function being called on close (#2949) by @atomiks - Add
role="combobox"to<Combobox.Trigger>if<Combobox.Input>is inside Popup (#2973) by @atomiks - Fix
Fieldcontrol ref when input is inside popup (#2971) by @atomiks - Fix stale
onItemHighlighteddata when filtering withautoHighlight(#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
valueanditemsprop updates (#3067) by @atomiks - Support
autoHighlight: "always", and addkeepHighlight,highlightItemOnHoverprops (#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 Esc to bubble if
<Combobox.Empty>is not used (#2935) by @atomiks - Fix stuck filtering with differing stringifiers (#3201) by @atomiks
- Add
dialogrole to popup when input is inside (#3213) by @atomiks
Context Menu
- Add
openstate to<ContextMenu.Trigger>(#3195) by @atomiks - Fix ignored
anchorprop on<ContextMenu.Positioner>(#3202) by @atomiks
Dialog
- Breaking change: Replace
dismissiblewithdisablePointerDismissal.
If you were usingdismissible={false}, replace it withdisablePointerDismissal. (#3190) by @mnajdova - Fix
initialFocusas function being called on close (#2949) by @atomiks - Support detached triggers (#2974) by @michaldudak
- Place
overflow: hiddenon<body>for overlay scrollbars by default. Avoids sticky elements shifting if<body>has anoverflowstyle specified. (#3083) by @atomiks - Add
<Dialog.Viewport>part and scrollable demos on docs (#2808) by @atomiks
Field
- Breaking change: Add
onSubmitvalidation mode and make it the default overonBlur.
Fields that use non-requiredattribute validation no longer validate the control on blur. Instead, validation first occursonSubmit, and afterwards revalidation occursonChange. (#3013) by @mj12albert - Add
dirtyandtouchedprops (#2950) by @mj12albert - New
<Field.Item>part (#2810) by @mj12albert - Fix
validationMode="onChange"not clearing custom error state (#3048) by @mj12albert - Fix external
onChangevalidation mode errors (#3137) by @atomiks
Form
- Breaking change: The
onClearErrorsprop has been removed.
Errors from theerrorsprop are always cleared when the value changes. (#3136) by @mj12albert - Add
onSubmitvalidation mode.
Additionally,validationModecan be set on<Form>. (#3013) by @mj12albert - Add
onFormSubmitcallback (#3131) by @mj12albert
Menu
- Breaking change: Support detached triggers.
openOnHover,delay, andcloseDelayprops have been moved from<Menu.Root>to<Menu.Trigger>.
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: hiddenon<body>for overlay scrollbars by default. Avoids sticky elements shifting if<body>has anoverflowstyle specified. (#3083) by @atomiks
Navigation Menu
Number Field
Popover
- Breaking change: Support detached triggers and multiple triggers per popover.
openOnHover,delay, andcloseDelayprops have been moved from<Popover.Root>to<Popover.Trigger>. (#2336) by @michaldudak - Fix
initialFocusas function being called on close (#2949) by @atomiks - Fix swiping or scrolling on nested popup dismissing popover on touch (#3011) by @atomiks
- Place
overflow: hiddenon<body>for overlay scrollbars by default. Avoids sticky elements shifting if<body>has anoverflowstyle specified. (#3083) by @atomiks
Preview Card
- Breaking change: Move delay props to trigger.
If you were usingdelayorcloseDelayprops, 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.
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.
The trigger now renders a<button>element, be sure to adjust your code if necessary. (#3177) by @mnajdova - Add
openstate type onSelect.Iconinterface (#2919) by @komkanit - Fix
onValueChangetype inference whenvalueis unspecified (#2897) by @atomiks - Fix
requiredform submission with multiple values (#2925) by @atomiks - Avoid re-rendering on popup height expansion (#2972) by @atomiks
- Place
overflow: hiddenon<body>for overlay scrollbars by default. Avoids sticky elements shifting if<body>has anoverflowstyle specified. (#3083) by @atomiks - Add
data-placeholderattribute (#2737) by @seongminn
Slider
- Breaking change: Add
thumbCollisionBehaviorprop.
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 ispush).
The valueswapwas also added, which allows thumbs to be dragged past each other when they collide.
Lastly, the valuenoneis the same as the previous behavior, where thumbs can't be dragged past one another.
Keyboard interactions always usenonebehavior. (#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. (#3024) by @atomiks
- Renamed
[data-selected]to[data-active]in<Tabs.Tab> - Removed
[data-highlighted](:focus-visiblewas already the recommendation in styles) selectedTabPosition/selectedTabSizeare nowactiveTabPosition/activeTabSizeinTabs.Indicator.State
- Renamed
- Breaking change: Change
activateOnFocusto false.
If you need your Tabs to...
v1.0.0-beta.4
General changes
- Breaking change: Generic event details.
The main exported type is nowBaseUIChangeEventDetails(with a pairedBaseUIGenericEventDetails), notBaseUIEventDetails.
(#2796) by @atomiks - Update
disabledprop of buttons when ref changes (#2756) by @chuganzy - Refine event details (#2698) by @atomiks
Accordion
- Breaking change: Use
useIdinstead of composite index as fallback value.
Accordion items must have an explicitvalueset in order to be initially open. Inferring the value by their DOM index is no longer supported.
(#2664) by @mj12albert - Breaking change: Rename
openMultipleprop tomultiple
(#2764) by @LukasTy
Autocomplete
- Breaking change: Rename
colstogridprop.
Specifygrid={true}instead ofcols={number}- the columns are automatically inferred fromAutocomplete.Row
(#2683) by @atomiks - Fix duplicate
onOpenChangecalls and pass correct DOMevent.
(#2682) by @atomiks - Fix controlled input value updates (#2707) by @atomiks
- Fix input focus on close when clicking trigger (#2723) by @atomiks
- Add
alwaysSubmitOnEnterprop and allow form submission on Enter if no item is highlighted by default (#2700) by @atomiks - Use
ReadonlyArraytype foritems(#2819) by @atomiks
Collapsible
- Fix CollapsiblePanel type to use its own state (#2697) by @chuganzy
- Respect user's CSS
displayproperty on panel (#2772) by @mj12albert
Combobox
- Breaking change:
onItemHighlightednow has areasonproperty instead oftypeto be consistent with theeventDetailsAPI. (#2796) by @atomiks - Breaking change: Rename
colstogridprop.
Specifygrid={true}instead ofcols={number}- the columns are automatically inferred fromCombobox.Row
(#2683) by @atomiks - Fix duplicate
onOpenChangecalls and pass correct DOMevent.
(#2682) by @atomiks - Fix initial closed typeahead (#2665) by @atomiks
- Support
autoHighlightprop (#2668) by @atomiks - Set default input value based on
valueprop (#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 Enter 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
isItemEqualToValueprop (#2704) by @atomiks - Use
ReadonlyArraytype foritems(#2819) by @atomiks - Fix misleading
item-pressreason inonInputValueChange(#2830) by @atomiks - Clear single-select value on input clear (#2860) by @atomiks
- Fix
focusoutof input not closing popup under certain conditions (#2864)
Context Menu
- Ensure submenus close when parents close (#2768) by @atomiks
- Fix
onClickfiring 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
CompositeListnot 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
CompositeListnot 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. AnonValueCommittedcallback has been added. (#2726) by @atomiks
Popover
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.Listcomponent. It is now possible forSelect.ScrollArrowto show when in fallback (alignItemWithTriggerdeactivated). As a result, if you want the scroll arrows to be hidden in this mode like before, change the styles to default todisplay: noneon.ScrollArrow, anddisplay: blockwhen[data-side="none"]. (#2596) by @atomiks - Block opening the popup when provided
readOnly(#2717) by @seongminn - Add
openstate forSelect.Iconand fixreftype (#2714) by @seongminn - Support object values with
isItemEqualToValueprop (#2704) by @atomiks - Use
ReadonlyArraytype foritems(#2819) by @atomiks
Slider
- Breaking change:
onValueChangehasactiveThumbIndexas part of theeventDetailsobject as a second parameter, not third. (#2796) by @atomiks - Breaking change: Remove redundant hidden inputs.
TheinputRefprop is moved fromRoottoThumb.
(#2631) by @mj12albert - Fix pointer tracking bugs (#2688) by @mj12albert
- Fix input attributes (#2728) by @mj12albert
- Add
thumbAlignmentprop (#2540) by @mj12albert
Switch
- Fix duplicate
nameattribute (#2763) by @mj12albert
Toast
- Breaking change: Support variable height stacking.
Toasts that have varying heights no longer force adata-expandedexpanded state on the viewport. CSS should be amended to ensure larger toasts don't overflow a small toast stacked at the front. See this diff for new styles, along with general improvements to stacking styles.
(#2742) by @atomiks - Reduce stickiness of expanded state (#2770) by @atomiks
- Ensure toast is frozen at its current visual transform while swiping (#2769) by @atomiks
Toggle Group
Toolbar
useRender
All contributors of this release in alphabetical order: @aarongarciah, @atomiks, @brijeshb42, @chuganzy, @Copilot, @Janpot, @LukasTy, @martenbjork, @michaldudak, @mj12albert, @mnajdova, @oliviertassinari, @seongminn, @sukvvon, @vladmoroz
v1.0.0-beta.3
Sep 3, 2025
General changes
- Breaking change: Base UI event details.
Custom event callbacks provide BaseUIEventDetails object as their second parameter.
This object contains the source event, reason and methods to customize the behavior (where applicable).
For example,onOpenChange(open, event, reason)becomesonOpenChange(open, eventDetails), whereeventDetailscontainseventandreasonproperties.(#2382) by @atomiks-onOpenChange: (open, event, reason) => { - if (reason === 'escape-key') { +onOpenChange: (open, eventDetails) => { + if (eventDetails.reason === 'escape-key') { // ... } }
Alert Dialog
- Breaking change: Support
initialFocusandfinalFocusfunctions.
TheinitialFocusandfinalFocusprops can be functions that return DOM elements to focus.
This is a new feature forfinalFocusand a breaking change forinitialFocusas the element must be returned directly (not as a ref).
(#2536) by @atomiks
Autocomplete
Checkbox
- Fix missing validity attributes when wrapped in
Field(#2572) by @Copilot
Combobox
Context Menu
Dialog
- Breaking change: Support
initialFocusandfinalFocusfunctions.
TheinitialFocusandfinalFocusprops can be functions that return DOM elements to focus.
This is a new feature forfinalFocusand a breaking change forinitialFocusas the element must be returned directly (not as a ref).
(#2536) by @atomiks - Restore focus to popup when focused element is removed (#2479) by @atomiks
Field
- Prevent defaultValue reset on focus for uncontrolled inputs (#2543) by @ingokpp
- Allow
onValueChangeto fire whendefaultValue/valueare not set (#2600) by @atomiks
Input
Menu
- Breaking change: Fix
closeParentOnEscdefault value.
The default value ofcloseParentOnEscin Menu.SubmenuRoot is now false.
When the Esc key is pressed in a Submenu, the Submenu closes, and the focus correctly moves to the SubmenuTrigger.
(#2493) by @seongminn - Breaking change: Support
initialFocusandfinalFocusfunctions.
TheinitialFocusandfinalFocusprops can be functions that return DOM elements to focus.
This is a new feature forfinalFocusand a breaking change forinitialFocusas the element must be returned directly (not as a ref).
(#2536) by @atomiks - Fix menu not opening when inside context menu trigger (#2506) by @baptisteArno
- Fix
transform-originvariable calculation when PositionersideOffsetis a function (#2511) by @atomiks - Fix submenu events (#2483) by @atomiks
- Fix
limitShiftoffset based on arrow size (#2571) by @atomiks
Navigation Menu
- Breaking change: Semantic element structure and
activepage prop.
NavigationMenu.Listrenders<ul>andNavigationMenu.Itemrenders<li>by default.
(#2526) by @atomiks - Unshare
AbortControllerinstance (#2441) by @tomokinat - Close on link click by default (#2535) by @atomiks
Number Field
Popover
- Breaking change: Support
initialFocusandfinalFocusfunctions.
TheinitialFocusandfinalFocusprops can be functions that return DOM elements to focus.
This is a new feature forfinalFocusand a breaking change forinitialFocusas the element must be returned directly (not as a ref).
(#2536) by @atomiks - Fix outside click after right clicking in popup (#2508) by @baptisteArno
- Fix unexpected close when nested inside two popovers (#2481) by @atomiks
- Fix
transform-originvariable calculation when PositionersideOffsetis a function (#2511) by @atomiks - Restore focus to popup when focused element is removed (#2479) by @atomiks
- Fix
limitShiftoffset based on arrow size (#2571) by @atomiks
Preview Card
- Fix
transform-originvariable calculation when PositionersideOffsetis a function (#2511) by @atomiks - Fix
limitShiftoffset based on arrow size (#2571) by @atomiks
Radio Group
Scroll Area
- Prevent pointer events from sibling portals triggering hover (#2542) by @kenanyusuf
Select
- Fix stale
itemsprop (#2397) by @atomiks - Fix unexpected close when nested inside two popovers (#2481) by @atomiks
- Fix
onValueChangetype inference (#2372) by @atomiks - Fix
transform-originvariable calculation when PositionersideOffsetis a function (#2511) by @atomiks - Reset state when selected item is removed (#2577) by @atomiks
- Fix
data-highlightedand DOM focus item desync (#2569) by @atomiks - Fix item click with
defaultOpenprop (#2570) by @atomiks - Fix scroll arrows not propagating scroll fully to start/end of list (#2523) by @atomiks
- Fix
limitShiftoffset based on arrow size (#2571) by @atomiks
Slider
- Breaking change: Instead of the thumb div, the
input type="range"element receives focus. Focus styles that were targeting the thumb, should be updated.
For example.Thumb:focus-visibleshould be replaced with.Thumb:has(:focus-visible).
ThetabIndexprop is moved from Root to Thumb where it gets forwarded to the input.
The thumb'srenderprop no longer contains the thirdinputPropsargument; the input element is instead merged with children.
(#2578) by @mj12albert - Reduce bundle size (#2551) by @oliviertassinari
- Fix thumb
:focus-visiblewith mixed keyboard and pointer modality (#2584) by @mj12albert - Add
indexprop toSlider.Thumb(#2593) by @mj12albert
Tabs
- Fix tab size rounding (#2488) by @atomiks
- Fix highlight sync when focus is inside list (#2487) by @atomiks
Tooltip
- Fix
transform-originvariable calculation when PositionersideOffsetis a function (#2511) by @atomiks - Fix
limitShiftoffset based on arrow size (#2571) by @atomiks
useRender
- Add support for data-* attributes (#2524) by @Raghuboi
- Add
defaultTagNameparameter (#2527) by @atomiks
All contributors of this release in alphabetical order: @atomiks, @baptisteArno, @brijeshb42, @Copilot, @ingokpp, @Janpot, @kenanyusuf, @LukasTy, @michaldudak, @mirka, @mj12albert, @mnajdova, @oliviertassinari, @Powerplex, @Raghuboi, @seongminn, @tomokinat
v1.0.0-beta.2
General changes
- Fix navigator checks and ensure safe platform retrieval (#2273) by @mo36924
- Prevent
Spacekey default on keydown (#2295) by @atomiks - Check for
performanceexistence on server (#2316) by @atomiks
Accordion
- Destructure
renderprop (#2280) by @atomiks - Fix keyboard interactions with elements in the panel (#2321) by @mj12albert
- Fix open transitions in Safari/Firefox (#2327) by @atomiks
Alert Dialog
- Support
ShadowRootcontainers (#2236) by @atomiks - Add
forceRenderprop toBackdroppart (#2037) by @atomiks - Improve outside press behavior with touch input (#2334) by @atomiks
Checkbox
- Fix focusing form controls with
inputRef(#2252) by @mj12albert
Collapsible
- Destructure render prop (#2323) by @atomiks
- Fix open transitions in Safari/Firefox (#2327) by @atomiks
Dialog
- Support
ShadowRootcontainers (#2236) by @atomiks - Add
forceRenderprop toBackdroppart (#2037) by @atomiks - Improve outside press behavior with touch input (#2334) by @atomiks
- Use
clickevent for outside press dismissal (#2275) by @atomiks
Field
- Deregister fields from
Formwhen unmounting (#2231) by @mj12albert
Form
- Deregister fields from
Formwhen unmounting (#2231) by @mj12albert
Menu
- Support
ShadowRootcontainers (#2236) by @atomiks - Avoid double
useRenderElementpasses (#2256) by @atomiks - Improve outside press behavior with touch input (#2334) by @atomiks
- Close submenus when focus is lost by shift-tabbing (#2290) by @michaldudak
Menubar
Meter
- Fix ARIA attributes and update docs (#2267) by @mj12albert
Navigation Menu
- Breaking change: Support inlined nesting.
Ensure the popup'swidthis set tovar(--popup-width)unconditionally (without the media query) on the.Popupclass.
(#2269) by @atomiks - Avoid double
useRenderElementpasses (#2256) by @atomiks - Add
useButtonintegration toTrigger(#2296) by @atomiks - Fix popup size transitions on iOS (#2387) by @atomiks
Number Field
- Remove
invalidprop (#2315) by @atomiks - Fix button disabled state only including root disabled state (#2268) by @mj12albert
Popover
- Support
ShadowRootcontainers (#2236) by @atomiks - Remove ancestor nodes from inside elements for outside press detection (#2339) by @atomiks
- Improve outside press behavior with touch input (#2334) by @atomiks
- Use
clickevent for outside press dismissal (#2275) by @atomiks
Preview Card
Progress
- Fix ARIA attributes and update docs (#2267) by @mj12albert
Radio Group
- Add aria-required attribute (#2227) by @cgatian
- Extend state with
FieldRoot.State(#2251) by @mj12albert - Fix focusing form controls with
inputRef(#2252) by @mj12albert - Avoid double
useRenderElementpasses (#2256) by @atomiks
Scroll Area
Select
- Support
ShadowRootcontainers (#2236) by @atomiks - Add
valueandreadOnlytoSelect.Triggerstate (#2237) by @atomiks - Add
multipleprop (#2173) by @atomiks - Allow typeahead while open for
multiplemode (#2274) by @atomiks - Ensure positionerElement is available in document mouseup (#2276) by @atomiks
- Fix
alignItemWithTriggerfallback scroll jump (#2241) by @atomiks - Support conditional
multipleprop in types (#2369) by @atomiks - Fix multiple ARIA behavior on touch (#2333) by @atomiks
- Improve outside press behavior with touch input (#2334) by @atomiks
Slider
- Fix focusing form controls with
inputRef(#2252) by @mj12albert
Toast
- Fix
promisemethod timeout option handling (#2294) by @atomiks - Make
Toast.Viewportan announce container (#2246) by @atomiks
Toggle
Toggle Group
Toolbar
Tooltip
- Support
ShadowRootcontainers (#2236) by @atomiks - Memoize leftover object in tooltip (#2250) by @sai6855
- Fix error when combining
defaultOpenanddisabled(#2374) by @atomiks
All contributors of this release in alphabetical order: @aelfannir, @atomiks, @brijeshb42, @cgatian, @Janpot, @michaldudak, @mj12albert, @mo36924, @romgrk, @sai6855
v1.0.0-beta.1
Jul 1, 2025
General changes
- Make error messages consistent (#2049) by @michaldudak
- Do not overwrite event handler when
undefinedis passed explicitly (#2151) by @michaldudak
Accordion
- Allow content to resize naturally (#2043) by @atomiks
- Fix transition status mapping (#2169) by @atomiks
- Fix
aria-controlsreference (#2170) by @atomiks - Fix test warning about mixed animation types (#2180) by @atomiks
Checkbox
- Breaking change: Support implicit
Field.Label.
IfField.Labelencloses Switch/Checkbox/Radio, thehtmlFor/idattributes are no longer explicitly set to associate them.
(#2036) by @mj12albert - Refactor to
useRenderElement(#2053) by @mj12albert - Always set
idon the<input>element (#2115) by @mj12albert
Checkbox Group
- Fix
onCheckedChangenot running when parent checkbox is present (#2155) by @mj12albert
Collapsible
- Allow content to resize naturally (#2043) by @atomiks
- Fix
aria-controlsreference (#2170) by @atomiks - Fix test warning about mixed animation types (#2180) by @atomiks
Context Menu
- Breaking change: Add
SubmenuRootpart.
Nested menus should be defined withMenu.SubmenuRootinstead ofMenu.Rootto to avoid ambiguity.
(#2042) by @atomiks - Fix CheckboxItemIndicator export (#2009) by @aarongarciah
Dialog
Field
- Breaking change: Support implicit
Field.Label.
IfField.Labelencloses Switch/Checkbox/Radio, thehtmlFor/idattributes are no longer explicitly set to associate them.
(#2036) by @mj12albert - Enable custom validation based on other form values (#1941) by @mj12albert
- Fix
onValueChangevaluetype (#2112) by @atomiks - Fix
Field.Labelfocusing trigger (#2118) by @atomiks - Fix slider field label (#2154) by @mj12albert
Fieldset
- Refactor to
useRenderElement(#2053) by @mj12albert
Form
- Enable custom validation based on other form values (#1941) by @mj12albert
Input
Menu
- Breaking change: Add
SubmenuRootpart.
Nested menus should be defined withMenu.SubmenuRootinstead ofMenu.Rootto to avoid ambiguity.
(#2042) by @atomiks - Unset
rolefrom Trigger (#2047) by @atomiks - Emit
closeevent oncancel-open(#2067) by @atomiks - Fix close toggle when rendering non-native button (#2071) by @atomiks
- Add
highlightedto itemState(#2079) by @atomiks - Remove highlighted effect (#2162) by @atomiks
- Cut out internal backdrop to allow interacting with triggers (#2141) by @michaldudak
- Fix active index sync on hover (#2163) by @atomiks
- Fix focus returning to root when submenus have exit transitions (#2163) by @atomiks
Menubar
- Fix
closeOnClick: falsenot working in nested menus (#2094) by @michaldudak
Navigation Menu
- Handle layout resize while open (#2070) by @atomiks
- Fix positioner height when opening menu using the keyboard arrows (#2060) by @juliomerisio
Number Field
- Ensure
onValueChangeis called with already-formatted parsed value (#1905) by @atomiks - Fix revalidation on change (#2174) by @atomiks
Popover
- Fix close toggle when rendering non-native button (#2071) by @atomiks
- Cut out internal backdrop to allow interacting with triggers (#2141) by @michaldudak
Radio Group
- Breaking change: Support implicit
Field.Label.
IfField.Labelencloses Radio, thehtmlFor/idattributes are no longer explicitly set to associate them.
(#2036) by @mj12albert - Refactor to
useRenderElement(#2053) by @mj12albert
Scroll Area
Select
- Breaking change: Print raw value in
Select.Value.
<Select.Value>now prints the raw value by default unless anitemsprop is specified onSelect.Root.
See https://base-ui.com/react/components/select#formatting-the-value for more information.
(#2087) by @atomiks - Performance: avoid re-renders (#1961) by @romgrk
- Fix close toggle when rendering non-native button (#2071) by @atomiks
- Fix
Field.Labelfocusing trigger (#2118) by @atomiks - Fix programmatic value changes and autofill handling (#2084) by @atomiks
- Add
highlightedto itemState(#2079) by @atomiks - Cut out internal backdrop to allow interacting with triggers (#2141) by @michaldudak
- Pass
valueas state (#2153) by @atomiks - Extend
FieldRoot.Statetype (#2192) by @atomiks
Slider
- Use pointer capture when dragging (#2059) by @mj12albert
- Fix slider field label (#2154) by @mj12albert
Switch
- Breaking change: Support implicit
Field.Label.
IfField.Labelencloses Switch, thehtmlFor/idattributes are no longer explicitly set to associate them.
(#2036) by @mj12albert
Tabs
- Fix indicator positioning when TabsList overflows (#2093) by @mj12albert
- Fix focus going out of sync when selected value is changed externally (#2107) by @atomiks
- Remove highlighted state (#2164) by @atomiks
Toolbar
- Set
disabledattr on toolbar button whenfocusableWhenDisabled={false}(#2176) by @mj12albert
useRender
- Make useRender RSC-friendly (#2134) by @michaldudak
All contributors of this release in alphabetical order: @aarongarciah, @atomiks, @bernardobelchior, @brijeshb42, @Janpot, @juliomerisio, @lesha1201, @michaldudak, @mj12albert, @oliviertassinari, @romgrk
v1.0.0-beta.0
May 29, 2025
General changes
- Remove proptypes (#1760) by @michaldudak
- Unify component export patterns (#1478) by @michaldudak
- Default
tabIndexto0on<button>parts (#1939) by @atomiks
Accordion
Alert Dialog
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus.
(#1782) by @atomiks - Use basic scroll lock on iOS
(#1890) by @atomiks
Checkbox
- Set
aria-required, useuseButton(#1777) by @mj12albert
Checkbox Group
- Breaking change: Enable submitting checkbox group value as one field.
For parent checkboxes, usevalueinstead ofnameon eachCheckbox.Rootpart to link as the values.
(#1948) by @mj12albert - Fix
validatefn incorrectly running twice (#1959) by @mj12albert
Context Menu
Dialog
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus.
(#1782) by @atomiks - Use basic scroll lock on iOS
(#1890) by @atomiks
Field
- Breaking change: Consolidate
Field.ErrorforceShowintomatchprop.
Usematch={true}(or implicit boolean) instead offorceShow.
(#1919) by @atomiks - Improve
Labellogic that prevents text selection on double click (#1784) by @atomiks - Fix validation inconsistency (#1779) by @atomiks
- Fix integration of Base UI components (#1755) by @atomiks
- Set
valueMissingto false if only error and not dirtied (#1810) by @atomiks validatewith latest value on blur (#1850) by @atomiks- Revalidate only
requiredon change (#1840) by @atomiks - Run validate function after native validations (#1926) by @mj12albert
- Fix
validatefn incorrectly running twice (#1959) by @mj12albert - Integrate range sliders with Form and Field (#1929) by @mj12albert
Form
- Fix integration of Base UI components (#1755) by @atomiks
- Select inputs on focus (#1858) by @atomiks
- Exclude number formatting from form value (#1957) by @mj12albert
- Integrate range sliders with Form and Field (#1929) by @mj12albert
Input
- Fix
Input.Propstype (#1915) by @mj12albert - Extend
Field.Control.State(#1954) by @atomiks
Menu
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus.
(#1782) by @atomiks - Fix function dependency handling (#1787) by @atomiks
- Add missing
'use client'toRadioGrouppart (#1851) by @atomiks - Ensure
nullitems are removed from composite lists (#1847) by @atomiks - Avoid
:focus-visiblestyle appearing (#1846) by @atomiks - Better handle dynamic and non-string items (#1861) by @atomiks
- Add
collisionAvoidanceprop (#1849) by @atomiks - Add
finalFocusandcloseDelayprops (#1918) by @atomiks - Use basic scroll lock on iOS
(#1890) by @atomiks
Menubar
- New
Menubarcomponent (#1684) by @michaldudak
Navigation Menu
Number Field
validatewith latest value on blur (#1850) by @atomiks- Move scrubbing logic to
ScrubAreacomponent (#1859) by @atomiks - Remove floating point errors when
snapOnStepis disabled (#1857) by @atomiks - Stop event propagation to allow composite components to be used within popups (#1871) by @atomiks
- Exclude number formatting from form value (#1957) by @mj12albert
Popover
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus.
(#1782) by @atomiks - Fix function dependency handling (#1787) by @atomiks
- Avoid prop getters when merging props (#1852) by @atomiks
- Add
collisionAvoidanceprop (#1849) by @atomiks - Fix nested
openOnHover(#1938) by @atomiks - Use basic scroll lock on iOS
(#1890) by @atomiks
Preview Card
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus.
(#1782) by @atomiks - Fix function dependency handling (#1787) by @atomiks
- Add
collisionAvoidanceprop (#1849) by @atomiks
Radio Group
- Fix composite focus of initially selected radio item (#1753) by @atomiks
- Add
inputRefprops (#1683) by @atomiks - Stop event propagation to allow composite components to be used within popups (#1871) by @atomiks
Select
- Breaking change: Move item anchoring prop to
Positioner.
Use<Select.Positioner alignItemWithTrigger={false}>instead of<Select.Root alignItemToTrigger={false}>(note theWithinstead ofTo).
(#1713) by @atomiks - Breaking change: Defer mounting until typeahead is needed.
Theplaceholderprop is now required. Previously, only SSR needed it to prevent a hydration flash, but client-side rendering now also requires it.
(#1906) by @atomiks - Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus.
(#1782) by @atomiks - Fix function dependency handling (#1787) by @atomiks
- Add
inputRefprops (#1683) by @atomiks - Refactor to
useRenderElement(#1797) by @atomiks - Ensure
nullitems are removed from composite lists (#1847) by @atomiks - Fix
idprop forwarding to hidden input (#1862) by @atomiks - Avoid
:focus-visiblestyle appearing (#1846) by @atomiks - Fix
transitionStatusmapping onItemIndicator(#1925) by @atomiks - Better handle dynamic and non-string items (#1861) by @atomiks
- Use
Select.ItemTextref to grab default text content (#1943) by @atomiks - Add
collisionAvoidanceprop (#1849) by @atomiks - Use basic scroll lock on iOS
(#1890) by @atomiks
Slider
- Breaking change: Drop
inputIdprop from Thumb.
(#1914) by @mj12albert - Position thumb based on value instead of pointer location when dragging (#1750) by @DarthSim
- Use
useRenderElement(#1772) by @mj12albert - Add
inputRefprops (#1683) by @atomiks - Add
localeprop (#1796) by @mj12albert - Stop event propagation to allow composite components to be used within popups (#1871) by @atomiks
- set
data-draggingon touchstart and pointerdown (#1874) by @mj12albert - Integrate range sliders with Form and Field (#1929) by @mj12albert
Toast
- Breaking change: Add
Portalpart.
Place<Toast.Viewport>inside of<Toast.Portal>.
(#1962) by @atomiks - Breaking change: Avoid removing limited toasts from the DOM.
The[data-limited]styles in the demos were updated to handle limited toasts remaining in the DOM. They should now be a standalone style as&[data-limited] { opacity: 0 }.
(#1953) by @atomiks - Fix swipe jump on iOS (#1785) by @atomiks
Toggle
Toolbar
Tooltip
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus.
(#1782) by @atomiks - Fix function dependency handling (#1787) by @atomiks
- Avoid prop getters when merging props (#1852) by @atomiks
- Remove
trackCursorAxistype fromPositioner(#1895) by @atomiks - Apply
pointer-events: nonetoPositionerwhen not hoverable (#1917) by @atomiks - Add
collisionAvoidanceprop (#1849) by @atomiks
useRender
- Breaking change: Performance/refactor:
useRender. An object with arenderElementproperty is no longer returned; instead, the hook returns the element directly (const element = useRender(...)). Therefsoption was also renamed toref.
(#1934) by @romgrk - Skip most of useRenderElement logic when unnecessary (#1967) by @michaldudak
All contributors of this release in alphabetical order: @aarongarciah, @atomiks, @brijeshb42, @DarthSim, @flaviendelangle, @Janpot, @JCQuintas, @michaldudak, @mj12albert, @oliviertassinari, @romgrk, @Yonava, @ZeeshanTamboli
v1.0.0-alpha.8
Apr 17, 2025
Accordion
- Recalculate panel dimensions on layout resize (#1704) @atomiks
- Rework animations and transitions (#1601) @mj12albert
AlertDialog
- Breaking change: Rename
data-has-nested-dialogstodata-nested-dialog-open(#1686) @mj12albert - Fix
onOpenChangetypes forevent/reasonpassing (#1721) @atomiks - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) @atomiks - Fix text selection & right-clicks (#1702) @mj12albert
CheckboxGroup
Collapsible
- Fix ForwardedRef type of CollapsiblePanel (#1595) @megos
- Recalculate panel dimensions on layout resize (#1704) @atomiks
- Rework animations and transitions (#1601) @mj12albert
Dialog
- Breaking change: Rename
data-has-nested-dialogstodata-nested-dialog-open(#1686) @mj12albert - Breaking change: Add new
trap-focusvalue tomodalprop.
Dialogs withmodal=falseno longer trap focus.
(#1571) @atomiks - Fix
onOpenChangetypes forevent/reasonpassing (#1721) @atomiks - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) @atomiks - Fix text selection & right-clicks (#1702) @mj12albert
- Allow document to slide input into view on iOS when keyboard opens (#1735) @atomiks
Field
Menu
- Add missing item data attributes docs (#1691) @atomiks
- Fix
inertprop compatibility in React <19 (#1618) @sebinsua - Fix stuck highlight on submenu trigger when submenu opens with keyboard (#1698) @atomiks
- Fix
onOpenChangetypes forevent/reasonpassing (#1721) @atomiks - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) @atomiks - Fix text selection & right-clicks (#1702) @mj12albert
Meter
- New Meter component (#1435) @mj12albert
NumberField
Popover
- Breaking change: Add new
trap-focusvalue tomodalprop (#1571) @atomiks - Fix
inertprop compatibility in React <19 (#1618) @sebinsua - Fix
onOpenChangetypes forevent/reasonpassing (#1721) @atomiks - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) @atomiks - Fix text selection & right-clicks (#1702) @mj12albert
Progress
- Breaking change: Add
Progress.Labelandlocaleprop.
ThegetAriaLabelprop was removed asProgress.Labelshould be used to provide an accessible name.
(#1666) @mj12albert
Radio
ScrollArea
- Breaking change: Add
Contentpart.
It is now required to include theScrollArea.ContentwithinScrollArea.Viewportpart when the content is horizontally scrollable.
(#1607) @atomiks - Handle visibility change and nesting (#1598) @atomiks
- Correct thumb sizing with scrollbar margins (#1606) @atomiks
Select
- Breaking change: Improve item highlight performance.
The highlighted state is now removed. It's not possible to customize thedata-highlightedattribute anymore.
(#1570) @atomiks - Avoid double commit on value change (#1597) @atomiks
- Reset
selectedIndexwhen set tonull(#1596) @atomiks - Add missing item data attributes docs (#1691) @atomiks
- Fix
onOpenChangetypes forevent/reasonpassing (#1721) @atomiks - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) @atomiks - Fix text selection & right-clicks (#1702) @mj12albert
Slider
- Correct thumb positioning when control has padding (#1661) @mj12albert
- Prevent range slider thumbs from being dragged past each other (#1612) @mj12albert
- Fix incorrect CSS position on vertical slider indicator (#1599) @ZeeshanTamboli
- Fix overlapping slider thumbs stuck at min or max (#1732) @mj12albert
Toast
Tooltip
- Avoid re-rendering unrelated consumers (#1677) @atomiks
- Add
disabledprop (#1682) @atomiks - Fix
onOpenChangetypes forevent/reasonpassing (#1721) @atomiks - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) @atomiks - Fix text selection & right-clicks (#1702) @mj12albert
All contributors of this release in alphabetical order: @atomiks, @megos, @michaldudak, @mj12albert, @oliviertassinari, @sebinsua, @ZeeshanTamboli