Releases
Changelogs for each Base UI release.
v1.0.0-beta.0
May 29, 2025
General changes
- Remove proptypes (#1760)
- Unify component export patterns (#1478)
- Default
tabIndexto0on<button>parts (#1939)
Accordion
- Stop event propagation to allow composite components to be used within popups (#1871)
Alert Dialog
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus. (#1782) - Use basic scroll lock on iOS (#1890)
Checkbox
- Set
aria-required, useuseButton(#1777)
Checkbox Group
- Breaking change: Enable submitting checkbox group value as one field.
For parent checkboxes, use
valueinstead ofnameon eachCheckbox.Rootpart to link as the values. (#1948) - Fix
validatefn incorrectly running twice (#1959)
Context Menu
- New
ContextMenucomponent (#1665)
Dialog
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus. (#1782) - Use basic scroll lock on iOS (#1890)
Field
- Breaking change: Consolidate
Field.ErrorforceShowintomatchprop. Usematch={true}(or implicit boolean) instead offorceShow. (#1919) - Improve
Labellogic that prevents text selection on double click (#1784) - Fix validation inconsistency (#1779)
- Fix integration of Base UI components (#1755)
- Set
valueMissingto false if only error and not dirtied (#1810) validatewith latest value on blur (#1850)- Revalidate only
requiredon change (#1840) - Run validate function after native validations (#1926)
- Fix
validatefn incorrectly running twice (#1959) - Integrate range sliders with Form and Field (#1929)
Form
- Fix integration of Base UI components (#1755)
- Select inputs on focus (#1858)
- Exclude number formatting from form value (#1957)
- Integrate range sliders with Form and Field (#1929)
Input
Menu
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus. (#1782) - Fix function dependency handling (#1787)
- Add missing
'use client'toRadioGrouppart (#1851) - Ensure
nullitems are removed from composite lists (#1847) - Avoid
:focus-visiblestyle appearing (#1846) - Better handle dynamic and non-string items (#1861)
- Add
collisionAvoidanceprop (#1849) - Add
finalFocusandcloseDelayprops (#1918) - Use basic scroll lock on iOS (#1890)
Menubar
- New
Menubarcomponent (#1684)
Navigation Menu
- New
NavigationMenucomponent (#1741)
Number Field
validatewith latest value on blur (#1850)- Move scrubbing logic to
ScrubAreacomponent (#1859) - Remove floating point errors when
snapOnStepis disabled (#1857) - Stop event propagation to allow composite components to be used within popups (#1871)
- Exclude number formatting from form value (#1957)
Popover
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus. (#1782) - Fix function dependency handling (#1787)
- Avoid prop getters when merging props (#1852)
- Add
collisionAvoidanceprop (#1849) - Fix nested
openOnHover(#1938) - Use basic scroll lock on iOS (#1890)
Preview Card
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus. (#1782) - Fix function dependency handling (#1787)
- Add
collisionAvoidanceprop (#1849)
Radio Group
- Fix composite focus of initially selected radio item (#1753)
- Add
inputRefprops (#1683) - Stop event propagation to allow composite components to be used within popups (#1871)
Select
- Breaking change: Move item anchoring prop to
Positioner. Use<Select.Positioner alignItemWithTrigger={false}>instead of<Select.Root alignItemToTrigger={false}>(note theWithinstead ofTo). (#1713) - Breaking change: Defer mounting until typeahead is needed.
The
placeholderprop is now required. Previously, only SSR needed it to prevent a hydration flash, but client-side rendering now also requires it. (#1906) - Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus. (#1782) - Fix function dependency handling (#1787)
- Add
inputRefprops (#1683) - Refactor to
useRenderElement(#1797) - Ensure
nullitems are removed from composite lists (#1847) - Fix
idprop forwarding to hidden input (#1862) - Avoid
:focus-visiblestyle appearing (#1846) - Fix
transitionStatusmapping onItemIndicator(#1925) - Better handle dynamic and non-string items (#1861)
- Use
Select.ItemTextref to grab default text content (#1943) - Add
collisionAvoidanceprop (#1849) - Use basic scroll lock on iOS (#1890)
Slider
- Breaking change: Drop
inputIdprop from Thumb. (#1914) - Position thumb based on value instead of pointer location when dragging (#1750)
- Use
useRenderElement(#1772) - Add
inputRefprops (#1683) - Add
localeprop (#1796) - Stop event propagation to allow composite components to be used within popups (#1871)
- set
data-draggingon touchstart and pointerdown (#1874) - Integrate range sliders with Form and Field (#1929)
Toast
- Breaking change: Add
Portalpart. Place<Toast.Viewport>inside of<Toast.Portal>. (#1962) - 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) - Fix swipe jump on iOS (#1785)
Toggle
- Stop event propagation to allow composite components to be used within popups (#1871)
Toolbar
- Stop event propagation to allow composite components to be used within popups (#1871)
Tooltip
- Breaking change: Refine
OpenChangeReason.hoveris nowtrigger-hover;clickis nowtrigger-press;focusis nowtrigger-focus. (#1782) - Fix function dependency handling (#1787)
- Avoid prop getters when merging props (#1852)
- Remove
trackCursorAxistype fromPositioner(#1895) - Apply
pointer-events: nonetoPositionerwhen not hoverable (#1917) - Add
collisionAvoidanceprop (#1849)
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) - Skip most of useRenderElement logic when unnecessary (#1967)
v1.0.0-alpha.8
Apr 17, 2025
Accordion
AlertDialog
- Breaking change: Rename
data-has-nested-dialogstodata-nested-dialog-open(#1686) - Fix
onOpenChangetypes forevent/reasonpassing (#1721) - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) - Fix text selection & right-clicks (#1702)
CheckboxGroup
- Parent checkbox/nested demos (#1610)
Collapsible
- Fix ForwardedRef type of CollapsiblePanel (#1595)
- Recalculate panel dimensions on layout resize (#1704)
- Rework animations and transitions (#1601)
Dialog
- Breaking change: Rename
data-has-nested-dialogstodata-nested-dialog-open(#1686) - Breaking change: Add new
trap-focusvalue tomodalprop. Dialogs withmodal=falseno longer trap focus. (#1571) - Fix
onOpenChangetypes forevent/reasonpassing (#1721) - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) - Fix text selection & right-clicks (#1702)
- Allow document to slide input into view on iOS when keyboard opens (#1735)
Field
- Fix forwarding of
nameanddisabledprops (#1616)
Menu
- Add missing item data attributes docs (#1691)
- Fix
inertprop compatibility in React <19 (#1618) - Fix stuck highlight on submenu trigger when submenu opens with keyboard (#1698)
- Fix
onOpenChangetypes forevent/reasonpassing (#1721) - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) - Fix text selection & right-clicks (#1702)
Meter
- New Meter component (#1435)
NumberField
Popover
- Breaking change: Add new
trap-focusvalue tomodalprop (#1571) - Fix
inertprop compatibility in React <19 (#1618) - Fix
onOpenChangetypes forevent/reasonpassing (#1721) - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) - Fix text selection & right-clicks (#1702)
Progress
- Breaking change: Add
Progress.Labelandlocaleprop. ThegetAriaLabelprop was removed asProgress.Labelshould be used to provide an accessible name. (#1666)
Radio
- Fix value forwarding and null handling (#1697)
ScrollArea
- Breaking change: Add
Contentpart. It is now required to include theScrollArea.ContentwithinScrollArea.Viewportpart when the content is horizontally scrollable. (#1607) - Handle visibility change and nesting (#1598)
- Correct thumb sizing with scrollbar margins (#1606)
Select
- Breaking change: Improve item highlight performance.
The highlighted state is now removed. It’s not possible to customize the
data-highlightedattribute anymore. (#1570) - Avoid double commit on value change (#1597)
- Reset
selectedIndexwhen set tonull(#1596) - Add missing item data attributes docs (#1691)
- Fix
onOpenChangetypes forevent/reasonpassing (#1721) - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) - Fix text selection & right-clicks (#1702)
Slider
- Correct thumb positioning when control has padding (#1661)
- Prevent range slider thumbs from being dragged past each other (#1612)
- Fix incorrect CSS position on vertical slider indicator (#1599)
- Fix overlapping slider thumbs stuck at min or max (#1732)
Toast
- New Toast component (#1467)
Tooltip
- Avoid re-rendering unrelated consumers (#1677)
- Add
disabledprop (#1682) - Fix
onOpenChangetypes forevent/reasonpassing (#1721) - Use consistent
inertattr and map[data-popup-open]back toopen(#1650) - Fix text selection & right-clicks (#1702)
v1.0.0-alpha.7
Mar 20, 2025
Accordion
- Fix
aria-labelledbyon accordion panel (#1544)
AlertDialog
- Fix selection on outside press on Firefox with modal prop (#1573)
- Fix non-interactive button disabled state (#1473)
actionsRefprop (#1236)
Avatar
Collapsible
- Update props destructuring to fix Trigger disabled state (#1469)
Dialog
- Fix selection on outside press on Firefox with modal prop (#1573)
- Fix non-interactive button disabled state (#1473)
actionsRefprop (#1236)
Field
- Fix
FieldControl[data-filled] not reacting to external value changes (#1565)
Menu
- Ensure submenu triggers respond to clicks when
openOnHover=false(#1583) - Ensure
stickIfOpenis reset totruecorrectly (#1548) - Fix selection on outside press on Firefox with modal prop (#1573)
- Reset
hoverEnabledstate on close (#1461) - Fix prop merging issues (#1445)
- Set
pointer-events: nonestyle on backdrops when hoverable (#1351) actionsRefprop (#1236)
NumberField
- Fix ScrubArea on Safari ([#1584])(https://github.com/mui/base-ui/pull/1584/))
- Fix
large/smallStepgetting stuck (#1578) - Fix parse of numbers with spaces as thousands separators (#1577)
- Prevent virtual cursor overlapping native one (#1491)
- Fix disabled state on increment/decrement buttons (#1462)
- Correct virtual cursor rendering (#1484)
- Add
localeprop (#1488) - Improve virtual cursor perf (#1485)
Popover
- Ensure
stickIfOpenis reset totruecorrectly (#1548) - Fix selection on outside press on Firefox with modal prop (#1573)
- Set
pointer-events: nonestyle on backdrops when hoverable (#1351) - Fix non-interactive button disabled state (#1473)
modalprop (#1459)actionsRefprop (#1236)
PreviewCard
RadioGroup
Select
- Fix selection on outside press on Firefox with modal prop (#1573)
actionsRefprop (#1236)- Improve
ScrollArrowbehavior (#1564) - Ensure switching controlled value to
nullupdatesSelect.Valuelabel (#1561) - Pass
valueas second argument to function childrenSelect.Value(#1562) - Fix focus jump while hovering while navigating with keyboard (#1563)
- Fix disabled state changing (#1526)
Slider
- Fix thumb positioning when controlled value violates min/max/step (#1541)
- Warn when
minis not less thanmax(#1475) - Narrow the type of
valuein callbacks (#1241)
Tabs
Toolbar
- Add Toolbar components (#1349)
Tooltip
useRender
v1.0.0-alpha.6
Feb 6, 2025
AlertDialog
Avatar
- Add Avatar component (#1210)
Checkbox
- Avoid applying
hiddenattr whenkeepMounted=truefor indicators (#1329)
Dialog
- Remove
modal={open}state (#1352) - Support multiple non-nested modal backdrops (#1327)
- Fix missing
ids on Title and Description (#1326) onOpenChangeCompleteprop (#1305)- Fix jump with
scroll-behaviorstyle (#1343)
Field
Form
- Fix focusing of invalid field controls on errors prop change (#1364)
Menu
- Avoid applying
hiddenattr whenkeepMounted=truefor indicators (#1329) - Support submenus with
openOnHoverprop (#1338) - Fix iPad detection when applying scroll lock (#1342)
onOpenChangeCompleteprop (#1305)- Fix jump with
scroll-behaviorstyle (#1343) - Add
OffsetFunctionforsideOffsetandalignOffset(#1223) - Ensure
keepMountedis a private param onPositioner(#1410)
Popover
onOpenChangeCompleteprop (#1305)- Add
OffsetFunctionforsideOffsetandalignOffset(#1223) - Ensure
keepMountedis a private param onPositioner(#1410)
PreviewCard
onOpenChangeCompleteprop (#1305)- Add
OffsetFunctionforsideOffsetandalignOffset(#1223) - Ensure
keepMountedis a private param onPositioner(#1410)
Progress
- Add
formatprop andValuecomponent (#1355)
Radio
- Avoid applying
hiddenattr whenkeepMounted=truefor indicators (#1329)
Select
onOpenChangeCompleteprop (#1305)- Fix jump with
scroll-behaviorstyle (#1343) - Add
OffsetFunctionforsideOffsetandalignOffset(#1223) - Ensure
keepMountedis a private param onPositioner(#1410)
Slider
- Fix thumb positioning (#1411)
Tabs
- Fix being able to activate a disabled tab (#1359)
- Fix tabs activating incorrectly on non-primary button clicks (#1318)
Tooltip
onOpenChangeCompleteprop (#1305)- Add
OffsetFunctionforsideOffsetandalignOffset(#1223) - Ensure
keepMountedis a private param onPositioner(#1410)
v1.0.0-alpha.5
Jan 10, 2025
AlertDialog
- Breaking change: Require
Portalpart. The AlertDialog must explicitly include the Portal part wrapping the Popup. ThekeepMountedprop was removed from the Popup. It’s only present on the Portal part. #1222 - Don’t call
onNestedDialogOpenwhen unmounting a closed nested dialog #1280 - Fix the nesting of different dialogs #1167
- Remove
useFloatingcall from the Popup #1300 - Set
pointer-eventsonInternalBackdropbased onopenstate #1221 - Use internal backdrop for pointer modality #1161
Dialog
- Breaking change: Require
Portalpart. The Dialog must explicitly include the Portal part wrapping the Popup. ThekeepMountedprop was removed from the Popup. It’s only present on the Portal part. #1222 - Don’t call
onNestedDialogOpenwhen unmounting a closed nested dialog #1280 - Fix the nesting of different dialogs #1167
- Remove
useFloatingcall from the Popup #1300 - Set
pointer-eventsonInternalBackdropbased onopenstate #1221 - Use internal backdrop for pointer modality #1161
Menu
- Breaking change: Require
Portalpart. The Menu must explicitly include the Portal part wrapping the Positioner. ThekeepMountedprop was removed from the Positioner. It’s only present on the Portal part. #1222 - Apply
aria-hiddentoArrowparts #1196 - Fix
focusableWhenDisabledcomponents #1313 - Fix
openOnHoverissues #1191 - Fix closing the menu when clicking on checkboxitem/radioitem #1301
- Fix Enter key preventDefault when rendering links #1251
- Handle pseudo-element bounds in mouseup detection #1250
- Set
pointer-eventsonInternalBackdropbased onopenstate #1221 - Use internal backdrop for pointer modality #1161
NumberField
- Correctly handle quick touches #1294
Popover
- Breaking change: Require
Portalpart. The Popover must explicitly include the Portal part wrapping the Positioner. ThekeepMountedprop was removed from the Positioner. It’s only present on the Portal part. #1222 - Apply
aria-hiddentoArrowparts #1196 - Fix PopoverTrigger and TooltipTrigger prop types #1209
PreviewCard
- Breaking change: Require
Portalpart. The PreviewCard must explicitly include the Portal part wrapping the Positioner. ThekeepMountedprop was removed from the Positioner. It’s only present on the Portal part. #1222 - Apply
aria-hiddentoArrowparts #1196 - Use
FloatingPortalLite#1278
Progress
- Set zero width when value is zero #1204
ScrollArea
- Differentiate
x/yorientationdata-scrolling#1188 - Read
DirectionProviderand use logical positioning CSS props #1194
Select
- Breaking change: Require
Portalpart. The Select must explicitly include the Portal part wrapping the Positioner. ThekeepMountedprop was removed from the Positioner. It’s only present on the Portal part. #1222 - Allow
idto be passed to trigger #1174 - Fallback to standard positioning when pinch-zoomed in Safari #1139
- Fix
focusableWhenDisabledcomponents #1313 - Fix highlight flash on Safari #1233
- Handle pseudo-element bounds in mouseup detection #1250
- Use internal backdrop for pointer modality #1161
Separator
- Support vertical orientation #1304
Slider
- Ensure
onValueCommittedis called with the same value as latestonValueChange#1296 - Replace internal map with
Compositemetadata #1082 - Set
position: relativeon range slider indicator #1175 - Use un-rounded values to position thumbs #1219
Tabs
- Expose width/height state in tabs indicator #1288
Tooltip
- Breaking change: Require
Portalpart. The Tooltip must explicitly include the Portal part wrapping the Positioner. ThekeepMountedprop was removed from the Positioner. It’s only present on the Portal part. #1222 - Apply
aria-hiddentoArrowparts #1196 - Fix PopoverTrigger and TooltipTrigger prop types #1209
- Use
FloatingPortalLite#1278
1.0.0-alpha.4
December 17, 2024
Public alpha launch 🐣 Merry Xmas! 🎁