Changelog
All notable changes will be documented in this file.
[Unreleased]
Fixed
- Fixed initial flicker of 
Accordioncontent 
[3.0.0-1] - 2024-05-02
Removed
- BREAKING: Removed 
dirandgetRootNodefrom all components. UseLocaleandEnvironmentto set the direction and root node. 
Changed
- Exposed hidden inputs for various components like 
Checkbox,RadioGroup,PinInput,TagsInput, andNumberInputto allow for better integration with form libraries. - Made the 
idattribute optional for<Combobox.ItemGroup>and removedhtmlForfrom<Combobox.ItemGroupLabel>. 
- <Combobox.ItemGroup id="framework">
-   <Combobox.ItemGroupLabel htmlFor="framework">Frameworks</Combobox.ItemGroupLabel>
+ <Combobox.ItemGroup>
+   <Combobox.ItemGroupLabel>Frameworks</Combobox.ItemGroupLabel>
- Made the 
idattribute optional for<Select.ItemGroup>and removedhtmlForfrom<Select.ItemGroupLabel>. 
- <Select.ItemGroup id="framework">
-   <Select.ItemGroupLabel htmlFor="framework">Frameworks</Select.ItemGroupLabel>
+ <Select.ItemGroup>
+   <Select.ItemGroupLabel>Frameworks</Select.ItemGroupLabel>
- Improve forward compatibility of 
arkfactory with React 19 by supportingrefas normal prop. 
[3.0.0-0] - 2024-04-10
Added
- Exposed component-related types to keep imports clean and orderly.
 
import { Avatar } from '@ark-ui/react'
export const Example = () => {
  // New: Use `Avatar` import to declare types.
  const handleLoadingStatusChange = (details: Avatar.StatusChangeDetails) => {
    console.log(details.status)
  }
  return (
    <Avatar.Root onLoadingStatusChange={handleLoadingStatusChange}>
      <Avatar.Fallback>PA</Avatar.Fallback>
      <Avatar.Image src="https://i.pravatar.cc/300" alt="avatar" />
    </Avatar.Root>
  )
}
- Added a 
Contextcomponent to allow access to the internal machine API. Previously, it was only possible to access the internal API at the root level, which is manageable for small components but could lead to cumbersome composition in larger components. Additionally, this pattern clashed with theasChildcomposition pattern we use. 
export const Basic = () => (
  <Popover.Root>
    <Popover.Trigger>Open</Popover.Trigger>
    <Popover.Positioner>
      <Popover.Context>
        {(api) => (
          <Popover.Content>
            <Popover.Title onClick={() => api.close()}>Title</Popover.Title>
            <Popover.Description>Description</Popover.Description>
          </Popover.Content>
        )}
      </Popover.Context>
    </Popover.Positioner>
  </Popover.Root>
)
- Added new 
Formatcomponent to format bytes and numbers. - Added 
defaultOpentoTooltip 
Changed
- Changed the 
Menucomponent. Please refer to the documentation for more information. 
Fixed
- Resolved an issue in 
DatePickerwhere theminandmaxprops did not support date string values. 
Removed
- BREAKING: Removed the option to access the internal API from various Root components. Use the new 
Contextcomponent instead. This change will help in streamlining theasChildcomposition pattern. - Removed the unused 
parseprop from theDatePickercomponent. 
[2.2.3] - 2024-03-05
Fixed
- Resolved an issue with using 
Localein Next.js projects. - Resolved an issue with 
Toastnot updating its toasts and count properties when creating one or more toasts. 
[2.2.2] - 2024-02-27
Fixed
- Resolved an issue that a disabled 
Accordion.Itemcould still be opened. 
[2.2.1] - 2024-02-27
Changed
- Updated to latest 
@ark-ui/anatomyversion. 
[2.2.0] - 2024-02-27
Added
- Added 
Collapsiblecomponent. - Added support for 
defaultExpandedIdsin theTreeViewcomponent. 
Changed
- Enhanced the performance of the Ark 
factoryby utilizingmemoto avoid unnecessary re-renders. - Integrated 
CollapsibleintoAccordion, allowing theAccordioncomponent to utilizeCollapsiblefor animating the opening and closing of content.d 
@keyframes slideDown {
  from {
    height: 0;
  }
  to {
    height: var(--height);
  }
}
@keyframes slideUp {
  from {
    height: var(--height);
  }
  to {
    height: 0;
  }
}
[data-scope='accordion'][data-part='item-content'][data-state='open'] {
  animation: slideDown 250ms;
}
[data-scope='accordion'][data-part='item-content'][data-state='closed'] {
  animation: slideUp 200ms;
}
Fixed
- Updated the return type of 
createToasterfor comprehensive IntelliSense support when styling theToastercomponent. - Revised 
TreeViewto utilizedefaultSelectedIdsinstead ofdefaultFocusedId. - Resolved an issue with using 
factoryin Next.js projects. - Fixed a bug where the disabled 
Tooltipwould flash upon hovering and clicking the trigger. 
[2.1.1] - 2024-02-14
Fixed
- Resolved an issue where the 
Clipboardcomponent was missing a specifier in the@ark-ui/reactpackage. 
[2.1.0] - 2024-02-14
Added
- Introduced 
Clipboardcomponent. Refer to the documentation for details. - Implemented programmable control over the open state for 
ColorPicker,DatePicker,Dialog,HoverCard,Menu,Popover,Select, andTooltip. - Added a 
PresetTriggerpart to theDatePickercomponent, enabling custom triggers for common date presets (e.g., Last 7 days, Last 30 days). - Enhanced the 
DatePicker.Controlcomponent to support multiple inputs by introducing an optionalindexattribute toDatePicker.Input. Example usage: 
<DatePicker.Control>
  <DatePicker.Input index={0} />
  <DatePicker.Input index={1} />
</DatePicker.Control>
Changed
- Refined the 
TreeViewcomponent API for streamlined component usage. See the documentation for details. 
Fixed
- Resolved unintentional interactions when clicking the scrollbar.
 - Addressed an issue where positioned components failed to adjust to window resizing.
 - Corrected a behavior where restoring scroll position triggered a smooth scroll effect back to the starting point.
 - Rectified a problem in 
Combobox,Menu, andSelectwhere scrolling into view inadvertently scrolled the body element. - Fixed a discrepancy in 
DatePickerregarding the incorrect display of weeks when settingstartOfWeek. - Solved an issue in the 
Editablepreventing text deletion upon reachingmaxLength. - Corrected an issue in the 
Selectwhere an item group's labelidwas misdirected. - Adjusted 
Selectto use the correctidfor thearia-activedescendantattribute. 
[2.0.2] - 2024-02-10
Added
- Exported 
SelectionDetailstype for theMenucomponent. 
Changed
- Updated 
Dialog.DescriptionandPopover.Descriptionelements fromptodivfor better paragraph handling. - Altered 
TreeView.BranchTriggerelement frombuttontodivfor accessibility enhancements. 
Fixed
- Fix issue where 
@types/react@18.2.8broke current typings inPortal - Fix issue where 
Selectcomponent submits its first option when used in a form, even if there is no value selected. 
[2.0.1] - 2024-01-30
Fixed
- Resolved an issue that for some components the types were not being generated correctly.
 
[2.0.0] - 2024-01-30
Added
- Added 
TreeViewcomponent - Updated 
@zag-jsdependencies to their latest versions, enhancing performance for all components. 
Changed
- Breaking Change: Renamed the root types for all components to 
<ComponentName>RootProps. Like shown for theAvatarcomponent below: 
- import type { AvatarProps } from "@ark-ui/react"
+ import type { AvatarRootProps } from "@ark-ui/react"
- Breaking Change: Removed the 
.Rootsuffix for provider component likePresenceandEnvironment. 
- <Presence.Root>...</Presence.Root>
+ <Presence>...</Presence>
- 
Breaking Change: Renamed the
indicatorpart toviewin theProgresscomponent to more accurately reflect its functionality. - 
Added the
ItemPreviewcomponent to theTagsInputcomponent. See the example below: 
<TagsInput.Item key={index} index={index} value={value}>
+  <TagsInput.ItemPreview>
    <TagsInput.ItemText>{value}</TagsInput.ItemText>
    <TagsInput.ItemDeleteTrigger>Delete</TagsInput.ItemDeleteTrigger>
+ </TagsInput.ItemPreview>
  <TagsInput.ItemInput />
</TagsInput.Item>
- Refactored the 
Progresscomponent to usedivelements instead ofnavfor semantic correctness. 
Fixed
- Fixed an issue on touch devices where selecting an item within 
Combobox,Menu, orSelecttriggered a click event on the element behind the portalled content. - Fixed an issue in 
PinInputwhere pasting a value filled all inputs instead of populating them one per input. 
[1.3.0] - 2024-01-17
Added
- Added the 
Progresscomponent. - Added 
valueAsStringtoonValueChangeinDatePickercallback details - Exported change details typings, for example 
AccordionValueChangeDetailsorDialogOpenChangeDetails - Redesign 
Portalcomponent to supportgetRootNodeanddisabledprops 
Changed
- Replaced the styling props for indicator with CSS variables in 
RadioGroup,SegmentGroup, andTabs. 
Fixed
- Added missing 
placeholderprop toSelectValueTextPropstype. - Changed 
PopoverDescriptionPropstype fromdivtop - Fixed multiple rerenders on 
Selectcomponent with Next.js or RemixuseSearchParams - Fixed the issue where setting 
disabledonComboboxdoes not reflect in combobox item - Fix an issue that breaks the 
Comboboxwhen clicking on the input while the menu is open - Fixed the issue where 
DatePickerinitial value isn't set when using controlled context - Resolved an issue that 
Menuoption item could not be activated by keyboard 
[1.2.1] - 2023-12-13
Fixed
- Resolved an issue where the 
arkfactory type was not being exported correctly. 
[1.2.0] - 2023-12-13
Added
- Added the 
ToastGroupcomponent. - Added entrypoint for the 
arkfactory at@ark-ui/react/factory 
Changed
- Revised the 
FileUploadcomponent. Check out the documentation for more information. 
Fixed
- Added an explicit return type for the 
Portalcomponent to resolve an issue with online code editors. - Resolved an issue where the 
presentprop in the disclosure-type component was not being respected. - Resolved an issue where the 
arkfunction would log a warning when theasChildprop was set tofalse. - Fixed an issue where keyboard interactions within a submenu would bubble up to the parent 
Menu. - Fixed an issue with hydration mismatch in the 
Portalcomponent. 
[1.1.0] - 2023-11-21
Added
- Added render function to the 
NumberInputcomponent - Added 
FileUploadcomponent 
Changed
- Revised the 
ColorPickercomponent. Check out the documentation for more information. 
Fixed
- Resolved an issue where the 
Toastcomponent would throw a warning when multiple toasts were rendered at the same time. 
[1.0.1] - 2023-11-10
Fixed
- Resolved an issue where the 
Dialogcomponent would not animate on exit. - Resolved various issues for 
Menuwhen lazy mounted. - Resolved an issue where 
MenuTriggercould still work even when disabled. - Resolved an issue where components like 
Dialog,Popoveretc would not invokeonExitComplete - Fixed an issue where placement of the 
Comboboxcould be incorrect when lazy mounted. 
[1.0.0] - 2023-11-09
We are happy to announce the release of @ark-ui/react@1.0.0. This release includes a number of breaking changes, new features, and bug fixes. Since our last release over two months ago, we will only highlight some key changes. Please refer to the documentation for each component to learn more.
Highlights
- Revised the 
Presencecomponent:lazyMountandunmountOnExithave been added at the root level. For some disclosure components likeTabsandAccordion, this constitutes a breaking change. - Breaking changes have been implemented in 
Accordion,ColorPicker,DatePicker,Dialog,RadioGroup,SegmentGroup,TagsInput,Toast, andToggleGroupto achieve a consistent and more intuitive API. - Resolved various bugs and addressed accessibility issues across all components.
 
Stability and Support
With the release of version 1.0.0, we are moving towards a more stable version of @ark-ui/react. Future updates will strive to avoid breaking changes, ensuring a smoother experience for our users. If you encounter any issues while upgrading, please do not hesitate to open an issue on our GitHub repository. Your feedback is invaluable in helping us improve.
[0.15.0] - 2023-09-14
Added
- Added 
ToggleGroupcomponent - Added 
type HTMLArkPropsthat can be used together with thearkfactory fn to create a type that can be used withasChildprop. 
Changed
- Revised 
Comooboxcomponent to support multiple selection - Revised 
Selectcomponent to support multiple selection 
Fixed
- Fix issue where event callbacks that use 
flushSyncdid not have a stable reference, resulting in a noticable blocking re-renders.Affected components:
Slider,RangeSlider,NumberInput,ColorPicker 
[0.14.0] - 2023-08-29
Changed
- Changed 
MenuItemfrom abuttonto adivelement. Accordion: Remove support for passing value asstring. The value property must be an array of strings.Combobox: RemoveselectInputOnFocusoption in favor of userland controlTagsInput: RenameonHighlighttoonFocusChange
Removed
- Removed 
'use client'annotation fromcompose-refsfunction. - Removed 
Switchinput. This component is no longer required. TagsInput: RemovedonTagUpdateuseonChangeinstead.Switch: RemoveddefaultCheckedin favor ofdefaultIsChecked
[0.13.1] - 2023-08-13
Changed
- Removed 
'use client'annotation fromfactoryfunction. 
[0.13.0] - 2023-08-13
Changed
- BREAKING: Renamed 
SegmentIndicatortoSegmentGroupIndicatorto match the naming convention of other components. 
[0.12.0] - 2023-08-13
Added
- Added supoort for 
defaultCheckedtoCheckboxcomponent. - Added supoort for 
defaultCheckedtoSwitchcomponent. - Exposed 
arkfactory function. 
Fixed
- Fixed the display name for 
EditableCancelTriggercomponent. 
Removed
- BREAKING: Removed 
RadioInput. This component is no longer required. - BREAKING: Removed 
SegmentInput. This component is no longer required. 
[0.11.0] - 2023-08-08
Added
- Added 
ComboboxOptionGroupandComboboxClearTriggercomponents to theComboboxcomponent. - Added 
DatePickerPositionercomponent to theDatePickercomponent to help with positioning the calendar. - Added 
ComboboxOptionGroupLabelto theComboboxcomponent. This component can be used to render a label for a group of options in theComboboxOptionGroupcomponent. 
Changed
- BREAKING: Renamed 
TagsInputFieldtoTagsInputInputto match the naming convention of other input components. - BREAKING: Renamed 
NumberInputFieldtoNumberInputInputto match the naming convention of other input components. - BREAKING: Renamed 
PinInputFieldtoPinInputInputto match the naming convention of other input components. 
Removed
- BREAKING: Removed 
CheckboxInput. This component is no longer required. 
[0.10.0] - 2023-08-02
Added
- Developers can now set default options for all 
Toastcomponents in their application, ensuring a consistent look and feel across the board. - Updated number input 
onChangehandler to allow synchronous updates to the value when using the scrubber. 
Changed
- Improved TypeScript typings in our factory functions. The changes allow for more accurate type inference for the 
refproperty when dealing with both intrinsic HTML elements and custom React components. 
[0.9.0] - 2023-07-21
Added
- To improve performance and reduce initial load times, we've introduced two new properties to the 
AccordionContent,ComboboxContent,DialogBackdrop,DialogContent,HoverCardContent,PopoverContent,SelectContent, andTooltipContentcomponents. ThelazyMountproperty allows for on-demand rendering of content, while theunmountOnExitproperty enables the removal of the component from the DOM once it's no longer required, ensuring better resource management and cleaner code. 
[0.8.1] - 2023-07-19
Fixed
- Resolved an issue that NextJS would throw a false error because of 
use clientannotation. 
Removed
- Removed 
isOpenfromPopover. Please useopeninstead. 
[0.8.0] - 2023-07-19
Added
- Enhanced 
Carouselcomponent: IntroducedCarouselIndicatorandCarouselIndicatorGroupcomponents. These sub-components offer finer control over the carousel navigation, enabling users to directly access desired carousel slides. - Introduced 
Presencecomponent, a new utility designed to delay the unmount of child components to assist with animation processes. - Added support to animate the 
Dialog,TooltipandPopoverelements using thePresencecomponent. Check out the documentation for these components to learn more. - Expose 
use<X>Contextfor all components that use context. 
[0.7.3] - 2023-07-10
Fixed
- Resolved an issue where the 
SegmentGroupcomponent would not animate on the first click. - Fixed an issue where standalone imports were not working as expected.
 - Resolved an issue whre the 
Toastcomponent would not render custom content. 
[0.7.2] - 2023-06-30
Fixed
- Resolved an issue that types accross various components were not being exported correctly.
 
[0.7.1] - 2023-06-27
Added
- Support for standalone component imports: Developers can now import individual components, such as 
@ark-ui/react/src/srctabsinstead of the full@ark-ui/reactpackage. This is a significant feature for those working with bundlers that do not support tree-shaking. By allowing imports of individual components, we ensure a reduced bundle size when the full package import is not necessary. 
[0.7.0] - 2023-06-23
Added
- Added 
SegmentGroupcomponent 
[0.6.0] - 2023-06-03
Added
- Added 
Avatarcomponent - Introduced an optional 
defaulPageproperty toPagination - Introduced an optional 
defaultSizeproperty toSplitter - Introduced the 
onLongPressproperty toPressable 
Changed
- Exposed direct access to the 
Splittercomponent's internal API, enabling more control over the component's state - Updated all 
@zag-jsdependencies to their latest versions 
[0.5.0] - 2023-05-25
Removed
- Removed 
AccordionIcon 
[0.4.0] - 2023-05-23
Added
- Add 
DatePicker 
Changed
- Update 
Checkbox. Controlindeterminatestate incheckedprop 
Fixed
- Fix a typo in the 
SwitchPropstype 
[0.3.0] - 2023-05-11
Added
- Add 
Switch - Add support for 
asChild 
[0.2.0] - 2023-04-29
Added
- Add 
ColorPicker 
[0.1.0] - 2023-04-17
Added
- Add 
Accordion - Add 
Carousel - Add 
Checkbox - Add 
Combobox - Add 
DatePicker - Add 
Dialog - Add 
Editable - Add 
HoverCard - Add 
Menu - Add 
NumberInput - Add 
Pagination - Add 
PinInput - Add 
Popover - Add 
Pressable - Add 
RadioGroup - Add 
RangeSlider - Add 
RatingGroup - Add 
Select - Add 
Slider - Add 
Splitter - Add 
Tabs - Add 
TagsInput - Add 
Toast - Add 
Tooltip