Skip to content

Releases: mui/base-ui

v1.0.0-rc.0

04 Dec 11:41
caa9eeb

Choose a tag to compare

v1.0.0-rc.0 Pre-release
Pre-release

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 new uncheckedValue prop is set.
    (#3406) by @atomiks

Collapsible

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

Number Field

Popover

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 new uncheckedValue prop is set.
    (#3406) by @atomiks

Tabs

  • Breaking change: Fix Panel keepMounted behavior.

    The value prop is now required on <Tabs.Tab> and <Tabs.Panel> parts.
    (#3372) by @atomiks

Toast

Tooltip

All contributors of this release in alphabetical order: @atomiks, @michaldudak, @mj12albert, @oliviertassinari, @pondorasti, @romgrk

v1.0.0-beta.7

27 Nov 14:46
043572d

Choose a tag to compare

v1.0.0-beta.7 Pre-release
Pre-release

General changes

  • Fix error about props.ref access in React <=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 <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

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

Dialog

  • Fix trigger registration loop (#3249) by @atomiks
  • Fix focus restoration when focused element is hidden with CSS (#3313) by @atomiks

Form

Menu

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 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

Tooltip

All contributors of this release in alphabetical order: @atomiks, @brijeshb42, @Copilot, @EmilNordling, @michaldudak, @mj12albert, @oliviertassinari, @ZeeshanTamboli

v1.0.0-beta.6

17 Nov 22:00
eb7e80b

Choose a tag to compare

v1.0.0-beta.6 Pre-release
Pre-release

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

17 Nov 15:42
158aa3a

Choose a tag to compare

v1.0.0-beta.5 Pre-release
Pre-release

General changes

  • Breaking change: Replace trackAnchor with disableAnchorTracking.
    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.
    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 Esc to bubble if <Autocomplete.Empty> is not used (#2935) by @atomiks
  • Add dialog role 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 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 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 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 Esc 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.
    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.
    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.
    Errors from the errors prop are always cleared when the value changes. (#3136) by @mj12albert
  • Add onSubmit validation mode.
    Additionally, validationMode can be set on <Form>. (#3013) by @mj12albert
  • Add onFormSubmit callback (#3131) by @mj12albert

Menu

  • Breaking change: Support detached triggers.
    openOnHover, delay, and closeDelay props 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: hidden on <body> for overlay scrollbars by default. Avoids sticky elements shifting if <body> has an overflow style specified. (#3083) by @atomiks

Navigation Menu

Number Field

Popover

  • Breaking change: Support detached triggers and multiple triggers per popover.
    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.
    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.
    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 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.
    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).
    The value swap was also added, which allows thumbs to be dragged past each other when they collide.
    Lastly, the value none is the same as the previous behavior, where thumbs can't be dragged past one another.
    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. (#3024) by @atomiks
    • 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
  • Breaking change: Change activateOnFocus to false.
    If you need your Tabs to...
Read more

v1.0.0-beta.4

01 Oct 13:57
cb66134

Choose a tag to compare

v1.0.0-beta.4 Pre-release
Pre-release

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 Enter if no item is highlighted by default (#2700) by @atomiks
  • Use ReadonlyArray type for items (#2819) by @atomiks

Collapsible

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 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 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

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

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 object values with isItemEqualToValue prop (#2704) by @atomiks
  • Use ReadonlyArray type for items (#2819) by @atomiks

Slider

  • Breaking change: onValueChange has activeThumbIndex as part of the eventDetails object as a second parameter, not third. (#2796) by @atomiks
  • Breaking change: Remove redundant hidden inputs.
    The inputRef prop is moved from Root to Thumb.
    (#2631) by @mj12albert
  • Fix pointer tracking bugs (#2688) by @mj12albert
  • Fix input attributes (#2728) by @mj12albert
  • Add thumbAlignment prop (#2540) by @mj12albert

Switch

Toast

  • Breaking change: Support variable height stacking.
    Toasts that have varying heights no longer force a data-expanded expanded 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

  • Breaking change: Rename toggleMultiple prop to multiple.
    (#2764) by @LukasTy

Toolbar

  • Fix CompositeList not updating item order on reordering (#2675) by @chuganzy

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

03 Sep 15:33
6d2e113

Choose a tag to compare

v1.0.0-beta.3 Pre-release
Pre-release

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) becomes onOpenChange(open, eventDetails), where eventDetails contains event and reason properties.
    -onOpenChange: (open, event, reason) => {
    -  if (reason === 'escape-key') {
    +onOpenChange: (open, eventDetails) => {
    +  if (eventDetails.reason === 'escape-key') {
         // ...
       }
     }
    (#2382) by @atomiks

Alert Dialog

  • Breaking change: Support initialFocus and finalFocus functions.
    The initialFocus and finalFocus props can be functions that return DOM elements to focus.
    This is a new feature for finalFocus and a breaking change for initialFocus as 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

  • Fix default offsets when align="center" or side differs (#2601) by @atomiks

Dialog

  • Breaking change: Support initialFocus and finalFocus functions.
    The initialFocus and finalFocus props can be functions that return DOM elements to focus.
    This is a new feature for finalFocus and a breaking change for initialFocus as 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 onValueChange to fire when defaultValue/value are not set (#2600) by @atomiks

Input

  • Allow onValueChange to fire when defaultValue/value are not set (#2600) by @atomiks

Menu

  • Breaking change: Fix closeParentOnEsc default value.
    The default value of closeParentOnEsc in 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 initialFocus and finalFocus functions.
    The initialFocus and finalFocus props can be functions that return DOM elements to focus.
    This is a new feature for finalFocus and a breaking change for initialFocus as 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-origin variable calculation when Positioner sideOffset is a function (#2511) by @atomiks
  • Fix submenu events (#2483) by @atomiks
  • Fix limitShift offset based on arrow size (#2571) by @atomiks

Navigation Menu

  • Breaking change: Semantic element structure and active page prop.
    NavigationMenu.List renders <ul> and NavigationMenu.Item renders <li> by default.
    (#2526) by @atomiks
  • Unshare AbortController instance (#2441) by @tomokinat
  • Close on link click by default (#2535) by @atomiks

Number Field

Popover

  • Breaking change: Support initialFocus and finalFocus functions.
    The initialFocus and finalFocus props can be functions that return DOM elements to focus.
    This is a new feature for finalFocus and a breaking change for initialFocus as 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-origin variable calculation when Positioner sideOffset is a function (#2511) by @atomiks
  • Restore focus to popup when focused element is removed (#2479) by @atomiks
  • Fix limitShift offset based on arrow size (#2571) by @atomiks

Preview Card

  • Fix transform-origin variable calculation when Positioner sideOffset is a function (#2511) by @atomiks
  • Fix limitShift offset based on arrow size (#2571) by @atomiks

Radio Group

  • Return null in form data when no option selected (#2473) by @ingokpp

Scroll Area

  • Prevent pointer events from sibling portals triggering hover (#2542) by @kenanyusuf

Select

  • Fix stale items prop (#2397) by @atomiks
  • Fix unexpected close when nested inside two popovers (#2481) by @atomiks
  • Fix onValueChange type inference (#2372) by @atomiks
  • Fix transform-origin variable calculation when Positioner sideOffset is a function (#2511) by @atomiks
  • Reset state when selected item is removed (#2577) by @atomiks
  • Fix data-highlighted and DOM focus item desync (#2569) by @atomiks
  • Fix item click with defaultOpen prop (#2570) by @atomiks
  • Fix scroll arrows not propagating scroll fully to start/end of list (#2523) by @atomiks
  • Fix limitShift offset 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-visible should be replaced with .Thumb:has(:focus-visible).
    The tabIndex prop is moved from Root to Thumb where it gets forwarded to the input.
    The thumb's render prop no longer contains the third inputProps argument; the input element is instead merged with children.
    (#2578) by @mj12albert
  • Reduce bundle size (#2551) by @oliviertassinari
  • Fix thumb :focus-visible with mixed keyboard and pointer modality (#2584) by @mj12albert
  • Add index prop to Slider.Thumb (#2593) by @mj12albert

Tabs

Tooltip

  • Fix transform-origin variable calculation when Positioner sideOffset is a function (#2511) by @atomiks
  • Fix limitShift offset based on arrow size (#2571) by @atomiks

useRender

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

30 Jul 14:59
2ccc866

Choose a tag to compare

v1.0.0-beta.2 Pre-release
Pre-release

General changes

  • Fix navigator checks and ensure safe platform retrieval (#2273) by @mo36924
  • Prevent Space key default on keydown (#2295) by @atomiks
  • Check for performance existence on server (#2316) by @atomiks

Accordion

Alert Dialog

Checkbox

Collapsible

Dialog

Field

Form

Menu

Menubar

Meter

Navigation Menu

  • Breaking change: Support inlined nesting.
    Ensure the popup's width is set to var(--popup-width) unconditionally (without the media query) on the .Popup class.
    (#2269) by @atomiks
  • Avoid double useRenderElement passes (#2256) by @atomiks
  • Add useButton integration to Trigger (#2296) by @atomiks
  • Fix popup size transitions on iOS (#2387) by @atomiks

Number Field

Popover

  • Support ShadowRoot containers (#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 click event for outside press dismissal (#2275) by @atomiks

Preview Card

Progress

Radio Group

Scroll Area

  • Disable user-select on scrollbar and non-main button interactions (#2338) by @atomiks

Select

Slider

Toast

Toggle

Toggle Group

Toolbar

Tooltip

All contributors of this release in alphabetical order: @aelfannir, @atomiks, @brijeshb42, @cgatian, @Janpot, @michaldudak, @mj12albert, @mo36924, @romgrk, @sai6855

v1.0.0-beta.1

01 Jul 10:31
27c13bb

Choose a tag to compare

v1.0.0-beta.1 Pre-release
Pre-release

Jul 1, 2025

General changes

Accordion

Checkbox

  • Breaking change: Support implicit Field.Label.
    If Field.Label encloses Switch/Checkbox/Radio, the htmlFor/id attributes are no longer explicitly set to associate them.
    (#2036) by @mj12albert
  • Refactor to useRenderElement (#2053) by @mj12albert
  • Always set id on the <input> element (#2115) by @mj12albert

Checkbox Group

  • Fix onCheckedChange not running when parent checkbox is present (#2155) by @mj12albert

Collapsible

Context Menu

  • Breaking change: Add SubmenuRoot part.
    Nested menus should be defined with Menu.SubmenuRoot instead of Menu.Root to to avoid ambiguity.
    (#2042) by @atomiks
  • Fix CheckboxItemIndicator export (#2009) by @aarongarciah

Dialog

Field

  • Breaking change: Support implicit Field.Label.
    If Field.Label encloses Switch/Checkbox/Radio, the htmlFor/id attributes are no longer explicitly set to associate them.
    (#2036) by @mj12albert
  • Enable custom validation based on other form values (#1941) by @mj12albert
  • Fix onValueChange value type (#2112) by @atomiks
  • Fix Field.Label focusing trigger (#2118) by @atomiks
  • Fix slider field label (#2154) by @mj12albert

Fieldset

Form

Input

Menu

  • Breaking change: Add SubmenuRoot part.
    Nested menus should be defined with Menu.SubmenuRoot instead of Menu.Root to to avoid ambiguity.
    (#2042) by @atomiks
  • Unset role from Trigger (#2047) by @atomiks
  • Emit close event on cancel-open (#2067) by @atomiks
  • Fix close toggle when rendering non-native button (#2071) by @atomiks
  • Add highlighted to item State (#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

Navigation Menu

Number Field

  • Ensure onValueChange is 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.
    If Field.Label encloses Radio, the htmlFor/id attributes are no longer explicitly set to associate them.
    (#2036) by @mj12albert
  • Refactor to useRenderElement (#2053) by @mj12albert

Scroll Area

  • Ignore data-scrolling during programmatic scroll (#1908) by @atomiks

Select

Slider

Switch

  • Breaking change: Support implicit Field.Label.
    If Field.Label encloses Switch, the htmlFor/id attributes are no longer explicitly set to associate them.
    (#2036) by @mj12albert

Tabs

Toolbar

  • Set disabled attr on toolbar button when focusableWhenDisabled={false} (#2176) by @mj12albert

useRender

All contributors of this release in alphabetical order: @aarongarciah, @atomiks, @bernardobelchior, @brijeshb42, @Janpot, @juliomerisio, @lesha1201, @michaldudak, @mj12albert, @oliviertassinari, @romgrk

v1.0.0-beta.0

29 May 12:51
74975af

Choose a tag to compare

v1.0.0-beta.0 Pre-release
Pre-release

May 29, 2025

General changes

Accordion

  • Stop event propagation to allow composite components to be used within popups (#1871) by @atomiks

Alert Dialog

  • Breaking change: Refine OpenChangeReason. hover is now trigger-hover; click is now trigger-press; focus is now trigger-focus.
    (#1782) by @atomiks
  • Use basic scroll lock on iOS
    (#1890) by @atomiks

Checkbox

Checkbox Group

  • Breaking change: Enable submitting checkbox group value as one field.
    For parent checkboxes, use value instead of name on each Checkbox.Root part to link as the values.
    (#1948) by @mj12albert
  • Fix validate fn incorrectly running twice (#1959) by @mj12albert

Context Menu

Dialog

  • Breaking change: Refine OpenChangeReason. hover is now trigger-hover; click is now trigger-press; focus is now trigger-focus.
    (#1782) by @atomiks
  • Use basic scroll lock on iOS
    (#1890) by @atomiks

Field

  • Breaking change: Consolidate Field.Error forceShow into match prop.
    Use match={true} (or implicit boolean) instead of forceShow.
    (#1919) by @atomiks
  • Improve Label logic 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 valueMissing to false if only error and not dirtied (#1810) by @atomiks
  • validate with latest value on blur (#1850) by @atomiks
  • Revalidate only required on change (#1840) by @atomiks
  • Run validate function after native validations (#1926) by @mj12albert
  • Fix validate fn incorrectly running twice (#1959) by @mj12albert
  • Integrate range sliders with Form and Field (#1929) by @mj12albert

Form

Input

Menu

  • Breaking change: Refine OpenChangeReason. hover is now trigger-hover; click is now trigger-press; focus is now trigger-focus.
    (#1782) by @atomiks
  • Fix function dependency handling (#1787) by @atomiks
  • Add missing 'use client' to RadioGroup part (#1851) by @atomiks
  • Ensure null items are removed from composite lists (#1847) by @atomiks
  • Avoid :focus-visible style appearing (#1846) by @atomiks
  • Better handle dynamic and non-string items (#1861) by @atomiks
  • Add collisionAvoidance prop (#1849) by @atomiks
  • Add finalFocus and closeDelay props (#1918) by @atomiks
  • Use basic scroll lock on iOS
    (#1890) by @atomiks

Menubar

Navigation Menu

Number Field

  • validate with latest value on blur (#1850) by @atomiks
  • Move scrubbing logic to ScrubArea component (#1859) by @atomiks
  • Remove floating point errors when snapOnStep is 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. hover is now trigger-hover; click is now trigger-press; focus is now trigger-focus.
    (#1782) by @atomiks
  • Fix function dependency handling (#1787) by @atomiks
  • Avoid prop getters when merging props (#1852) by @atomiks
  • Add collisionAvoidance prop (#1849) by @atomiks
  • Fix nested openOnHover (#1938) by @atomiks
  • Use basic scroll lock on iOS
    (#1890) by @atomiks

Preview Card

  • Breaking change: Refine OpenChangeReason. hover is now trigger-hover; click is now trigger-press; focus is now trigger-focus.
    (#1782) by @atomiks
  • Fix function dependency handling (#1787) by @atomiks
  • Add collisionAvoidance prop (#1849) by @atomiks

Radio Group

  • Fix composite focus of initially selected radio item (#1753) by @atomiks
  • Add inputRef props (#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 the With instead of To).
    (#1713) by @atomiks
  • Breaking change: Defer mounting until typeahead is needed.
    The placeholder prop 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. hover is now trigger-hover; click is now trigger-press; focus is now trigger-focus.
    (#1782) by @atomiks
  • Fix function dependency handling (#1787) by @atomiks
  • Add inputRef props (#1683) by @atomiks
  • Refactor to useRenderElement (#1797) by @atomiks
  • Ensure null items are removed from composite lists (#1847) by @atomiks
  • Fix id prop forwarding to hidden input (#1862) by @atomiks
  • Avoid :focus-visible style appearing (#1846) by @atomiks
  • Fix transitionStatus mapping on ItemIndicator (#1925) by @atomiks
  • Better handle dynamic and non-string items (#1861) by @atomiks
  • Use Select.ItemText ref to grab default text content (#1943) by @atomiks
  • Add collisionAvoidance prop (#1849) by @atomiks
  • Use basic scroll lock on iOS
    (#1890) by @atomiks

Slider

Toast

  • Breaking change: Add Portal part.
    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

  • Stop event propagation to allow composite components to be used within popups (#1871) by @atomiks

Toolbar

  • Stop event propagation to allow composite components to be used within popups (#1871) by @atomiks

Tooltip

  • Breaking change: Refine OpenChangeReason. hover is now trigger-hover; click is now trigger-press; focus is now trigger-focus.
    (#1782) by @atomiks
  • Fix function dependency handling (#1787) by @atomiks
  • Avoid prop getters when merging props (#1852) by @atomiks
  • Remove trackCursorAxis type from Positioner (#1895) by @atomiks
  • Apply pointer-events: none to Positioner when not hoverable (#1917) by @atomiks
  • Add collisionAvoidance prop (#1849) by @atomiks

useRender

  • Breaking change: Performance/refactor: useRender. An object with a renderElement property is no longer returned; instead, the hook returns the element directly (const element = useRender(...)). The refs option was also renamed to ref.
    (#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

17 Apr 12:10
4613c52

Choose a tag to compare

v1.0.0-alpha.8 Pre-release
Pre-release

Apr 17, 2025

Accordion

AlertDialog

  • Breaking change: Rename data-has-nested-dialogs to data-nested-dialog-open (#1686) @mj12albert
  • Fix onOpenChange types for event/reason passing (#1721) @atomiks
  • Use consistent inert attr and map [data-popup-open] back to open (#1650) @atomiks
  • Fix text selection & right-clicks (#1702) @mj12albert

CheckboxGroup

Collapsible

Dialog

  • Breaking change: Rename data-has-nested-dialogs to data-nested-dialog-open (#1686) @mj12albert
  • Breaking change: Add new trap-focus value to modal prop.
    Dialogs with modal=false no longer trap focus.
    (#1571) @atomiks
  • Fix onOpenChange types for event/reason passing (#1721) @atomiks
  • Use consistent inert attr and map [data-popup-open] back to open (#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

Meter

NumberField

Popover

Progress

  • Breaking change: Add Progress.Label and locale prop.
    The getAriaLabel prop was removed as Progress.Label should be used to provide an accessible name.
    (#1666) @mj12albert

Radio

ScrollArea

  • Breaking change: Add Content part.
    It is now required to include the ScrollArea.Content within ScrollArea.Viewport part 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 the data-highlighted attribute anymore.
    (#1570) @atomiks
  • Avoid double commit on value change (#1597) @atomiks
  • Reset selectedIndex when set to null (#1596) @atomiks
  • Add missing item data attributes docs (#1691) @atomiks
  • Fix onOpenChange types for event/reason passing (#1721) @atomiks
  • Use consistent inert attr and map [data-popup-open] back to open (#1650) @atomiks
  • Fix text selection & right-clicks (#1702) @mj12albert

Slider

Toast

Tooltip

All contributors of this release in alphabetical order: @atomiks, @megos, @michaldudak, @mj12albert, @oliviertassinari, @sebinsua, @ZeeshanTamboli