Native Solid 2 fork. Original documentation and designs © WorkOS; historical posts retain their original context.
Releases
July 20, 2026
Dialog
- Fixed broken ARIA references in Dialogs where title or description elements are not rendered. – #4031
Slider
- Fixed a bug where
onValueCommitwas not called when a slider thumb was dragged across another thumb. – #3832
Toast
- Fixed
Toastremoving non-focused toasts when pressingEscape. – #4005
Tooltip
- Fixed a bug where
Tooltip.Contentchildren were mounted to the DOM twice. – #4029
Other updates
- Fixed overriding inline animation style in
Popper.Content. – #4046 - Improved tree-shaking so bundlers can drop unused components. Component parts are now marked
/* @__PURE__ */and use named render functions instead ofComponent.displayName = ...assignments, which previously prevented dead-code elimination with some bundlers. – #4038 - Widened the
virtualRefprop type to allowRefObject<Measurable | null>in popover components. – #4034 - Fixed dev-only checks with conditional exports so dev warnings are dropped from production builds. – #4039
- Added per-primitive subpath entry points so each primitive can be imported directly, eg.
import { Accordion } from "radix-ui/accordion"orimport * as Accordion from "radix-ui/accordion". This mirrors the namespaced exports available from the rootradix-uientry point. – #4020 - Fixed a bug where updating a
Checkbox,Switch, orRadioGroupvalue programmatically (eg. a "select all" control) while inside a<form>would dispatch aclickevent from the hidden bubble input that propagated to ancestoronClickhandlers. – #4028
July 6, 2026
Other updates
- Added CSS custom properties for Navigation Menu item indicators' translate values.
- Fixed a bug in Dismissable Layer causing background nested popovers to close all layers on outside click. – #3987
- Fixed runtime errors for
Form.Message,Form.Control,Form.Label, andForm.ValidityStatewhen they are rendered outside ofForm.Fieldcomponents. – #3992 - Fixed a bug in form control components to ensure their values are updated when their associated form is reset. This affects
RadioGroup,Slider,Select, andSwitch. – #3958 - Fixed menu items, tab triggers, toolbar links, and select items intercepting
Space/Enterkeys that originate from focusable descendants. – #3999 - Fixed a bug where calling an event handler without an argument would throw, preventing successive event handlers from being called. This affected all components that accept event handlers with internal implementations. – #4001
- Fixed a bug in Context Menu to ensure that the menu properly re-anchors to the latest pointer position when re-triggered in its open state. – #4003
- Fixed stale
onEscapeKeyDown/onDismisshandlers on React 19.2. – #4015 - Fixed items in a Roving Focus Group not being auto-focused on mount within a Focus Scope component. – #4002
- Fixed a regression in Dismissable Layer originating from a bug in React's
useEffectEvent. – #4015 - Fixed
--radix-scroll-area-corner-widthand--radix-scroll-area-corner-heightnot resetting to0when a corner is removed. Previously these values would stick around and leave a permanent gap on the remaining scrollbar. – #4009 - Fixed a bug in Slider where stepping with the keyboard would skip a valid value when the current value is off the step grid. Stepping now snaps to the next step-aligned value in the direction of travel, matching native
<input type="range">behavior. – #4006
June 30, 2026
- Cleared the close timer when unmounting
Toastcomponents to prevent memory leaks and errors in test environments. – #3794 - Fixed infinite re-render loop in React 19 caused by unstable composed ref callback references. – #3967 – #3968
- Removed global
React.CSSPropertiesaugmentation from emitted declaration files. – #3983
June 6, 2026
This release introduces new composition APIs, a controlled Context Menu, and a number of bug fixes and performance improvements across primitives.
Context Menu
Added support for a controlled open prop on ContextMenu.Root. This is intended for reading the open state and closing the menu programmatically. We discourage opening the menu programmatically, since opening it depends on user interaction to position the menu correctly.
We also fixed a bug where submenus remained expanded after re-opening on long-press touch events.
New unstable composition parts
Several form-control primitives now expose their previously internal composition, so you can directly access and recompose the visually hidden inputs they render for form submission. Each component continues to render these parts by default, and the new parts are exported with the unstable_ prefix.
- Radio Group —
unstable_ItemProvider,unstable_ItemTrigger, andunstable_ItemBubbleInput - Select —
unstable_Providerandunstable_BubbleInput - Slider —
unstable_ThumbProvider,unstable_ThumbTrigger, andunstable_BubbleInput - Switch —
unstable_Provider,unstable_Trigger, andunstable_BubbleInput
Select
- Added support for presence-based exit animations.
- Fixed the bubble hidden input so that it submits an empty string when no value is selected.
- Fixed Select closing unexpectedly after touch-scrolling its content when rendered inside an open shadow DOM.
- Fixed
Select.Valuelogging invalid prop errors when used with bothasChildand a placeholder.
Slider
- Added
focusVisiblesupport for non-keyboard interactions with slider thumbs, for progressively enabling styles using:focus-visiblealongside programmatic focus management. - Fixed a bug where very small
stepvalues made the thumbs unresponsive. - Fixed focus bugs for sliders in a scrollable context.
Slot
- Added support for nested
Slottableitems via a render prop. This allows a slotted element to be wrapped while still merging Slot props and refs onto it. - Fixed an infinite re-render loop in React 19 caused by
Slotcreating a new ref callback on every render. - Improved error messages for invalid slot children.
Dialog
- Fixed a bug where iOS text selection and editing on HTML inputs within dialogs were broken.
- Fixed a bug causing disabled pointer events in closed dialogs.
One-Time Password Field
- Fixed pasting in environments that do not support the legacy
"Text"clipboard format by reading the pasted value as"text/plain". - Fixed issues with focus management in React 19.2+.
- Ensured that pasted values exceeding the field length are truncated.
Tooltip
- Fixed a runtime error when an event target is a non-Node entity.
- Fixed a bug so that
skipDelayDuration={0}works as expected. Previously, the open delay could still be skipped when moving between triggers.
Other updates
- Added an
alignprop to theSubContentpart of Dropdown Menu, Context Menu, and Menubar to control the direction the submenu appears from its anchor item. - Added an
announcerContainerprop toToast.Providerso you can specify a container for toast announcements. - Exposed
data-sideanddata-alignattributes on the Popper anchor element. - Added an
alignprop toMenu.SubContent. - Fixed a missing
data-stateattribute for Scroll Area scrollbars. - Fixed a "Maximum update depth exceeded" bug for pages with a large number of popper instances, as well as a similar bug in
Presenceunder React 19. - Now uses React's built-in
useSyncExternalStore(React 18+) instead of the CJS-only shim, which previously crashed ESM-only browser bundles when importing some components. - Fixed triggers referencing non-existent elements via
aria-controlswhen their content is removed from the DOM – #3243. - Improved focus-guard performance when opening overlays by caching the shared guard pair and only writing to the DOM when their edge position changes.
- Added missing
use clientdirectives to modules causing errors in RSC.
August 13, 2025
One-Time Password Field
- Fixed a bug so that all input elements are disabled when the
Rootcomponent is disabled. - Fixed a bug with iOS Chrome autocomplete – #3641.
Other updates
- Fixed a Popper bug causing infinite render loops.
- Ensured the
animationendevent is handled correctly when the keyframe has escapable characters – #2763. - Fixed how Slot components interact with lazy React components in React 19. In the case of a lazy component instance, the resulting promise is now consumed to render the desired component.
- Fixed several Toast accessibility issues, including removing
aria-hiddenfrom focusable elements, removingrole=statusfrom the list item element, and removing a redundant defaultaria-atomic. - Added
displayNameto internal context objects for improved debugging.
May 20, 2025
- Dependency maintenance release with no user-facing API changes.
May 6, 2025
- Dependency maintenance release with no user-facing API changes.
May 5, 2025
This release introduces a brand new primitive in preview: PasswordToggleField.
This new primitive provides components for rendering a password input alongside a button to toggle its visibility. Aside from its primary functionality, it also includes:
- Returning focus to the input when toggling with a pointer
- Maintaining focus when toggling with keyboard or virtual navigation
- Resetting visibility to hidden after form submission to prevent accidental storage
- Implicit accessible labeling for icon-based toggle buttons
This API is currently unstable, and we hope you'll help us test it out! Import the primitive using the unstable_ prefix.
Other updates
- Add unstable
Provider,TriggerandBubbleInputparts to Checkbox (#3459) - Update default input type to
textand pass to the underlying input element (#3510)
April 22, 2025
- Update the dependency for
use-sync-external-storeto ensure entrypoint is valid – #3491
April 17, 2025
This release introduces a brand new primitive in preview: OneTimePasswordField.
This new group of components are designed to implement a common design pattern for one-time password fields displayed as separate input fields for each character. This UI is deceptively complex to implement in such a way that interactions follow user expectations. The new primitive handles all of this complexity for you, including:
- Keyboard navigation mimicking the behavior of a single input field
- Overriding values on paste
- Password manager autofill support
- Input validation for numeric and alphanumeric values
- Auto-submit on completion
- Focus management
- Hidden input to provide a single value to form data
As this is a preview release, the API is currently unstable. We hope you'll help us test it out and let us know how it goes.
Import the primitive using the unstable_ prefix.
Other updates
- All form controls with internal bubble inputs now use the Radix
Primitivecomponent by default. This will allow us to expose these components in a future release so users can better control this behavior in the future. - Minor improvements to
useControllableStateto enhance performance, reduce surface area for bugs, and log warnings when misused
April 8, 2025
- Improved rendering performance for the Tooltip provider – #2720
- Ensure Tooltip is closed when
pointerdownis fired on the trigger – #3380 - Add support for
crossOriginin Avatar images – #3261 - Fix Avatar flashing when an image is already cached – #3008
- Improve
displayNamefor better debugging of slottable components – #3441
February 5, 2025
- Updated dependencies to remove peer dependency warnings for
reactandreact-dom– #3350 - Skip forwarding refs to
SlotClonewhen the child is aFragment– #3229
January 22, 2025
- Added a
radix-uipackage that exposes the latest version of all Radix Primitives from a single place. This tree-shakable entrypoint makes it easier to bring in whatever components you need and keep them up-to-date without worrying about conflicting or duplicate dependencies. - Updated
aria-hiddenandreact-remove-scrolldependencies for the following components:- Alert Dialog
- Context Menu
- Dialog
- Dropdown Menu
- Hover Card
- Menubar
- Navigation Menu
- Popover
- Select
- Toast
- Tooltip
October 1, 2024
Alert Dialog
1.1.2- Fix
allowPinchZoombug for trackpad users – #3127
Avatar
1.1.1- Check for
referrerPolicywhen checking the image loading status – #2772
Checkbox
1.1.2- Fix a bug where
defaultCheckedunexpectedly changed for uncontrolled checkboxes – #2135 - Forward the
formprop to the bubble input element to fix non-parent form submissions – #3161
Dialog
1.1.2- Fix
allowPinchZoombug for trackpad users – #3127
Radio Group
1.2.1- Forward the
formprop to the bubble input element to fix non-parent form submissions – #3161
Scroll Area
1.2.0- Fix
asChildprop not working as expected on theViewport– #2945 - Update internal styles to fix other issues with
Viewport– #2945
Select
2.1.2- Fix error thrown when items are initially undefined – #2623
- Fix several bugs for touch devices – #2939
- Forward the
formprop to the bubble input element to fix non-parent form submissions – #3161 - Fix position bug where popover may start off-screen for long items – #3149
Slider
1.2.1- Forward the root
formprop to each thumb's bubble input element to fix non-parent form submissions – #3161
Switch
1.1.1- Forward the
formprop to the bubble input element to fix non-parent form submissions – #3161
Toast
1.2.2- Fix incorrect focus when
hotkeyis an empty array – #2491
June 28, 2024
Checkbox
1.1.1- Export
CheckedStatetype
Tooltip
1.1.2- Export
TooltipProviderPropstype
June 21, 2024
Portal
1.1.1- Add a missing internal utility to
package.json. The corresponding packages that provide a Portal part also received a patch update. – #2966
June 19, 2024
All primitives
Released minor versions for all primitives with the following changes:
- Full React 19 compatability – #2952
- Full RSC compatibility – #2923
- Internal build tooling changes – #2922 – #2931
- Update and pin
react-remove-scrolldependency version to avoid double scrollbar bugs in edge cases – #2776 - Don’t scroll menu items in response to hover – #2451
- Make sure that components that close on Escape key press capture the corresponding keyboard event. This way you can call
stopPropagationinonEscapeKeyDownif you need more control rendering Radix components within another component that closes on Escape key press. - Make sure that components with roving focus do not interfere with browser or system hotkeys, such as back navigation – #2739
- Make sure that components that support
hideWhenDetachedprop do not allow interactions with hidden content – #2743 – #2745
Dialog
1.1.0- Log an error when an accessible title via the
Dialog.Titlepart is missing – #2948 - Log a warning when an accessible description via the
Dialog.Descriptionpart is missing – #2948
Label
2.1.0- Make sure that the component doesn’t interfere when clicking on the spinner of a number input
Navigation Menu
1.2.0- Remove unsupported
disableOutsidePointerEventsprop
Portal
1.1.0- Fix hydration error in SSR on the initial render – #2923
Progress
1.2.0- Explicitly allow
value={undefined}to represent an indeterminate state, matching the current practical behaviour – #2947
Select
2.1.0- Add
nonceprop to be able to pass CSP nonce to the inline styles – #2728
Scroll Area
1.1.0- Add
nonceprop to be able to pass CSP nonce to the inline styles – #2728
September 25, 2023
Alert Dialog
1.0.5- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178
Avatar
1.0.4- Prevent image flash – #2340
Context Menu
2.1.5- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178
Dialog
1.0.5- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178
Dropdown Menu
2.0.6- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178
Hover Card
1.0.7- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178
Menubar
1.0.4- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178
Navigation Menu
1.1.4- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178
Popover
1.0.7- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178 - Fix
Popovernested insideDialognot opening – #2182
Scroll Area
1.0.5- Add
scroll-behavior: smoothcompatibility – #2175
Select
2.0.0Major- [Breaking] Add ability to reset to placeholder using
""value. Note that this is only a breaking change if you were using an option with avalueof"". – #2174 - Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178
Toast
1.1.5- Fix pointer-events issue when clicking outside – #2177
Tooltip
1.0.7- Fix pointer-events issue when clicking outside – #2177
- Fix
Portalpart types lying about accepting DOM props – #2178 - Fix issue with boundary padding calculations – #2185
- Add option to always re-position
Contenton the fly – #2092
May 26, 2023
This release ensures all of our primitives are ESM compatible. We have also updated to the latest version of Floating UI for all of our popper-positioned primitives.
All primitives
- Improve ESM compatibility – #2130
- Fix possible upstream compiler errors (
@types/reactphantom dependency) – #1896
Context Menu
2.1.4- Position content correctly when matching trigger size – #1995
Dialog
1.0.4- Prevent non-modal dialog from re-opening when closing using trigger in Safari – #2110
- Ensure focus trapping is maintained when the focused item is deleted – #2145
Dropdown Menu
2.0.5- Position content correctly when matching trigger size – #1995
Hover Card
1.0.6- Position content correctly when matching trigger size – #1995
Menubar
1.0.3- Position content correctly when matching trigger size – #1995
Navigation Menu
1.1.3- Do not close when clicking items and meta key is down – #2080
Popover
1.0.6- Position content correctly when matching trigger size – #1995
- Prevent non-modal popover from re-opening when closing using trigger in Safari – #2110
- Ensure
--radix-popper-available-widthis calculated correctly when usingcollisionBoundary– #2032
Select
1.2.2- Position content correctly when matching trigger size – #1995
- Improve scroll buttons touch screen support – #1771
Slider
1.1.2- Clamp thumb position within range – #1988
Slot
1.0.2- Ensure
Slotcan be used in a React Server Component – #2116
Tooltip
1.0.6- Position content correctly when matching trigger size – #1995
- Improve large content hoverability – #2155
March 8, 2023
This release introduces a brand new primitive in preview: Form.
Form
0.0.2Preview- New primitive – #1998
February 24, 2023
Checkbox
1.0.2- Reset checkbox state when form is reset – #1733
ContextMenu
2.1.2- Expose new CSS custom properties to enable size constraints – #1942
- Don't exit fullscreen mode when pressing escape to dismiss from submenu – #1752
- Relax
onCheckedChangetype onContextMenu.CheckboxItem– #1778
DropdownMenu
2.0.3- Expose new CSS custom properties to enable size constraints – #1942
- Don't exit fullscreen mode when pressing escape to dismiss from submenu – #1752
- Relax
onCheckedChangetype onDropdownMenu.CheckboxItem– #1778
HoverCard
1.0.4- Expose new CSS custom properties to enable size constraints – #1942
Menubar
1.0.1- Expose new CSS custom properties to enable size constraints – #1943
- Don't exit fullscreen mode when pressing escape to dismiss from submenu – #1752
- Relax
onCheckedChangetype onMenubar.CheckboxItem– #1778
Popover
1.0.4- Expose new CSS custom properties to enable size constraints – #1942
Tooltip
1.0.4- Expose new CSS custom properties to enable size constraints – #1942
January 17, 2023
This release introduces a brand new primitive: Menubar. It also adds support for a highly requested feature for Select: the ability to position the content in a similar way to Popover or DropdownMenu.
Accordion
1.1.0- Add horizontal orientation support with new
orientationprop, as well as RTL support withdir– #1850
Context Menu
2.1.1- Fix consistency issue with RTL positioning – #1890
Dropdown Menu
2.0.2- Fix consistency issue with RTL positioning – #1890
Hover Card
1.0.3- Fix consistency issue with RTL positioning – #1890
Menubar
1.0.0Major- New primitive – #1846
Popover
1.0.3- Fix consistency issue with RTL positioning – #1890
Select
1.2.0- Add
positionprop toSelect.Contentto enable popper positioning – #1853
Tooltip
1.0.3- Fix consistency issue with RTL positioning – #1890
December 14, 2022
Context Menu
2.1.0- Add
disabledprop toContextMenu.Trigger– #1746
November 15, 2022
Select
1.1.2- Fix invalid
pointerIdin Cypress when running Firefox – #1753
October 17, 2022
Accordion
1.0.1- Fix initial animation playback in Firefox and Safari – #1710
Alert Dialog
1.0.2- Fix issue with textarea elements not being scrollable in Firefox – #1550
Collapsible
1.0.1- Fix initial animation playback in Firefox and Safari – #1710
Context Menu
2.0.1Major- [Breaking] Add support for indeterminate state on
ContextMenu.CheckboxItem. Note that this is only a breaking change if you are currently using theCheckboxItempart and your codebase is written in TypeScript. – #1624
Dialog
1.0.2- Fix issue with textarea elements not being scrollable in Firefox – #1550
Dropdown Menu
2.0.1Major- [Breaking] Add support for indeterminate state on
DropdownMenu.CheckboxItem. Note that this is only a breaking change if you are currently using theCheckboxItempart and your codebase is written in TypeScript. – #1624 - Correctly pair
DropdownMenu.Triggeropen state witharia-expandedwhen closed – #1644 - Fix issue with eager selection of items when using
asChild– #1647 - Fix issue with dismissing when the component is used in a separate popup window – #1677
Hover Card
1.0.2- Improve text selection experience – #1692
Label
2.0.0Major- [Breaking] Remove
useLabelContextand support for fully custom controls. For native labelling to work, ensure your custom controls are based on native elements such asbuttonorinput. – #1686 - Improve native behavior by using the native
labelelement – #1686
Navigation Menu
1.1.1- Prevent menu from re-opening with the pointer after being dismissed with escape – #1579
- Add
delayDurationandskipDelayDurationprops toNavigationMenu.Root. Note that by default, triggers now have a brief delay before opening in order to improve UX, this can be modified using the props provided. – #1716
Radio Group
1.1.0- Add
disabledprop toRadioGroup.Root– #1530 - Fix issue where
RadioGroup.Rootwas focusable when all items were disabled – #1530
Select
1.1.1Slider
1.1.0- Add ability to visually invert the slider using the new
invertedprop onSlider.Root– #1695 - Add
onValueCommitprop toSlider.Rootto better handle discrete value changes – #1696
Slot
1.0.1- Stop eagerly creating callback props – #1713
Toast
1.1.1- Fix regression with screen readers announcing as "group" rather than "status" – #1556
- Fix regression with
refassignments on child elements returningnull– #1668 - Add
onPauseandonResumeprops toToast.Root– #1669 - Fix timer reset issue which would cause toasts to dismiss early in some cases – #1682
Toolbar
1.0.1- Prevent
Toolbar.Itemclick handlers firing twice – #1526
Tooltip
1.0.2- Ensure tooltip doesn't open if interacting with the trigger before the open timer expires – #1693
July 21, 2022
With this release, we start following semantic versioning strictly. All primitives are now versioned 1.0.0.
We also move the Select, Toast and NavigationMenu from preview to stable.
All primitives
- Improve support for React 18 – #1329
- [Breaking] Improve RTL performance. You need to use
DirectionProviderif you were relying ondirattribute inheritance from document (or any element). – #1119
Alert Dialog
1.0.0Major- [Breaking] Remove
allowPinchZoomprop, now defaults totrue– #1514 - Improve compatibility with JS animation libraries with
forceMountonAlertDialog.Portal– #1075 - Fix regressions with page interactivity while/after closing dialog – #1401
Context Menu
1.0.0Major- [Breaking] Improve indirect nesting of context menus. Submenus must now be created using explicit parts. – #1394
- [Breaking] Remove
allowPinchZoomprop, now defaults totrue– #1514 - [Breaking] Add new
Portalpart. To avoid regressions, use this part if you want portalling behavior. Note thatz-indexisn't managed anymore so you have full control of layering. – #1429 - [Breaking] Remove
offsetonArrowpart – #1531 - [Breaking] Rename
collisionTolerancetocollisionPaddingonContentpart and accepts a number or a padding object – #1531 - Fix issue with native context menu appearing in React 18 – #1378
- Add
data-highlightedattribute to support styling – #1388 - Add
data-stateattribute toTriggerpart – #1455 - Add
collisionBoundary,arrowPadding,sticky,hideWhenDetachedprops onContentpart – #1531
Dialog
1.0.0Major- [Breaking] Remove
allowPinchZoomprop, now defaults totrue– #1514 - Improve compatibility with JS animation libraries with
forceMountonDialog.Portal– #1075 - Fix regressions with page interactivity while/after closing dialog – #1401
Dropdown Menu
1.0.0Major- [Breaking] Improve indirect nesting of dropdown menus. Submenus must now be created using explicit parts. – #1394
- [Breaking] Remove
allowPinchZoomprop, now defaults totrue– #1514 - [Breaking] Add new
Portalpart. To avoid regressions, use this part if you want portalling behavior. Note thatz-indexisn't managed anymore so you have full control of layering. – #1429 - [Breaking] Remove
offsetonArrowpart – #1531 - [Breaking] Rename
collisionTolerancetocollisionPaddingonContentpart and accepts a number or a padding object – #1531 - Add
data-highlightedattribute to support styling – #1388 - Prevent escape key from exiting fullscreen mode in Firefox & Safari – #1423
- Add
collisionBoundary,arrowPadding,sticky,hideWhenDetachedprops onContentpart – #1531
Hover Card
1.0.0Major- [Breaking] Add new
Portalpart. To avoid regressions, use this part if you want portalling behavior. Note thatz-indexisn't managed anymore so you have full control of layering. – #1426 - [Breaking] Remove
offsetonArrowpart – #1531 - [Breaking] Rename
collisionTolerancetocollisionPaddingonContentpart and accepts a number or a padding object – #1531 - Add
collisionBoundary,arrowPadding,sticky,hideWhenDetachedprops onContentpart – #1531
Navigation Menu
1.0.0Major- Ensure menu closes after clicking
NavigationMenu.Link– #1347 - Add
onSelectprop toNavigationMenu.Link– #1372
Popover
1.0.0Major- [Breaking] Remove
allowPinchZoomprop, now defaults totrue– #1514 - [Breaking] Add new
Portalpart. To avoid regressions, use this part if you want portalling behavior. Note thatz-indexisn't managed anymore so you have full control of layering. – #1425 - [Breaking] Remove
offsetonArrowpart – #1531 - [Breaking] Rename
collisionTolerancetocollisionPaddingonContentpart and accepts a number or a padding object – #1531 - Add
collisionBoundary,arrowPadding,sticky,hideWhenDetachedprops onContentpart – #1531
Portal
1.0.0Major- [Breaking] Note that
z-indexisn't managed anymore so you have full control of layering. The prop to provide a custom container evolves fromcontainerRef(ref) tocontainer(element). Thedata-radix-portalwas removed because you can useasChildto control the element. – #1463
RadioGroup
1.0.0Major- Add
aria-requiredto root – #1422
Scroll Area
1.0.0MajorScrollArea.Thumbis now animatable – #1392
Select
1.0.0Major- [Breaking] Renamed
data-statevalues fromactive|inactivetochecked|unchecked– #1388 - [Breaking] Add new
Portalpart. To avoid regressions, use this part if you want portalling behavior. Note thatz-indexisn't managed anymore so you have full control of layering. – #1459 - Fix position breaking when using
asChildonSelect.Content– #1245 - Improve trigger/content alignment when
Select.Contenthas padding – #1312 - Fix trigger/content alignment when there are less than 5 items – #1355
- Support trigger/content alignment when no value is provided – #1379
- Add
data-highlightedattribute to support styling – #1388 - Add support for placeholder via
placeholderprop onSelect.Value– #1384 - Resolve value mismatch with underlying native select – #1421
Slot
1.0.0Major- Fix issue with children ordering when using
Slottable– #1376
Tabs
1.0.0Major- Add support for lifecycle animation to
Tabs.Content– #1346
Toast
1.0.0Major- [Breaking] The default toast order has changed, they now render top to bottom from oldest to newest – #1469
- Improve Typescript types when using
asChild– #1300 - Fix issue with toast reordering when updating React's
keyprop – #1283 - Improve compatability with animation libraries – #1468
Tooltip
1.0.0Major- [Breaking] Add new
Portalpart. To avoid regressions, use this part if you want portalling behavior. Note thatz-indexisn't managed anymore so you have full control of layering. – #1427 - [Breaking] By default
Tooltip.Contentwill remain open when hovering (WCAG 2.1 Content on Hover compliance).disableHoverableContentcan be supplied toTooltip.Providerto restore previous behavior – #1490 - [Breaking]
sideonTooltip.Contentnow defaults totop– #1490 - [Breaking]
Tooltip.Provideris now required, you must wrap your app to avoid regressions. – #1490 - [Breaking] Remove
offsetonArrowpart – #1531 - [Breaking] Rename
collisionTolerancetocollisionPaddingonContentpart and accepts a number or a padding object – #1531 - Improve layering of tooltip with other primitives – #1314
- Fix tooltip closing when transforming/animation trigger – #937
- Add
collisionBoundary,arrowPadding,sticky,hideWhenDetachedprops onContentpart – #1531
February 28, 2022
This release introduces 3 brand new primitives in preview: Select, Toast and NavigationMenu, whilst also shipping a ton of fixes and improvements.
Accordion
0.1.6- Prevent form submission when pressing
Accordion.Trigger– #1085 - Fix animation issue with React 18 – #1125
Alert Dialog
0.1.7- Improve pointer-events management – #1079
Checkbox
0.1.5- Prevent activation via enter key – #1104
Collapsible
0.1.6- Fix animation issue with React 18 – #1125
Context Menu
0.1.6Dialog
0.1.7Major- Improve pointer-events management – #1079
- [Breaking]
Dialog.Titleis now a required part so will throw an error if not used.aria-describedby={undefined}must be passed toDialog.Contentif no description is needed. – #1098
Dropdown Menu
0.1.6- Improve composability with
Dialog/AlertDialog– #1097 - Prevent clicking trigger to close from immediately reopening in non-modal mode – #1059
- Prevent
DropdownMenu.TriggerItemclick from firing twice – #1057 - Improve idle performance – #1040
Navigation Menu
0.1.2Preview- New primitive – #1172
Radio Group
0.1.5- Prevent activation via enter key – #1104
Select
0.1.1Preview- New primitive – #1169
Slider
0.1.4- Prevent page scroll when using
HomeandEndkeys – #1076
Tabs
0.1.5- Prevent accidental focus activation via right click – #1114
Toast
0.1.1Preview- New primitive – #1165
Toggle Group
0.1.5- Improve accessibility by using radio role for single toggle group – #1118
December 13, 2021
This release focuses on React 18 support and introduces a number of breaking changes to some packages, mostly related to portalling dialogs.
All primitives
- [Breaking] Deprecate
IdProvider. Improves support for React 18 going forward and is no longer needed in older versions. Remove from your app to avoid deprecation warnings. – #1006
Accordion
0.1.5Major- Improve React 18 support – #984
- Improve dev mode errors with mismatched
typeandvalueprops – #979 - Prevent
Accordion.Contentheight animation on initial page load – #977
Alert Dialog
0.1.5Major- [Breaking] Add new
Portalpart. To avoid regressions, use this part if you want portalling behavior. – #936 - [Breaking] Support scrolling within
AlertDialog.Overlay. MoveallowPinchZoomto root. – #963 - Fix
asChildTypeScript error – #924
Collapsible
0.1.5- Prevent
Collapsible.Contentheight animation on initial page load – #977
Dialog
0.1.5Major- [Breaking] Add new
Portalpart. To avoid regressions, use this part if you want portalling behavior. – #936 - [Breaking] Support scrolling within
Dialog.Overlay. MoveallowPinchZoomto root. – #963
Dropdown Menu
0.1.4- Prevent disabled trigger from opening menu – #974
Hover Card
0.1.3- Fix ability to focus
HoverCardwhen inside a dialog – #920
Radio Group
0.1.4- Prevent programmatic focus from changing value – #939
Tabs
0.1.4MajorToggle Group
0.1.4- Remove invalid
aria-orientationattribute onrole=groupelement – #965
Toolbar
0.1.4Tooltip
0.1.6Major- [Breaking] Add new
TooltipProviderpart. You must wrap your app to avoid regressions. – #1007 - [Breaking] Remove
type=buttonattribute fromTooltip.Trigger– #1011 - Fix tooltip activation regression – #1035
Slot
0.1.2- Fix
keywarnings – #1015
October 15, 2021
All primitives
- All primitives are now versioned 0.1.1
- Fix composability issues between primitives by scoping context – #906
- Fix CSS unmount animations – #851
Accordion
0.1.1- Add new CSS variable to
Accordion.Contentto help with width animations – #879
Alert Dialog
0.1.1Major- Improve composability with
Dialog– #906 - [Breaking] Remove
AlertDialog.ContentonInteractOutsideprop – #846
Dialog
0.1.1- Improve composability with
AlertDialog– #906 - Add pinch to zoom support to
DropdownMenu.ContentviaallowPinchZoomprop – #884
Context Menu
0.1.1- Add pinch to zoom support to
ContextMenu.ContentviaallowPinchZoomprop – #884 - Prevent scroll via arrow keypress on submenu triggers – #908
Collapsible
0.1.1- Add new CSS variable to
Collapsible.Contentto help with width animations – #879
Checkbox
0.1.1- Prevent screen reader virtual cursor from accessing hidden input – #870
Dropdown Menu
0.1.1- Improve composability with
Tooltip– #906 - Add pinch to zoom support to
DropdownMenu.ContentviaallowPinchZoomprop – #884 - Prevent scroll via arrow keypress on submenu triggers – #908
Hover Card
0.1.1Label
0.1.1- Allow its children to prevent event propagation – #861
Radio Group
0.1.1- Prevent screen reader virtual cursor from accessing hidden inputs – #870
Popover
0.1.1- Add pinch to zoom support to
Popover.ContentviaallowPinchZoomprop – #884
Slider
0.1.1- Fix calculations when value is
0– #866
Switch
0.1.1- Prevent screen reader virtual cursor from accessing hidden input – #870
Tabs
0.1.1Major- [Breaking] Unmount content within
Tabs.Contentwhen tab is inactive – #859
September 7, 2021
All primitives
- All primitives moved to Beta and are now versioned 0.1.0
- [Breaking] Replace polymorphic
asprop withasChildboolean prop. Learn more about how to change the rendered element here – #835
Dialog
0.1.0- Improve composability with
DropdownMenu– #818
Dropdown Menu
0.1.0- Improve composability with
Dialog– #818 - Re-enable
pointer-eventswhen closed – #819 - Prevent body text from selecting on close (Firefox) – #812
- Ensure sub triggers receive focus on click (iOS Safari) – #820
Primitive
0.1.0Major- [Breaking] Deprecate
extendPrimitiveutility – #840
August 4, 2021
All primitives
- Improve polymorphic types performance – #784
Alert Dialog
0.0.20Major- [Breaking] Remove
AlertDialog.ContentonPointerDownOutsideprop – #700 - Prevent outside pointer events triggering prematurely on touch devices – #767
Context Menu
0.0.24Major- Add modality support via
modalprop – #700 - [Breaking] Remove
ContextMenu.ContentdisableOutsidePointerEventsprop – #700 - Prevent outside pointer events triggering prematurely on touch devices – #767
Dialog
0.0.20- Add modality support via
modalprop – #700 - Improve animation rendering in React 18 – #776
- Ensure focus is restored to trigger on close when using the
autofocusattribute on a child element – #739 - Prevent outside pointer events triggering prematurely on touch devices – #767
- Ensure iOS Safari consistently focuses the first focusable element – #776
Dropdown Menu
0.0.23Major- Add modality support via
modalprop – #700 - [Breaking] Remove
DropdownMenu.ContentdisableOutsideScrollprop – #700 - [Breaking] Remove
DropdownMenu.ContentdisableOutsidePointerEventsprop – #700 - Prevent outside pointer events triggering prematurely on touch devices – #767
Popover
0.0.20Major- Add modality support via
modalprop – #700 - [Breaking] Remove
Popover.ContentdisableOutsideScrollprop – #700 - [Breaking] Remove
Popover.ContentdisableOutsidePointerEventsprop – #700 - [Breaking] Remove
Popover.ContenttrapFocusprop – #700 - Improve animation rendering in React 18 – #776
- Ensure focus is restored to trigger on close when using the
autofocusattribute on a child element – #739 - Prevent outside pointer events triggering prematurely on touch devices – #767
- Ensure iOS Safari consistently focuses the first focusable element – #776
Scroll Area
0.0.16- Add
data-statetoScrollBarpart – #801
Slider
0.0.17- Prevent thumb receiving focus when disabled – #777
- Prevent focus loss on thumb when using
React.StrictMode– #794
June 24, 2021
Context Menu
0.0.23- Can now be triggered on touch with a long press – #743
Dialog
0.0.19- Add optional
TitleandDescriptionparts for simpler labelling – #741
Scroll Area
0.0.15- Add
data-orientationtoScrollbarfor styling convenience – #720 - Fix
forceMounttype issue onScrollbar– #738
Slider
0.0.16- Ensure the correct thumb is focused when using keyboard and crossing another thumb – #731
- Ensure only one arrow press is needed when crossing another thumb – #733
Slot
0.0.12- Improve types compatibility – #737
Toggle Group
0.0.10- Ensure only one click is needed to toggle a single controlled toggle group – #722
- Ensure focus behavior is consistent on Safari – #727
June 15, 2021
All primitives
- Improve polymorphic types – #648
Accordion
0.0.16Major- [Breaking] Rename
Accordion.ButtontoAccordion.Trigger– #651 - [Breaking] Rename
Accordion.PaneltoAccordion.Content– #651 - [Breaking] Rename custom property accordingly (
--radix-accordion-content-height) – #651 - [Breaking]
type=“single”Accordionnow has a newcollapsibleprop which isfalseby default. This means that the default behavior has now changed. By default a user cannot close all items. – #651
Alert Dialog
0.0.18Major- [Breaking] Allow preventing default in
onPointerDownOutsidewithout inadvertently preventing focus – #654
Checkbox
0.0.16Major- [Breaking]
onCheckedChange(event)is nowonCheckedChange(checked: CheckedState)– #672 - Improve compatibility with native form validation – #650
- Allow stopping propagation on
CheckboxonClick– #672 - Improve compatibility with native
label– #672 - Improve accessibility when wrapped in native
label– #672
Collapsible
0.0.16Major- [Breaking] Rename
Collapsible.ButtontoCollapsible.Trigger– #651
Context Menu
0.0.22Major- Add submenu support – #682
- Add
ContextMenu.TriggerItem– #682 - Add
ContextMenu.Arrow– #682 - Add
dirprop for RTL support with submenus – #682 - [Breaking] Allow preventing default in
onPointerDownOutsidewithout inadvertently preventing focus – #654 - [Breaking] Remove
ContextMenu.Contentsideprop – #658 - [Breaking] Remove
ContextMenu.Contentalignprop – #658 - [Breaking] If you had
sideOffsetonContextMenu.Contentbefore, you should now usealignOffset. This is to standardize vertical alignment for both root and sub-menus. – #712 - [Breaking]
onFocusOutsideis now a custom event – #671 - Improve support of content and item with no padding – #658
- Align with WAI-ARIA spec by focusing first item when opening via keyboard – #694
Dialog
0.0.18Major- [Breaking] Allow preventing default in
onPointerDownOutsidewithout inadvertently preventing focus – #654
Dropdown Menu
0.0.21Major- Add submenu support – #682
- Add
DropdownMenu.TriggerItem– #682 - Add
dirprop for RTL support with submenus – #682 - [Breaking] Allow preventing default in
onPointerDownOutsidewithout inadvertently preventing focus – #654 - [Breaking]
onFocusOutsideis now a custom event – #671 - [Breaking] The up arrow no longer opens the menu – #702
- Align with WAI-ARIA spec by focusing first item when opening via keyboard – #694
Popover
0.0.18Major- [Breaking] Allow preventing default in
onPointerDownOutsidewithout inadvertently preventing focus – #654 - [Breaking]
onFocusOutsideis now a custom event – #671
Radio Group
0.0.17Major- [Breaking]
onValueChange(event)is nowonValueChange(value: string)– #685 - [Breaking] Remove
RadioGroup.ItemonCheckedChangeprop – #685 - Improve compatibility with native form validation – #650
- Improve usage within forms – #685
Scroll Area
0.0.14Major- Brand new version with a simpler API – #624
- Improve Safari support – #624
- Improve RTL support – #624
- Improve touch support – #624
Scrollbarmount/unmount can now be animated – #624- Add minimum width/height to thumb so it's always grabbable – #624
- Move functional CSS into component to improve DX – #624
- Bundle size significantly reduced – #624
- [Breaking] Remove
overflowXandoverflowYprops – #624 - [Breaking] Remove
ScrollAreaButtonStart,ScrollAreaButtonEndandScrollAreaTrack– #624 - [Breaking] Rename
scrollbarVisibilityprop totype. The values areauto,always,scrollorhover– #624 - [Breaking] Rename
scrollbarVisibilityRestTimeoutprop toscrollHideDelay– #624 - [Breaking] Remove
trackClickBehaviorprop as we've removed built-in animation. Clicking on track always snaps to pointer position – #624 - [Breaking]
ScrollAreaScrollbarXandScrollAreaScrollbarYare now<ScrollAreaScrollbar orientation="horizontal" />and<ScrollAreaScrollbar orientation="vertical" />– #624 - Ensure no scrollbars are shown when scrolling is disabled – #624
- Ensure children event handlers don't break – #624
- Ensure scroll area updates when children content size changes – #624
Slider
0.0.15Switch
0.0.14Major- [Breaking]
onCheckedChange(event)is nowonCheckedChange(checked: boolean)– #679 - Improve compatibility with native form validation – #650
- Improve usage within forms – #679
- Improve accessibility when wrapped in native
label– #679
Tabs
0.0.14Major- [Breaking] Rename
Tabs.TabtoTabs.Trigger– #652 - [Breaking] Rename
Tabs.PaneltoTabs.Content– #652
May 3, 2021
All primitives
- Improve polymorphic types performance – #613
Accordion
0.0.14- Ensure only one click is needed to close a single controlled accordion – #594
Checkbox
0.0.14Major- [Breaking] Remove
readOnlyprop – #600
Context Menu
0.0.18- Add
onOpenChangeprop – #604
Dialog
0.0.16- Ensure focus position isn't lost when blurring out window and re-focusing it – #589
Dropdown Menu
0.0.18Major- Take into account non-visible items – #618
- [Breaking] Remove
anchorRefprop – #580 - Prevent page from scrolling when selecting an item with space key – #626
Hover Card
0.0.1- New primitive – #595
Popover
0.0.16Major- [Breaking] Remove
anchorRefprop and replace with optionalAnchorpart – #580
Radio Group
0.0.15MajorSwitch
0.0.12Major- [Breaking] Remove
readOnlyprop – #600
Toggle Group
0.0.7- Add optional
orientation,dir,loopprops – #618
Tooltip
0.0.17Major- [Breaking] Remove
anchorRefprop – #580
March 26, 2021
All primitives
- Improve tree-shaking – #577
Context Menu
0.0.17- Ensure you can open a context menu when one is already open – #565
Dropdown Menu
0.0.17- Fix potential overlap issue – #541
Popover
0.0.15- Ensure
Contentcloses when it has multiple close animations – #571
Toggle
0.0.6Major- [Breaking] Rename
ToggleButtonprimitive toToggle– #546 - [Breaking] Rename
toggledprop topressed– #546 - [Breaking] Rename
defaultToggledprop todefaultPressed– #546 - [Breaking] Rename
onToggledChangeprop toonPressedChange– #546
Toggle Group
0.0.6- New primitive – #376
Toolbar
0.0.9Tooltip
0.0.16March 5, 2021
Accordion
0.0.7- Add height CSS custom property to panel for easier animation – #537
Collapsible
0.0.7- Add height CSS custom property to content for easier animation – #537
Tooltip
0.0.9- Fix type definition conflicts – #538
March 3, 2021
All primitives
- Add support for SSR
- [Breaking] Remove
selectorprop anddata-radix-*atributes – #517
Accordion
0.0.6Major- [Breaking] Add support for multiple values. Note that this is a breaking change because the new
typeprop is required – #527
Slider
0.0.6- Ensure
stepis rounded correctly – #463
Tabs
0.0.6- Add RTL support (
dirprop) – #497
February 17, 2021
Tooltip
0.0.7- Ensure events are composed when using
<Trigger as={Slot}>– #461
February 15, 2021
Context Menu
0.0.8- Expose
onCloseAutoFocusprop – #456
Dropdown Menu
0.0.8- Expose
onCloseAutoFocusprop – #456
February 10, 2021
All primitives
- Fix type autocompletion when using
asprop – #421
Accordion
0.0.5- Prevent open/close flickering – #431
Dialog
0.0.6- Ensure focus is returned properly on close – #422
Radio Group
0.0.5Major- [Breaking] Move
nameprop fromItemtoRoot– #424
February 1, 2021
Context Menu
0.0.6- Re–add missing
children– #414
Dropdown Menu
0.0.6- Re–add missing
children– #414
Popover
0.0.5- Prevent flickering (sliding) issue – #415
January 29, 2021
Slot
0.0.1- New utility – #409
January 25, 2021
Dialog
0.0.3- Fix regression when tabbing out would close – #403
Dropdown Menu
0.0.3- Fix broken arrow keys navigation – #404
January 22, 2021
All primitives
- Add
selectorprop – #347
Accordion
0.0.2- Ensure setting
disabled={false}onRootdoesn't enable disabled items – #400
Dropdown Menu
0.0.2Popover
0.0.2- Ensure
Contentrepositions on window resize – #359 - Ensure last element inside
Contenttriggers blur event – #395
December 15, 2020
All primitives
0.0.1Major- Initial release! 🎉 – #338