Versions
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)
becomes onOpenChange(open, eventDetails)
, where eventDetails
contains event
and reason
properties.-onOpenChange: (open, event, reason) => {
+onOpenChange: (open, eventDetails) => {
- if (reason === 'escape-key') {
+ 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
- New Autocomplete component (#2105) by @atomiks
Checkbox
- Fix missing validity attributes when wrapped in
Field
(#2572) by @Copilot
Combobox
- New Combobox component (#2105) by @atomiks
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 <kbd>Esc</kbd> 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
- Fix duplicate
onValueChange
calls (#2591) by @atomiks
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
- Fix tab size rounding (#2488) by @atomiks
- Fix highlight sync when focus is inside list (#2487) by @atomiks
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
- Add support for data-* attributes (#2524) by @Raghuboi
- Add
defaultTagName
parameter (#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
Jul 30, 2025
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
- Destructure
render
prop (#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
ShadowRoot
containers (#2236) by @atomiks
- Add
forceRender
prop to Backdrop
part (#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
ShadowRoot
containers (#2236) by @atomiks
- Add
forceRender
prop to Backdrop
part (#2037) by @atomiks
- Improve outside press behavior with touch input (#2334) by @atomiks
- Use
click
event for outside press dismissal (#2275) by @atomiks
Field
- Deregister fields from
Form
when unmounting (#2231) by @mj12albert
Form
- Deregister fields from
Form
when unmounting (#2231) by @mj12albert
Menu
- Support
ShadowRoot
containers (#2236) by @atomiks
- Avoid double
useRenderElement
passes (#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
- Fix triggers role (#2317) by @atomiks
Meter
- Fix ARIA attributes and update docs (#2267) by @mj12albert
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
- Remove
invalid
prop (#2315) by @atomiks
- Fix button disabled state only including root disabled state (#2268) by @mj12albert
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
- Support
ShadowRoot
containers (#2236) by @atomiks
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
useRenderElement
passes (#2256) by @atomiks
Scroll Area
- Disable
user-select
on scrollbar and non-main button interactions (#2338) by @atomiks
Select
- Support
ShadowRoot
containers (#2236) by @atomiks
- Add
value
and readOnly
to Select.Trigger
state (#2237) by @atomiks
- Add
multiple
prop (#2173) by @atomiks
- Allow typeahead while open for
multiple
mode (#2274) by @atomiks
- Ensure positionerElement is available in document mouseup (#2276) by @atomiks
- Fix
alignItemWithTrigger
fallback scroll jump (#2241) by @atomiks
- Support conditional
multiple
prop 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
promise
method timeout option handling (#2294) by @atomiks
- Make
Toast.Viewport
an announce container (#2246) by @atomiks
Toggle
- Avoid double
useRenderElement
passes (#2256) by @atomiks
Toggle Group
- Avoid double
useRenderElement
passes (#2256) by @atomiks
Toolbar
- Avoid double
useRenderElement
passes (#2256) by @atomiks
Tooltip
- Support
ShadowRoot
containers (#2236) by @atomiks
- Memoize leftover object in tooltip (#2250) by @sai6855
- Fix error when combining
defaultOpen
and disabled
(#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
undefined
is passed explicitly (#2151) by @michaldudak
Accordion
- Allow content to resize naturally (#2043) by @atomiks
- Fix transition status mapping (#2169) by @atomiks
- Fix
aria-controls
reference (#2170) by @atomiks
- Fix test warning about mixed animation types (#2180) by @atomiks
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
- Allow content to resize naturally (#2043) by @atomiks
- Fix
aria-controls
reference (#2170) by @atomiks
- Fix test warning about mixed animation types (#2180) by @atomiks
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
- Fix popup prop merging (#2119) by @atomiks
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
- Refactor to
useRenderElement
(#2053) by @mj12albert
Form
- Enable custom validation based on other form values (#1941) by @mj12albert
Input
- Fix
onValueChange
value
type (#2112) by @atomiks
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
- Fix
closeOnClick: false
not 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
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
- Breaking change: Print raw value in
Select.Value
.
<Select.Value>
now prints the raw value by default unless an items
prop is specified on Select.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.Label
focusing trigger (#2118) by @atomiks
- Fix programmatic value changes and autofill handling (#2084) by @atomiks
- Add
highlighted
to item State
(#2079) by @atomiks
- Cut out internal backdrop to allow interacting with triggers (#2141) by @michaldudak
- Pass
value
as state (#2153) by @atomiks
- Extend
FieldRoot.State
type (#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
.
If Field.Label
encloses Switch, the htmlFor
/id
attributes 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
disabled
attr on toolbar button when focusableWhenDisabled={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
tabIndex
to 0
on <button>
parts (#1939) by @atomiks
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
- Set
aria-required
, use useButton
(#1777) by @mj12albert
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
- New
ContextMenu
component (#1665) by @atomiks
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
- 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.Props
type (#1915) by @mj12albert
- Extend
Field.Control.State
(#1954) by @atomiks
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
- New
Menubar
component (#1684) by @michaldudak
Navigation Menu
- New
NavigationMenu
component (#1741) by @atomiks
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
- Breaking change: Drop
inputId
prop 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
inputRef
props (#1683) by @atomiks
- Add
locale
prop (#1796) by @mj12albert
- Stop event propagation to allow composite components to be used within popups (#1871) by @atomiks
- set
data-dragging
on touchstart and pointerdown (#1874) by @mj12albert
- Integrate range sliders with Form and Field (#1929) by @mj12albert
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
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-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
- Parent checkbox/nested demos (#1610) @atomiks
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-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
- Fix forwarding of
name
and disabled
props (#1616) @atomiks
Menu
- Add missing item data attributes docs (#1691) @atomiks
- Fix
inert
prop compatibility in React <19 (#1618) @sebinsua
- Fix stuck highlight on submenu trigger when submenu opens with keyboard (#1698) @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
Meter
- New Meter component (#1435) @mj12albert
NumberField
- Correct percentage parse handling (#1676) @atomiks
- New
snapOnStep
prop (#1560) @atomiks
Popover
- Breaking change: Add new
trap-focus
value to modal
prop (#1571) @atomiks
- Fix
inert
prop compatibility in React <19 (#1618) @sebinsua
- 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
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
- Fix value forwarding and null handling (#1697) @atomiks
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
- 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
- New Toast component (#1467) @atomiks
Tooltip
- Avoid re-rendering unrelated consumers (#1677) @atomiks
- Add
disabled
prop (#1682) @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
All contributors of this release in alphabetical order: @atomiks, @megos, @michaldudak, @mj12albert, @oliviertassinari, @sebinsua, @ZeeshanTamboli
v1.0.0-alpha.7
Mar 20, 2025
Accordion
- Fix
aria-labelledby
on accordion panel (#1544) @mj12albert
AlertDialog
- Fix selection on outside press on Firefox with modal prop (#1573) @atomiks
- Fix non-interactive button disabled state (#1473) @mj12albert
actionsRef
prop (#1236) @atomiks
Avatar
- Support cross origin in useImageLoadingStatus (#1433) @ISnackable
- Add missing Avatar export (#1428) @Gomah
Collapsible
- Update props destructuring to fix Trigger disabled state (#1469) @huijiewei
Dialog
- Fix selection on outside press on Firefox with modal prop (#1573) @atomiks
- Fix non-interactive button disabled state (#1473) @mj12albert
actionsRef
prop (#1236) @atomiks
Field
- Fix
FieldControl
[data-filled] not reacting to external value changes (#1565) @atomiks
Menu
- Ensure submenu triggers respond to clicks when
openOnHover=false
(#1583) @atomiks
- Ensure
stickIfOpen
is reset to true
correctly (#1548) @atomiks
- Fix selection on outside press on Firefox with modal prop (#1573) @atomiks
- Reset
hoverEnabled
state on close (#1461) @atomiks
- Fix prop merging issues (#1445) @michaldudak
- Set
pointer-events: none
style on backdrops when hoverable (#1351) @atomiks
actionsRef
prop (#1236) @atomiks
NumberField
- Fix ScrubArea on Safari (#1584) @atomiks
- Fix
large/smallStep
getting stuck (#1578) @atomiks
- Fix parse of numbers with spaces as thousands separators (#1577) @michaldudak
- Prevent virtual cursor overlapping native one (#1491) @atomiks
- Fix disabled state on increment/decrement buttons (#1462) @mj12albert
- Correct virtual cursor rendering (#1484) @atomiks
- Add
locale
prop (#1488) @atomiks
- Improve virtual cursor perf (#1485) @atomiks
Popover
- Ensure
stickIfOpen
is reset to true
correctly (#1548) @atomiks
- Fix selection on outside press on Firefox with modal prop (#1573) @atomiks
- Set
pointer-events: none
style on backdrops when hoverable (#1351) @atomiks
- Fix non-interactive button disabled state (#1473) @mj12albert
modal
prop (#1459) @atomiks
actionsRef
prop (#1236) @atomiks
PreviewCard
- Set
pointer-events: none
style on backdrops when hoverable (#1351) @atomiks
actionsRef
prop (#1236) @atomiks
RadioGroup
- Fix
Form
/Field
validation integration (#1448) @atomiks
- Handle modifier keys (#1529) @mj12albert
Select
- Fix selection on outside press on Firefox with modal prop (#1573) @atomiks
- Improve
ScrollArrow
behavior (#1564) @atomiks
- Ensure switching controlled value to
null
updates Select.Value
label (#1561) @atomiks
- Pass
value
as second argument to function children Select.Value
(#1562) @atomiks
- Fix focus jump while hovering while navigating with keyboard (#1563) @atomiks
- Fix disabled state changing (#1526) @mj12albert
actionsRef
prop (#1236) @atomiks
Slider
- Fix thumb positioning when controlled value violates min/max/step (#1541) @mj12albert
- Warn when
min
is not less than max
(#1475) @mj12albert
- Narrow the type of
value
in callbacks (#1241) @seloner
Tabs
- Fix keyboard navigation involving disabled Tabs (#1449) @mj12albert
- Handle modifier keys (#1529) @mj12albert
Toolbar
- Add Toolbar components (#1349) @mj12albert
Tooltip
actionsRef
prop (#1236) @atomiks
- Fix
Provider
delay=0
not being respected (#1416) @atomiks
useRender
- Add public hook (#1418) @mnajdova
- Refine docs and APIs (#1551) @atomiks
Docs
- Fix CSS issues (#1585) @atomiks
- Clean up old experiments (#1572) @mj12albert
- Fix SEO site name description (#1520) @oliviertassinari
- Fix
actionsRef
propTypes (#1460) @atomiks
- Tooltip guidelines (#1356) @atomiks
- Update the release instructions (#1444) @michaldudak
- Mention Progress.Value in API reference (#1429) @aarongarciah
- Update release instructions (#1417) @michaldudak
Core
- [code-infra] Polish VS Code DX (#1238) @oliviertassinari
- [code-infra] Fix build:types not copying on some setups (#1482) @Janpot
- [Composite] Derive sorted map state (#1489) @atomiks
- Update release docs and scripts (#1245) @oliviertassinari
- Export namespaces consistently (#1472) @michaldudak
- Make
mergeReactProps
work with non-native event handlers (#1440) @michaldudak
- Remove babel-plugin-istanbul (#1409) @michaldudak
- Fix stylelint violations (#1422) @michaldudak
- Misc cleaning (#1579) @atomiks
- [mergeProps] Convert as a top level import and export publicly (#1535) @mnajdova
- [test] Fix wrong env skip (#1490) @atomiks
- [test] Fix PreviewCard test flake (#1487) @atomiks
- [test] Extract common popup tests (#1358) @michaldudak
- [test] Verify root exports (#1431) @michaldudak
- [test] Fix flaky browser tests (#1371) @atomiks
- [test] Update vitest to ^3 (#1453) @michaldudak
- [test] Skip flaky FieldRoot tests in real browsers (#1446) @michaldudak
- [useMergedRefs] Support ref cleanup functions (#1553) @atomiks
- [utils] Change order of args in
mergeReactProps
(#1533) @mnajdova
v1.0.0-alpha.6
Feb 6, 2025
AlertDialog
onOpenChangeComplete
prop (#1305) @atomiks
- Fix jump with
scroll-behavior
style (#1343) @atomiks
Avatar
- Add Avatar component (#1210) @acomanescu
Checkbox
- Avoid applying
hidden
attr when keepMounted=true
for indicators (#1329) @onehanddev
Dialog
- Remove
modal={open}
state (#1352) @atomiks
- Support multiple non-nested modal backdrops (#1327) @atomiks
- Fix missing
id
s on Title and Description (#1326) @mj12albert
onOpenChangeComplete
prop (#1305) @atomiks
- Fix jump with
scroll-behavior
style (#1343) @atomiks
Field
- Respect
validationMode
(#1053) @atomiks
- Add
filled
and focused
style hooks (#1341) @atomiks
Form
- Fix focusing of invalid field controls on errors prop change (#1364) @atomiks
Menu
- Avoid applying
hidden
attr when keepMounted=true
for indicators (#1329) @onehanddev
- Support submenus with
openOnHover
prop (#1338) @atomiks
- Fix iPad detection when applying scroll lock (#1342) @mj12albert
onOpenChangeComplete
prop (#1305) @atomiks
- Fix jump with
scroll-behavior
style (#1343) @atomiks
- Add
OffsetFunction
for sideOffset
and alignOffset
(#1223) @atomiks
- Ensure
keepMounted
is a private param on Positioner
(#1410) @atomiks
Popover
onOpenChangeComplete
prop (#1305) @atomiks
- Add
OffsetFunction
for sideOffset
and alignOffset
(#1223) @atomiks
- Ensure
keepMounted
is a private param on Positioner
(#1410) @atomiks
PreviewCard
onOpenChangeComplete
prop (#1305) @atomiks
- Add
OffsetFunction
for sideOffset
and alignOffset
(#1223) @atomiks
- Ensure
keepMounted
is a private param on Positioner
(#1410) @atomiks
Progress
- Add
format
prop and Value
component (#1355) @mj12albert
Radio
- Avoid applying
hidden
attr when keepMounted=true
for indicators (#1329) @onehanddev
Select
onOpenChangeComplete
prop (#1305) @atomiks
- Fix jump with
scroll-behavior
style (#1343) @atomiks
- Add
OffsetFunction
for sideOffset
and alignOffset
(#1223) @atomiks
- Ensure
keepMounted
is a private param on Positioner
(#1410) @atomiks
Slider
- Fix thumb positioning (#1411) @mj12albert
Tabs
- Fix being able to activate a disabled tab (#1359) @michaldudak
- Fix tabs activating incorrectly on non-primary button clicks (#1318) @mj12albert
Tooltip
onOpenChangeComplete
prop (#1305) @atomiks
- Add
OffsetFunction
for sideOffset
and alignOffset
(#1223) @atomiks
- Ensure
keepMounted
is a private param on Positioner
(#1410) @atomiks
v1.0.0-alpha.5
Jan 10, 2025
AlertDialog
- Breaking change: Require
Portal
part.
The AlertDialog must explicitly include the Portal part wrapping the Popup.
The keepMounted
prop was removed from the Popup.
It's only present on the Portal part.
#1222 @atomiks
- Don't call
onNestedDialogOpen
when unmounting a closed nested dialog #1280 @mj12albert
- Fix the nesting of different dialogs #1167 @mnajdova
- Remove
useFloating
call from the Popup #1300 @michaldudak
- Set
pointer-events
on InternalBackdrop
based on open
state #1221 @atomiks
- Use internal backdrop for pointer modality #1161 @atomiks
Dialog
- Breaking change: Require
Portal
part.
The Dialog must explicitly include the Portal part wrapping the Popup.
The keepMounted
prop was removed from the Popup.
It's only present on the Portal part.
#1222 @atomiks
- Don't call
onNestedDialogOpen
when unmounting a closed nested dialog #1280 @mj12albert
- Fix the nesting of different dialogs #1167 @mnajdova
- Remove
useFloating
call from the Popup #1300 @michaldudak
- Set
pointer-events
on InternalBackdrop
based on open
state #1221 @atomiks
- Use internal backdrop for pointer modality #1161 @atomiks
Menu
- Breaking change: Require
Portal
part.
The Menu must explicitly include the Portal part wrapping the Positioner.
The keepMounted
prop was removed from the Positioner.
It's only present on the Portal part.
#1222 @atomiks
- Apply
aria-hidden
to Arrow
parts #1196 @atomiks
- Fix
focusableWhenDisabled
components #1313 @mj12albert
- Fix
openOnHover
issues #1191 @atomiks
- Fix closing the menu when clicking on checkboxitem/radioitem #1301 @michaldudak
- Fix Enter key preventDefault when rendering links #1251 @mj12albert
- Handle pseudo-element bounds in mouseup detection #1250 @atomiks
- Set
pointer-events
on InternalBackdrop
based on open
state #1221 @atomiks
- Use internal backdrop for pointer modality #1161 @atomiks
NumberField
- Correctly handle quick touches #1294 @atomiks
Popover
- Breaking change: Require
Portal
part.
The Popover must explicitly include the Portal part wrapping the Positioner.
The keepMounted
prop was removed from the Positioner.
It's only present on the Portal part.
#1222 @atomiks
- Apply
aria-hidden
to Arrow
parts #1196 @atomiks
- Fix PopoverTrigger and TooltipTrigger prop types #1209 @mnajdova
PreviewCard
- Breaking change: Require
Portal
part.
The PreviewCard must explicitly include the Portal part wrapping the Positioner.
The keepMounted
prop was removed from the Positioner.
It's only present on the Portal part.
#1222 @atomiks
- Apply
aria-hidden
to Arrow
parts #1196 @atomiks
- Use
FloatingPortalLite
#1278 @atomiks
Progress
- Set zero width when value is zero #1204 @mj12albert
ScrollArea
- Differentiate
x
/y
orientation data-scrolling
#1188 @atomiks
- Read
DirectionProvider
and use logical positioning CSS props #1194 @mj12albert
Select
- Breaking change: Require
Portal
part.
The Select must explicitly include the Portal part wrapping the Positioner.
The keepMounted
prop was removed from the Positioner.
It's only present on the Portal part.
#1222 @atomiks
- Allow
id
to be passed to trigger #1174 @atomiks
- Fallback to standard positioning when pinch-zoomed in Safari #1139 @atomiks
- Fix
focusableWhenDisabled
components #1313 @mj12albert
- Fix highlight flash on Safari #1233 @atomiks
- Handle pseudo-element bounds in mouseup detection #1250 @atomiks
- Use internal backdrop for pointer modality #1161 @atomiks
Separator
- Support vertical orientation #1304 @mj12albert
Slider
- Ensure
onValueCommitted
is called with the same value as latest onValueChange
#1296 @mj12albert
- Replace internal map with
Composite
metadata #1082 @mj12albert
- Set
position: relative
on range slider indicator #1175 @mj12albert
- Use un-rounded values to position thumbs #1219 @mj12albert
Tabs
- Expose width/height state in tabs indicator #1288 @aarongarciah
Tooltip
- Breaking change: Require
Portal
part.
The Tooltip must explicitly include the Portal part wrapping the Positioner.
The keepMounted
prop was removed from the Positioner.
It's only present on the Portal part.
#1222 @atomiks
- Apply
aria-hidden
to Arrow
parts #1196 @atomiks
- Fix PopoverTrigger and TooltipTrigger prop types #1209 @mnajdova
- Use
FloatingPortalLite
#1278 @atomiks
v1.0.0-alpha.4
Dec 17, 2024
Public alpha launch 🐣 Merry Xmas! 🎁