Radix homepage
Overview

Releases

Radix Primitives releases and their changelogs.

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 beta to stable.

All primitives

  • Improve support for React 18 #1329

  • [Breaking] Improve RTL performance. You need to use DirectionProvider if you were relying on dir attribute inheritance from document (or any element). #1119

Alert Dialog

1.0.0Major
  • [Breaking] Remove allowPinchZoom prop, now defaults to true #1514

  • Improve compatibility with JS animation libraries with forceMount on AlertDialog.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 allowPinchZoom prop, now defaults to true #1514

  • [Breaking] Add new Portal part. To avoid regressions, use this part if you want portalling behavior. Note that z-index isn't managed anymore so you have full control of layering. #1429

  • [Breaking] Remove offset on Arrow part #1531

  • [Breaking] Rename collisionTolerance to collisionPadding on Content part and accepts a number or a padding object #1531

  • Fix issue with native context menu appearing in React 18 #1378

  • Add data-highlighted attribute to support styling #1388

  • Add data-state attribute to Trigger part #1455

  • Add collisionBoundary, arrowPadding, sticky, hideWhenDetached props on Content part #1531

Dialog

1.0.0Major
  • [Breaking] Remove allowPinchZoom prop, now defaults to true #1514

  • Improve compatibility with JS animation libraries with forceMount on Dialog.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 allowPinchZoom prop, now defaults to true #1514

  • [Breaking] Add new Portal part. To avoid regressions, use this part if you want portalling behavior. Note that z-index isn't managed anymore so you have full control of layering. #1429

  • [Breaking] Remove offset on Arrow part #1531

  • [Breaking] Rename collisionTolerance to collisionPadding on Content part and accepts a number or a padding object #1531

  • Add data-highlighted attribute to support styling #1388

  • Prevent escape key from exiting fullscreen mode in Firefox & Safari #1423

  • Add collisionBoundary, arrowPadding, sticky, hideWhenDetached props on Content part #1531

Hover Card

1.0.0Major
  • [Breaking] Add new Portal part. To avoid regressions, use this part if you want portalling behavior. Note that z-index isn't managed anymore so you have full control of layering. #1426

  • [Breaking] Remove offset on Arrow part #1531

  • [Breaking] Rename collisionTolerance to collisionPadding on Content part and accepts a number or a padding object #1531

  • Add collisionBoundary, arrowPadding, sticky, hideWhenDetached props on Content part #1531

Navigation Menu

1.0.0Major
  • Ensure menu closes after clicking NavigationMenu.Link #1347

  • Add onSelect prop to NavigationMenu.Link #1372

Popover

1.0.0Major
  • [Breaking] Remove allowPinchZoom prop, now defaults to true #1514

  • [Breaking] Add new Portal part. To avoid regressions, use this part if you want portalling behavior. Note that z-index isn't managed anymore so you have full control of layering. #1425

  • [Breaking] Remove offset on Arrow part #1531

  • [Breaking] Rename collisionTolerance to collisionPadding on Content part and accepts a number or a padding object #1531

  • Add collisionBoundary, arrowPadding, sticky, hideWhenDetached props on Content part #1531

Portal

1.0.0Major
  • [Breaking] Note that z-index isn't managed anymore so you have full control of layering. The prop to provide a custom container evolves from containerRef (ref) to container (element). The data-radix-portal was removed because you can use asChild to control the element. #1463

RadioGroup

1.0.0Major
  • Add aria-required to root #1422

Scroll Area

1.0.0Major
  • ScrollArea.Thumb is now animatable #1392

Select

1.0.0Major
  • [Breaking] Renamed data-state values from active|inactive to checked|unchecked #1388

  • [Breaking] Add new Portal part. To avoid regressions, use this part if you want portalling behavior. Note that z-index isn't managed anymore so you have full control of layering. #1459

  • Fix position breaking when using asChild on Select.Content #1245

  • Improve trigger/content alignment when Select.Content has 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-highlighted attribute to support styling #1388

  • Add support for placeholder via placeholder prop on Select.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 key prop #1283

  • Improve compatability with animation libraries #1468

Tooltip

1.0.0Major
  • [Breaking] Add new Portal part. To avoid regressions, use this part if you want portalling behavior. Note that z-index isn't managed anymore so you have full control of layering. #1427

  • [Breaking] By default Tooltip.Content will remain open when hovering (WCAG 2.1 Content on Hover compliance). disableHoverableContent can be supplied to Tooltip.Provider to restore previous behavior #1490

  • [Breaking] side on Tooltip.Content now defaults to top #1490

  • [Breaking] Tooltip.Provider is now required, you must wrap your app to avoid regressions. #1490

  • [Breaking] Remove offset on Arrow part #1531

  • [Breaking] Rename collisionTolerance to collisionPadding on Content part 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, hideWhenDetached props on Content part #1531

This release introduces 3 brand new primitives in beta: 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.6
  • Prevent DropdownMenu.TriggerItem click from firing twice #1057

  • Improve idle performance #1040

Dialog

0.1.7Major
  • Improve pointer-events management #1079

  • [Breaking] Dialog.Title is now a required part so will throw an error if not used. aria-describedby={undefined} must be passed to Dialog.Content if 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.TriggerItem click from firing twice #1057

  • Improve idle performance #1040

Navigation Menu

0.1.2Beta
  • New primitive #1172

Radio Group

0.1.5
  • Prevent activation via enter key #1104

Select

0.1.1Beta
  • New primitive #1169

Slider

0.1.4
  • Prevent page scroll when using Home and End keys #1076

Tabs

0.1.5
  • Prevent accidental focus activation via right-click #1114

Toast

0.1.1Beta
  • New primitive #1165

Toggle Group

0.1.5
  • Improve accessibility by using radio role for single toggle group #1118

This release focuses on React 18 support and introduces a number 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 type and value props #979

  • Prevent Accordion.Content height animation on initial page load #977

Alert Dialog

0.1.5Major
  • [Breaking] Add new Portal part. To avoid regressions, use this part if you want portalling behavior. #936

  • [Breaking] Support scrolling within AlertDialog.Overlay. Move allowPinchZoom to root. #963

  • Fix asChild TypeScript error #924

Collapsible

0.1.5
  • Prevent Collapsible.Content height animation on initial page load #977

Dialog

0.1.5Major
  • [Breaking] Add new Portal part. To avoid regressions, use this part if you want portalling behavior. #936

  • [Breaking] Support scrolling within Dialog.Overlay. Move allowPinchZoom to root. #963

Dropdown Menu

0.1.4
  • Prevent disabled trigger from opening menu #974

Hover Card

0.1.3
  • Fix ability to focus HoverCard when inside a dialog #920

Radio Group

0.1.4
  • Prevent programmatic focus from changing value #939

Tabs

0.1.4Major
  • [Breaking] Change Tabs.Trigger to button element #981

  • Improve TSDocs #978

Toggle Group

0.1.4
  • Remove invalid aria-orientation attribute on role=group element #965

Toolbar

0.1.4
  • Fix asChild TypeScript error #924

  • Remove invalid toolbaritem role #950

Tooltip

0.1.6Major
  • [Breaking] Add new TooltipProvider part. You must wrap your app to avoid regressions. #1007

  • [Breaking] Remove type=button attribute from Tooltip.Trigger #1011

  • Fix tooltip activation regression #1035

Slot

0.1.2
  • Fix key warnings #1015

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.Content to help with width animations #879

Alert Dialog

0.1.1Major
  • Improve composability with Dialog #906

  • [Breaking] Remove AlertDialog.Content onInteractOutside prop #846

Dialog

0.1.1
  • Improve composability with AlertDialog #906

  • Add pinch to zoom support to DropdownMenu.Content via allowPinchZoom prop #884

Context Menu

0.1.1
  • Add pinch to zoom support to ContextMenu.Content via allowPinchZoom prop #884

  • Prevent scroll via arrow keypress on submenu triggers #908

Collapsible

0.1.1
  • Add new CSS variable to Collapsible.Content to 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.Content via allowPinchZoom prop #884

  • Prevent scroll via arrow keypress on submenu triggers #908

Hover Card

0.1.1
  • Open on focus to improve keyboard support #902

  • Compose correct pointer events internally #893

Label

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.Content via allowPinchZoom prop #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.Content when tab is inactive #859

All primitives

  • All primitives moved to Beta and are now versioned 0.1.0

  • [Breaking] Replace polymorphic as prop with asChild boolean 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-events when 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 extendPrimitive utility #840

All primitives

  • Improve polymorphic types performance #784

Alert Dialog

0.0.20Major
  • [Breaking] Remove AlertDialog.Content onPointerDownOutside prop #700

  • Prevent outside pointer events triggering prematurely on touch devices #767

Context Menu

0.0.24Major
  • Add modality support via modal prop #700

  • [Breaking] Remove ContextMenu.Content disableOutsidePointerEvents prop #700

  • Prevent outside pointer events triggering prematurely on touch devices #767

Dialog

0.0.20
  • Add modality support via modal prop #700

  • Improve animation rendering in React 18 #776

  • Ensure focus is restored to trigger on close when using the autofocus attribute 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 modal prop #700

  • [Breaking] Remove DropdownMenu.Content disableOutsideScroll prop #700

  • [Breaking] Remove DropdownMenu.Content disableOutsidePointerEvents prop #700

  • Prevent outside pointer events triggering prematurely on touch devices #767

Popover

0.0.20Major
  • Add modality support via modal prop #700

  • [Breaking] Remove Popover.Content disableOutsideScroll prop #700

  • [Breaking] Remove Popover.Content disableOutsidePointerEvents prop #700

  • [Breaking] Remove Popover.Content trapFocus prop #700

  • Improve animation rendering in React 18 #776

  • Ensure focus is restored to trigger on close when using the autofocus attribute 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-state to ScrollBar part #801

Slider

0.0.17
  • Prevent thumb receiving focus when disabled #777

  • Prevent focus loss on thumb when using React.StrictMode #794

Context Menu

0.0.23
  • Can now be triggered on touch with a long-press #743

Dialog

0.0.19
  • Add optional Title and Description parts for simpler labelling #741

Scroll Area

0.0.15
  • Add data-orientation to Scrollbar for styling convenience #720

  • Fix forceMount type issue on Scrollbar #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

All primitives

  • Improve polymorphic types #648

Accordion

0.0.16Major
  • [Breaking] Rename Accordion.Button to Accordion.Trigger #651

  • [Breaking] Rename Accordion.Panel to Accordion.Content #651

  • [Breaking] Rename custom property accordingly (--radix-accordion-content-height) #651

  • [Breaking] type=“single” Accordion now has a new collapsible prop which is false by 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 onPointerDownOutside without inadvertently preventing focus #654

Checkbox

0.0.16Major
  • [Breaking] onCheckedChange(event) is now onCheckedChange(checked: CheckedState) #672

  • Improve compatibility with native form validation #650

  • Allow stopping propagation on Checkbox onClick #672

  • Improve compatibility with native label #672

  • Improve accessibility when wrapped in native label #672

Collapsible

0.0.16Major
  • [Breaking] Rename Collapsible.Button to Collapsible.Trigger #651

Context Menu

0.0.22Major
  • Add submenu support #682

  • Add ContextMenu.TriggerItem #682

  • Add ContextMenu.Arrow #682

  • Add dir prop for RTL support with submenus #682

  • [Breaking] Allow preventing default in onPointerDownOutside without inadvertently preventing focus #654

  • [Breaking] Remove ContextMenu.Content side prop #658

  • [Breaking] Remove ContextMenu.Content align prop #658

  • [Breaking] If you had sideOffset on ContextMenu.Content before, you should now use alignOffset. This is to standardize vertical alignment for both root and sub-menus. #712

  • [Breaking] onFocusOutside is 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 onPointerDownOutside without inadvertently preventing focus #654

Dropdown Menu

0.0.21Major
  • Add submenu support #682

  • Add DropdownMenu.TriggerItem #682

  • Add dir prop for RTL support with submenus #682

  • [Breaking] Allow preventing default in onPointerDownOutside without inadvertently preventing focus #654

  • [Breaking] onFocusOutside is 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 onPointerDownOutside without inadvertently preventing focus #654

  • [Breaking] onFocusOutside is now a custom event #671

Radio Group

0.0.17Major
  • [Breaking] onValueChange(event) is now onValueChange(value: string) #685

  • [Breaking] Remove RadioGroup.Item onCheckedChange prop #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

  • Scrollbar mount/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 overflowX and overflowY props #624

  • [Breaking] Remove ScrollAreaButtonStart, ScrollAreaButtonEnd and ScrollAreaTrack #624

  • [Breaking] Rename scrollbarVisibility prop to type. The values are auto, always, scroll or hover #624

  • [Breaking] Rename scrollbarVisibilityRestTimeout prop to scrollHideDelay #624

  • [Breaking] Remove trackClickBehavior prop as we've removed built-in animation. Clicking on track always snaps to pointer position #624

  • [Breaking] ScrollAreaScrollbarX and ScrollAreaScrollbarY are 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.15
  • Improve usage within forms #678

  • Fix key binding issue in LTR #718

Switch

0.0.14Major
  • [Breaking] onCheckedChange(event) is now onCheckedChange(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.Tab to Tabs.Trigger #652

  • [Breaking] Rename Tabs.Panel to Tabs.Content #652

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 readOnly prop #600

Context Menu

0.0.18
  • Add onOpenChange prop #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 anchorRef prop #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 anchorRef prop and replace with optional Anchor part #580

Radio Group

0.0.15Major
  • Add optional orientation, dir, loop props #618

  • [Breaking] Remove readOnly prop #600

Switch

0.0.12Major
  • [Breaking] Remove readOnly prop #600

Toggle Group

0.0.7
  • Add optional orientation, dir, loop props #618

Tooltip

0.0.17Major
  • [Breaking] Remove anchorRef prop #580

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 Content closes when it has multiple close animations #571

Toggle

0.0.6Major
  • [Breaking] Rename ToggleButton primitive to Toggle #546

  • [Breaking] Rename toggled prop to pressed #546

  • [Breaking] Rename defaultToggled prop to defaultPressed #546

  • [Breaking] Rename onToggledChange prop to onPressedChange #546

Toggle Group

0.0.6
  • New primitive #376

Toolbar

0.0.9

Tooltip

0.0.16

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

All primitives

  • Add support for SSR

  • [Breaking] Remove selector prop and data-radix-* atributes #517

Accordion

0.0.6Major
  • [Breaking] Add support for multiple values. Note that this is a breaking change because the new type prop is required #527

Slider

0.0.6
  • Ensure step is rounded correctly #463

Tabs

0.0.6
  • Add RTL support (dir prop) #497

Tooltip

0.0.7
  • Ensure events are composed when using <Trigger as={Slot}> #461

Context Menu

0.0.8
  • Expose onCloseAutoFocus prop #456

Dropdown Menu

0.0.8
  • Expose onCloseAutoFocus prop #456

All primitives

  • Fix type autocompletion when using as prop #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 name prop from Item to Root #424

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

Slot

0.0.1
  • New utility #409

Dialog

0.0.3
  • Fix regression when tabbing out would close #403

Dropdown Menu

0.0.3
  • Fix broken arrow keys navigation #404

All primitives

  • Add selector prop #347

Accordion

0.0.2
  • Ensure setting disabled={false} on Root doesn't enable disabled items #400

Dropdown Menu

0.0.2
  • Add enter key support on trigger #381

  • Prevent focus race condition #394

Popover

0.0.2
  • Ensure Content repositions on window resize #359

  • Ensure last element inside Content triggers blur event #395

All primitives

0.0.1Major
  • Initial release! 🎉 #338