Releases: chakra-ui/ark
@ark-ui/vue@5.36.2
@ark-ui/vue
[5.36.2] - 2026-04-22
Fixed
-
- Field: Export
FieldItemcomponent from the top-level package. The component was previously only accessible via
theField.Itemnamespace.
- Field: Export
-
- DownloadTrigger: Extract the download logic into a
useDownloadhook. TheDownloadTriggercomponent now
simply consumes this hook, making the browser-download behavior reusable outside of the trigger component.
- DownloadTrigger: Extract the download logic into a
[5.36.1] - 2026-04-14
Fixed
-
Added
- Popover: Add
finalFocusElandrestoreFocusprops to control focus behavior when the popover closes.
finalFocusEllets you specify an element to receive focus instead of the trigger, andrestoreFocus(default
true) controls whether focus returns to the trigger at all.<Popover.Root finalFocusEl={() => myInputRef} restoreFocus={false}> ... </Popover.Root>
Fixed
- Color Picker: Fix color value to respect the specified
formatwhen setting values via props orsetValue.
Previously, the internal color object could retain a mismatched format (e.g., RGB whenformatishsla), causing
inconsistentvalueobjects inonValueChangecallbacks. - Date Input: Fix min/max constraints resetting other segments mid-keystroke. Validation now defers until the
segment is fully typed or on blur. - Date Picker: Fix
onValueChangenot firing when only time segments change inCalendarDateTimeor
ZonedDateTimevalues. - Navigation Menu: Remove aggressive and redundant default
aria-label.
- Popover: Add
[5.36.0] - 2026-04-10
Added
- Add new
DateInputcomponent for typing dates with keyboard input.
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>-
Multiple Trigger Support: No more duplicating a Dialog for every button in a list — render one instance and share
it across as many triggers as you need. Each trigger gets avalue, and the component repositions automatically when
switching between them.<Dialog.Root> <Dialog.Trigger value="user-1">Edit Alice</Dialog.Trigger> <Dialog.Trigger value="user-2">Edit Bob</Dialog.Trigger> {/* one dialog, reused for both */} </Dialog.Root>
Supported in Dialog, Drawer, Hover Card, Menu, Popover, and Tooltip.
-
Splitter: Nest splitters to build grid-like layouts. When a horizontal and vertical splitter meet at an
intersection, you can drag both directions at once. UsecreateRegistry()to connect the splitter instances.const registry = Splitter.createRegistry() <Splitter.Root orientation="horizontal" registry={registry}> <Splitter.Panel> <Splitter.Root orientation="vertical" registry={registry}> ... </Splitter.Root> </Splitter.Panel> </Splitter.Root>
-
Tags Input: Add
sanitizeValueprop to clean up tag values before they're added — trim whitespace, lowercase,
strip special characters, whatever you need. Defaults to(v) => v.trim().<TagsInput.Root sanitizeValue={(v) => v.trim().toLowerCase()} />
-
Toast: Add priority-based queuing. When you've hit the max visible toasts, incoming ones are queued and sorted so
the most important ones show first. -
Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops to control which element gets focus
when the panel opens or closes.
Fixed
-
Date Input: Fix crash where
event.nativeEvent.isComposingisundefined. The composing check now uses a
framework-agnostic utility that works across all adapters. -
DatePicker: Fix keyboard navigation not working in month and year views.
-
Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. -
File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. -
Menu: Fix keyboard navigation for nested menus. ArrowRight now correctly opens submenus when using nested
component patterns. Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight
across sibling items you skim past. -
Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. -
Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. -
Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen reader
landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted on adiv
without a valid role. -
Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. -
Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for styling
based on checked state. -
Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. -
Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver ignores
aria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted item on
Apple devices.
[5.35.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Added initial focus man...
- Set
@ark-ui/svelte@5.21.2
@ark-ui/svelte
[5.21.2] - 2026-04-22
Fixed
-
- Field: Export
FieldItemcomponent from the top-level package. The component was previously only accessible via
theField.Itemnamespace.
- Field: Export
-
- DownloadTrigger: Extract the download logic into a
useDownloadhook. TheDownloadTriggercomponent now
simply consumes this hook, making the browser-download behavior reusable outside of the trigger component.
- DownloadTrigger: Extract the download logic into a
[5.21.1] - 2026-04-14
Fixed
-
Added
- Popover: Add
finalFocusElandrestoreFocusprops to control focus behavior when the popover closes.
finalFocusEllets you specify an element to receive focus instead of the trigger, andrestoreFocus(default
true) controls whether focus returns to the trigger at all.<Popover.Root finalFocusEl={() => myInputRef} restoreFocus={false}> ... </Popover.Root>
Fixed
- Color Picker: Fix color value to respect the specified
formatwhen setting values via props orsetValue.
Previously, the internal color object could retain a mismatched format (e.g., RGB whenformatishsla), causing
inconsistentvalueobjects inonValueChangecallbacks. - Date Input: Fix min/max constraints resetting other segments mid-keystroke. Validation now defers until the
segment is fully typed or on blur. - Date Picker: Fix
onValueChangenot firing when only time segments change inCalendarDateTimeor
ZonedDateTimevalues. - Navigation Menu: Remove aggressive and redundant default
aria-label.
- Popover: Add
[5.21.0] - 2026-04-10
Added
- Add new
DateInputcomponent for typing dates with keyboard input.
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>-
Multiple Trigger Support: No more duplicating a Dialog for every button in a list — render one instance and share
it across as many triggers as you need. Each trigger gets avalue, and the component repositions automatically when
switching between them.<Dialog.Root> <Dialog.Trigger value="user-1">Edit Alice</Dialog.Trigger> <Dialog.Trigger value="user-2">Edit Bob</Dialog.Trigger> {/* one dialog, reused for both */} </Dialog.Root>
Supported in Dialog, Drawer, Hover Card, Menu, Popover, and Tooltip.
-
Splitter: Nest splitters to build grid-like layouts. When a horizontal and vertical splitter meet at an
intersection, you can drag both directions at once. UsecreateRegistry()to connect the splitter instances.const registry = Splitter.createRegistry() <Splitter.Root orientation="horizontal" registry={registry}> <Splitter.Panel> <Splitter.Root orientation="vertical" registry={registry}> ... </Splitter.Root> </Splitter.Panel> </Splitter.Root>
-
Tags Input: Add
sanitizeValueprop to clean up tag values before they're added — trim whitespace, lowercase,
strip special characters, whatever you need. Defaults to(v) => v.trim().<TagsInput.Root sanitizeValue={(v) => v.trim().toLowerCase()} />
-
Toast: Add priority-based queuing. When you've hit the max visible toasts, incoming ones are queued and sorted so
the most important ones show first. -
Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops to control which element gets focus
when the panel opens or closes.
Fixed
-
Dialog, Drawer, NavigationMenu, Tabs, Tour: Fix
lazyMountandunmountOnExitnot working for backdrop. -
NumberInput, Progress: Fix
localefromLocaleProvidernot being passed to the underlying machine. -
Select, TagsInput, RadioGroup, RatingGroup, Pagination: Fix unwanted props being forwarded to the DOM elements.
-
Date Input: Fix crash where
event.nativeEvent.isComposingisundefined. The composing check now uses a
framework-agnostic utility that works across all adapters. -
Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. -
File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. -
Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. -
Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. -
Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen reader
landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted on adiv
without a valid role. -
Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. -
Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for styling
based on checked state. -
Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. -
Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver ignores
aria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted item on
Apple devices. -
Menu: Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight across
sibling items you skim past.
[5.20.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal ...
@ark-ui/solid@5.36.2
@ark-ui/solid
[5.36.2] - 2026-04-22
Fixed
-
- Field: Export
FieldItemcomponent from the top-level package. The component was previously only accessible via
theField.Itemnamespace.
- Field: Export
-
- DownloadTrigger: Extract the download logic into a
useDownloadhook. TheDownloadTriggercomponent now
simply consumes this hook, making the browser-download behavior reusable outside of the trigger component.
- DownloadTrigger: Extract the download logic into a
[5.36.1] - 2026-04-14
Fixed
-
Added
- Popover: Add
finalFocusElandrestoreFocusprops to control focus behavior when the popover closes.
finalFocusEllets you specify an element to receive focus instead of the trigger, andrestoreFocus(default
true) controls whether focus returns to the trigger at all.<Popover.Root finalFocusEl={() => myInputRef} restoreFocus={false}> ... </Popover.Root>
Fixed
- Color Picker: Fix color value to respect the specified
formatwhen setting values via props orsetValue.
Previously, the internal color object could retain a mismatched format (e.g., RGB whenformatishsla), causing
inconsistentvalueobjects inonValueChangecallbacks. - Date Input: Fix min/max constraints resetting other segments mid-keystroke. Validation now defers until the
segment is fully typed or on blur. - Date Picker: Fix
onValueChangenot firing when only time segments change inCalendarDateTimeor
ZonedDateTimevalues. - Navigation Menu: Remove aggressive and redundant default
aria-label.
- Popover: Add
[5.36.0] - 2026-04-10
Added
- Add new
DateInputcomponent for typing dates with keyboard input.
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>-
Multiple Trigger Support: No more duplicating a Dialog for every button in a list — render one instance and share
it across as many triggers as you need. Each trigger gets avalue, and the component repositions automatically when
switching between them.<Dialog.Root> <Dialog.Trigger value="user-1">Edit Alice</Dialog.Trigger> <Dialog.Trigger value="user-2">Edit Bob</Dialog.Trigger> {/* one dialog, reused for both */} </Dialog.Root>
Supported in Dialog, Drawer, Hover Card, Menu, Popover, and Tooltip.
-
Splitter: Nest splitters to build grid-like layouts. When a horizontal and vertical splitter meet at an
intersection, you can drag both directions at once. UsecreateRegistry()to connect the splitter instances.const registry = Splitter.createRegistry() <Splitter.Root orientation="horizontal" registry={registry}> <Splitter.Panel> <Splitter.Root orientation="vertical" registry={registry}> ... </Splitter.Root> </Splitter.Panel> </Splitter.Root>
-
Tags Input: Add
sanitizeValueprop to clean up tag values before they're added — trim whitespace, lowercase,
strip special characters, whatever you need. Defaults to(v) => v.trim().<TagsInput.Root sanitizeValue={(v) => v.trim().toLowerCase()} />
-
Toast: Add priority-based queuing. When you've hit the max visible toasts, incoming ones are queued and sorted so
the most important ones show first. -
Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops to control which element gets focus
when the panel opens or closes.
Fixed
-
Date Input: Fix crash where
event.nativeEvent.isComposingisundefined. The composing check now uses a
framework-agnostic utility that works across all adapters. -
Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. -
File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. -
Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. -
Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. -
Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen reader
landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted on adiv
without a valid role. -
Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. -
Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for styling
based on checked state. -
Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. -
Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver ignores
aria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted item on
Apple devices. -
Menu: Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight across
sibling items you skim past.
[5.35.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Added initial focus management for non-modal mode (mirrors popover behavior).
- Fixed
aria-modalto reflect actualmodalprop value instead of hardcodedtrue.
- Set
-
Floating Panel: Fixed
opentaking precedence ...
@ark-ui/react@5.36.2
@ark-ui/react
[5.36.2] - 2026-04-22
Fixed
-
- Field: Export
FieldItemcomponent from the top-level package. The component was previously only accessible via
theField.Itemnamespace.
- Field: Export
-
Fix React Server Components build failure caused by a stray
"use client"directive on the shared
_virtual/_rolldown/runtime.jshelper emitted by vite 8's rolldown backend. -
- DownloadTrigger: Extract the download logic into a
useDownloadhook. TheDownloadTriggercomponent now
simply consumes this hook, making the browser-download behavior reusable outside of the trigger component.
- DownloadTrigger: Extract the download logic into a
[5.36.1] - 2026-04-14
Fixed
-
Added
- Popover: Add
finalFocusElandrestoreFocusprops to control focus behavior when the popover closes.
finalFocusEllets you specify an element to receive focus instead of the trigger, andrestoreFocus(default
true) controls whether focus returns to the trigger at all.<Popover.Root finalFocusEl={() => myInputRef} restoreFocus={false}> ... </Popover.Root>
Fixed
- Color Picker: Fix color value to respect the specified
formatwhen setting values via props orsetValue.
Previously, the internal color object could retain a mismatched format (e.g., RGB whenformatishsla), causing
inconsistentvalueobjects inonValueChangecallbacks. - Date Input: Fix min/max constraints resetting other segments mid-keystroke. Validation now defers until the
segment is fully typed or on blur. - Date Picker: Fix
onValueChangenot firing when only time segments change inCalendarDateTimeor
ZonedDateTimevalues. - Navigation Menu: Remove aggressive and redundant default
aria-label.
- Popover: Add
[5.36.0] - 2026-04-10
Added
- Add new
DateInputcomponent for typing dates with keyboard input.
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>-
Multiple Trigger Support: No more duplicating a Dialog for every button in a list — render one instance and share
it across as many triggers as you need. Each trigger gets avalue, and the component repositions automatically when
switching between them.<Dialog.Root> <Dialog.Trigger value="user-1">Edit Alice</Dialog.Trigger> <Dialog.Trigger value="user-2">Edit Bob</Dialog.Trigger> {/* one dialog, reused for both */} </Dialog.Root>
Supported in Dialog, Drawer, Hover Card, Menu, Popover, and Tooltip.
-
Splitter: Nest splitters to build grid-like layouts. When a horizontal and vertical splitter meet at an
intersection, you can drag both directions at once. UsecreateRegistry()to connect the splitter instances.const registry = Splitter.createRegistry() <Splitter.Root orientation="horizontal" registry={registry}> <Splitter.Panel> <Splitter.Root orientation="vertical" registry={registry}> ... </Splitter.Root> </Splitter.Panel> </Splitter.Root>
-
Tags Input: Add
sanitizeValueprop to clean up tag values before they're added — trim whitespace, lowercase,
strip special characters, whatever you need. Defaults to(v) => v.trim().<TagsInput.Root sanitizeValue={(v) => v.trim().toLowerCase()} />
-
Toast: Add priority-based queuing. When you've hit the max visible toasts, incoming ones are queued and sorted so
the most important ones show first. -
Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops to control which element gets focus
when the panel opens or closes.
Fixed
-
Date Input: Fix crash in non-React frameworks (Vue, Solid, Svelte) where
event.nativeEvent.isComposingis
undefined. The composing check now uses a framework-agnostic utility that works across all adapters. -
Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. -
File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. -
Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. -
Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. -
Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen reader
landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted on adiv
without a valid role. -
Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. -
Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for styling
based on checked state. -
Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. -
Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver ignores
aria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted item on
Apple devices. -
Menu: Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight across
sibling items you skim past.
[5.35.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive.
-...
- Set
@ark-ui/vue@5.36.1
@ark-ui/vue
[5.36.1] - 2026-04-14
Fixed
-
Added
- Popover: Add
finalFocusElandrestoreFocusprops to control focus behavior when the popover closes.
finalFocusEllets you specify an element to receive focus instead of the trigger, andrestoreFocus(default
true) controls whether focus returns to the trigger at all.<Popover.Root finalFocusEl={() => myInputRef} restoreFocus={false}> ... </Popover.Root>
Fixed
- Color Picker: Fix color value to respect the specified
formatwhen setting values via props orsetValue.
Previously, the internal color object could retain a mismatched format (e.g., RGB whenformatishsla), causing
inconsistentvalueobjects inonValueChangecallbacks. - Date Input: Fix min/max constraints resetting other segments mid-keystroke. Validation now defers until the
segment is fully typed or on blur. - Date Picker: Fix
onValueChangenot firing when only time segments change inCalendarDateTimeor
ZonedDateTimevalues. - Navigation Menu: Remove aggressive and redundant default
aria-label.
- Popover: Add
[5.36.0] - 2026-04-10
Added
- Add new
DateInputcomponent for typing dates with keyboard input.
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>-
Multiple Trigger Support: No more duplicating a Dialog for every button in a list — render one instance and share
it across as many triggers as you need. Each trigger gets avalue, and the component repositions automatically when
switching between them.<Dialog.Root> <Dialog.Trigger value="user-1">Edit Alice</Dialog.Trigger> <Dialog.Trigger value="user-2">Edit Bob</Dialog.Trigger> {/* one dialog, reused for both */} </Dialog.Root>
Supported in Dialog, Drawer, Hover Card, Menu, Popover, and Tooltip.
-
Splitter: Nest splitters to build grid-like layouts. When a horizontal and vertical splitter meet at an
intersection, you can drag both directions at once. UsecreateRegistry()to connect the splitter instances.const registry = Splitter.createRegistry() <Splitter.Root orientation="horizontal" registry={registry}> <Splitter.Panel> <Splitter.Root orientation="vertical" registry={registry}> ... </Splitter.Root> </Splitter.Panel> </Splitter.Root>
-
Tags Input: Add
sanitizeValueprop to clean up tag values before they're added — trim whitespace, lowercase,
strip special characters, whatever you need. Defaults to(v) => v.trim().<TagsInput.Root sanitizeValue={(v) => v.trim().toLowerCase()} />
-
Toast: Add priority-based queuing. When you've hit the max visible toasts, incoming ones are queued and sorted so
the most important ones show first. -
Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops to control which element gets focus
when the panel opens or closes.
Fixed
-
Date Input: Fix crash where
event.nativeEvent.isComposingisundefined. The composing check now uses a
framework-agnostic utility that works across all adapters. -
DatePicker: Fix keyboard navigation not working in month and year views.
-
Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. -
File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. -
Menu: Fix keyboard navigation for nested menus. ArrowRight now correctly opens submenus when using nested
component patterns. Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight
across sibling items you skim past. -
Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. -
Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. -
Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen reader
landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted on adiv
without a valid role. -
Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. -
Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for styling
based on checked state. -
Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. -
Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver ignores
aria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted item on
Apple devices.
[5.35.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Added initial focus management for non-modal mode (mirrors popover behavior).
- Fixed
aria-modalto reflect actualmodalprop value instead of hardcodedtrue.
- Set
-
Floating Panel: Fixed
opentaking precedence overdefaultOpenduring initialization. FixedsetPositionand
setSizeto work independently of drag/resize state. Fixed maximize/minimize restore reverting to(0, 0)in
controlled mode. Fixed `Maximum update depth ...
@ark-ui/svelte@5.21.1
@ark-ui/svelte
[5.21.1] - 2026-04-14
Fixed
-
Added
- Popover: Add
finalFocusElandrestoreFocusprops to control focus behavior when the popover closes.
finalFocusEllets you specify an element to receive focus instead of the trigger, andrestoreFocus(default
true) controls whether focus returns to the trigger at all.<Popover.Root finalFocusEl={() => myInputRef} restoreFocus={false}> ... </Popover.Root>
Fixed
- Color Picker: Fix color value to respect the specified
formatwhen setting values via props orsetValue.
Previously, the internal color object could retain a mismatched format (e.g., RGB whenformatishsla), causing
inconsistentvalueobjects inonValueChangecallbacks. - Date Input: Fix min/max constraints resetting other segments mid-keystroke. Validation now defers until the
segment is fully typed or on blur. - Date Picker: Fix
onValueChangenot firing when only time segments change inCalendarDateTimeor
ZonedDateTimevalues. - Navigation Menu: Remove aggressive and redundant default
aria-label.
- Popover: Add
[5.21.0] - 2026-04-10
Added
- Add new
DateInputcomponent for typing dates with keyboard input.
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>-
Multiple Trigger Support: No more duplicating a Dialog for every button in a list — render one instance and share
it across as many triggers as you need. Each trigger gets avalue, and the component repositions automatically when
switching between them.<Dialog.Root> <Dialog.Trigger value="user-1">Edit Alice</Dialog.Trigger> <Dialog.Trigger value="user-2">Edit Bob</Dialog.Trigger> {/* one dialog, reused for both */} </Dialog.Root>
Supported in Dialog, Drawer, Hover Card, Menu, Popover, and Tooltip.
-
Splitter: Nest splitters to build grid-like layouts. When a horizontal and vertical splitter meet at an
intersection, you can drag both directions at once. UsecreateRegistry()to connect the splitter instances.const registry = Splitter.createRegistry() <Splitter.Root orientation="horizontal" registry={registry}> <Splitter.Panel> <Splitter.Root orientation="vertical" registry={registry}> ... </Splitter.Root> </Splitter.Panel> </Splitter.Root>
-
Tags Input: Add
sanitizeValueprop to clean up tag values before they're added — trim whitespace, lowercase,
strip special characters, whatever you need. Defaults to(v) => v.trim().<TagsInput.Root sanitizeValue={(v) => v.trim().toLowerCase()} />
-
Toast: Add priority-based queuing. When you've hit the max visible toasts, incoming ones are queued and sorted so
the most important ones show first. -
Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops to control which element gets focus
when the panel opens or closes.
Fixed
-
Dialog, Drawer, NavigationMenu, Tabs, Tour: Fix
lazyMountandunmountOnExitnot working for backdrop. -
NumberInput, Progress: Fix
localefromLocaleProvidernot being passed to the underlying machine. -
Select, TagsInput, RadioGroup, RatingGroup, Pagination: Fix unwanted props being forwarded to the DOM elements.
-
Date Input: Fix crash where
event.nativeEvent.isComposingisundefined. The composing check now uses a
framework-agnostic utility that works across all adapters. -
Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. -
File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. -
Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. -
Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. -
Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen reader
landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted on adiv
without a valid role. -
Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. -
Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for styling
based on checked state. -
Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. -
Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver ignores
aria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted item on
Apple devices. -
Menu: Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight across
sibling items you skim past.
[5.20.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Added initial focus management for non-modal mode (mirrors popover behavior).
- Fixed
aria-modalto reflect actualmodalprop value instead of hardcodedtrue.
- Set
-
Floating Panel: Fixed
opentaking precedence overdefaultOpenduring initialization. FixedsetPositionand
setSizeto wor...
@ark-ui/solid@5.36.1
@ark-ui/solid
[5.36.1] - 2026-04-14
Fixed
-
Added
- Popover: Add
finalFocusElandrestoreFocusprops to control focus behavior when the popover closes.
finalFocusEllets you specify an element to receive focus instead of the trigger, andrestoreFocus(default
true) controls whether focus returns to the trigger at all.<Popover.Root finalFocusEl={() => myInputRef} restoreFocus={false}> ... </Popover.Root>
Fixed
- Color Picker: Fix color value to respect the specified
formatwhen setting values via props orsetValue.
Previously, the internal color object could retain a mismatched format (e.g., RGB whenformatishsla), causing
inconsistentvalueobjects inonValueChangecallbacks. - Date Input: Fix min/max constraints resetting other segments mid-keystroke. Validation now defers until the
segment is fully typed or on blur. - Date Picker: Fix
onValueChangenot firing when only time segments change inCalendarDateTimeor
ZonedDateTimevalues. - Navigation Menu: Remove aggressive and redundant default
aria-label.
- Popover: Add
[5.36.0] - 2026-04-10
Added
- Add new
DateInputcomponent for typing dates with keyboard input.
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>-
Multiple Trigger Support: No more duplicating a Dialog for every button in a list — render one instance and share
it across as many triggers as you need. Each trigger gets avalue, and the component repositions automatically when
switching between them.<Dialog.Root> <Dialog.Trigger value="user-1">Edit Alice</Dialog.Trigger> <Dialog.Trigger value="user-2">Edit Bob</Dialog.Trigger> {/* one dialog, reused for both */} </Dialog.Root>
Supported in Dialog, Drawer, Hover Card, Menu, Popover, and Tooltip.
-
Splitter: Nest splitters to build grid-like layouts. When a horizontal and vertical splitter meet at an
intersection, you can drag both directions at once. UsecreateRegistry()to connect the splitter instances.const registry = Splitter.createRegistry() <Splitter.Root orientation="horizontal" registry={registry}> <Splitter.Panel> <Splitter.Root orientation="vertical" registry={registry}> ... </Splitter.Root> </Splitter.Panel> </Splitter.Root>
-
Tags Input: Add
sanitizeValueprop to clean up tag values before they're added — trim whitespace, lowercase,
strip special characters, whatever you need. Defaults to(v) => v.trim().<TagsInput.Root sanitizeValue={(v) => v.trim().toLowerCase()} />
-
Toast: Add priority-based queuing. When you've hit the max visible toasts, incoming ones are queued and sorted so
the most important ones show first. -
Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops to control which element gets focus
when the panel opens or closes.
Fixed
-
Date Input: Fix crash where
event.nativeEvent.isComposingisundefined. The composing check now uses a
framework-agnostic utility that works across all adapters. -
Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. -
File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. -
Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. -
Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. -
Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen reader
landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted on adiv
without a valid role. -
Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. -
Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for styling
based on checked state. -
Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. -
Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver ignores
aria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted item on
Apple devices. -
Menu: Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight across
sibling items you skim past.
[5.35.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Added initial focus management for non-modal mode (mirrors popover behavior).
- Fixed
aria-modalto reflect actualmodalprop value instead of hardcodedtrue.
- Set
-
Floating Panel: Fixed
opentaking precedence overdefaultOpenduring initialization. FixedsetPositionand
setSizeto work independently of drag/resize state. Fixed maximize/minimize restore reverting to(0, 0)in
controlled mode. FixedMaximum update depth exceededwhen content usesResizeObserver(React). Fixed Escape during
drag/resize to cancel and revert to original position/size. -
Focus Trap: Fixed edge cases in focus trapping.
- F...
@ark-ui/react@5.36.1
@ark-ui/react
[5.36.1] - 2026-04-14
Fixed
-
Added
- Popover: Add
finalFocusElandrestoreFocusprops to control focus behavior when the popover closes.
finalFocusEllets you specify an element to receive focus instead of the trigger, andrestoreFocus(default
true) controls whether focus returns to the trigger at all.<Popover.Root finalFocusEl={() => myInputRef} restoreFocus={false}> ... </Popover.Root>
Fixed
- Color Picker: Fix color value to respect the specified
formatwhen setting values via props orsetValue.
Previously, the internal color object could retain a mismatched format (e.g., RGB whenformatishsla), causing
inconsistentvalueobjects inonValueChangecallbacks. - Date Input: Fix min/max constraints resetting other segments mid-keystroke. Validation now defers until the
segment is fully typed or on blur. - Date Picker: Fix
onValueChangenot firing when only time segments change inCalendarDateTimeor
ZonedDateTimevalues. - Navigation Menu: Remove aggressive and redundant default
aria-label.
- Popover: Add
[5.36.0] - 2026-04-10
Added
- Add new
DateInputcomponent for typing dates with keyboard input.
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>-
Multiple Trigger Support: No more duplicating a Dialog for every button in a list — render one instance and share
it across as many triggers as you need. Each trigger gets avalue, and the component repositions automatically when
switching between them.<Dialog.Root> <Dialog.Trigger value="user-1">Edit Alice</Dialog.Trigger> <Dialog.Trigger value="user-2">Edit Bob</Dialog.Trigger> {/* one dialog, reused for both */} </Dialog.Root>
Supported in Dialog, Drawer, Hover Card, Menu, Popover, and Tooltip.
-
Splitter: Nest splitters to build grid-like layouts. When a horizontal and vertical splitter meet at an
intersection, you can drag both directions at once. UsecreateRegistry()to connect the splitter instances.const registry = Splitter.createRegistry() <Splitter.Root orientation="horizontal" registry={registry}> <Splitter.Panel> <Splitter.Root orientation="vertical" registry={registry}> ... </Splitter.Root> </Splitter.Panel> </Splitter.Root>
-
Tags Input: Add
sanitizeValueprop to clean up tag values before they're added — trim whitespace, lowercase,
strip special characters, whatever you need. Defaults to(v) => v.trim().<TagsInput.Root sanitizeValue={(v) => v.trim().toLowerCase()} />
-
Toast: Add priority-based queuing. When you've hit the max visible toasts, incoming ones are queued and sorted so
the most important ones show first. -
Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops to control which element gets focus
when the panel opens or closes.
Fixed
-
Date Input: Fix crash in non-React frameworks (Vue, Solid, Svelte) where
event.nativeEvent.isComposingis
undefined. The composing check now uses a framework-agnostic utility that works across all adapters. -
Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. -
File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. -
Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. -
Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. -
Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen reader
landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted on adiv
without a valid role. -
Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. -
Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for styling
based on checked state. -
Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. -
Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver ignores
aria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted item on
Apple devices. -
Menu: Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight across
sibling items you skim past.
[5.35.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Added initial focus management for non-modal mode (mirrors popover behavior).
- Fixed
aria-modalto reflect actualmodalprop value instead of hardcodedtrue.
- Set
-
Floating Panel: Fixed
opentaking precedence overdefaultOpenduring initialization. FixedsetPositionand
setSizeto work independently of drag/resize state. Fixed maximize/minimize restore reverting to(0, 0)in
controlled mode. FixedMaximum update depth exceededwhen content usesResizeObserver(React). Fixed Escape during
drag/resize to cancel and revert to original position/size. -
Focus Trap: ...
@ark-ui/vue@5.36.0
@ark-ui/vue
[5.36.0] - 2026-04-10
Added
-
Add new
DateInputcomponent for typing dates with keyboard input.<DateInput.Root> <DateInput.Label>Date</DateInput.Label> <DateInput.Control> <DateInput.SegmentGroup> {segments.map((segment) => ( <DateInput.Segment segment={segment} /> ))} </DateInput.SegmentGroup> </DateInput.Control> <DateInput.HiddenInput /> </DateInput.Root>
-
Added
- Dialog, Drawer, Hover Card, Menu, Popover, Tooltip: Add support for multiple triggers. A single component
instance can now be shared across multiple trigger elements. Each trigger is identified by avaluepassed to
getTriggerProps. When the component is open and a different trigger is activated, it switches and repositions
without closing. - Splitter: Add multi-drag support for nested splitter layouts. When a horizontal and vertical splitter meet at
the same point (e.g. a grid layout), users can drag the intersection to resize both directions at once. Create a
shared registry viacreateSplitterRegistry()and pass it to each splitter instance. - Tags Input: Add
sanitizeValueprop to normalize tag values before they are added. This runs on every new tag,
so you can enforce consistent formatting in one place — strip whitespace, lowercase, remove special characters, etc.
Defaults to(v) => v.trim(). - Toast: Add priority-based queue system. When the max number of visible toasts is reached, incoming toasts are
queued and sorted by priority so the most important ones display first. You can override the automatic priority by
passing a custompriorityvalue. - Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops for focus management when the
panel opens or closes.
Fixed
- Date Input: Fix crash in non-React frameworks (Vue, Solid, Svelte) where
event.nativeEvent.isComposingis
undefined. The composing check now uses a framework-agnostic utility that works across all adapters. - Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. - File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. - Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. - Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. - Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen
reader landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted
on adivwithout a valid role. - Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. - Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for
styling based on checked state. - Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. - Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver
ignoresaria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted
item on Apple devices. - Menu: Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight across
sibling items you skim past. - Popper: Fix incorrect positioning when the anchor or floating element changes while the popover is still open
(e.g. switching between multiple triggers without closing first). - Vue: Fix keyboard navigation for nested menus. ArrowRight now correctly opens submenus when using nested
component patterns.
- Dialog, Drawer, Hover Card, Menu, Popover, Tooltip: Add support for multiple triggers. A single component
Fixed
- Fix keyboard navigation not working in DatePicker month and year views.
[5.35.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Added initial focus management for non-modal mode (mirrors popover behavior).
- Fixed
aria-modalto reflect actualmodalprop value instead of hardcodedtrue.
- Set
-
Floating Panel: Fixed
opentaking precedence overdefaultOpenduring initialization. FixedsetPositionand
setSizeto work independently of drag/resize state. Fixed maximize/minimize restore reverting to(0, 0)in
controlled mode. FixedMaximum update depth exceededwhen content usesResizeObserver(React). Fixed Escape during
drag/resize to cancel and revert to original position/size. -
Focus Trap: Fixed edge cases in focus trapping.
- Fixed focus trapping when the content has a single effective tab stop, such as a native radio group.
- Handle disconnected
initialFocusnodes more safely.
-
Interact Outside: Fixed Safari-specific interaction issue.
- Fixed issue where nested popovers and select within popovers didn't toggle correctly in Safari due to
focusin
events racing with pointer interactions.
- Fixed issue where nested popovers and select within popovers didn't toggle correctly in Safari due to
-
Menu: Fixed trigger to keep
aria-expanded="false"when closed. -
Pin Input: Fixed crash when typing the same character in a completed pin input.
-
Radio Group, Tabs: Fixed indicator only animating on value change, not on initial render or resize.
-
Splitter: Fixed shadow root compatibility.
- Fixed global cursor styles when splitter is used in a s...
@ark-ui/svelte@5.21.0
@ark-ui/svelte
[5.21.0] - 2026-04-10
Added
-
Add new
DateInputcomponent for typing dates with keyboard input.<DateInput.Root> <DateInput.Label>Date</DateInput.Label> <DateInput.Control> <DateInput.SegmentGroup> {segments.map((segment) => ( <DateInput.Segment segment={segment} /> ))} </DateInput.SegmentGroup> </DateInput.Control> <DateInput.HiddenInput /> </DateInput.Root>
-
Added
- Dialog, Drawer, Hover Card, Menu, Popover, Tooltip: Add support for multiple triggers. A single component
instance can now be shared across multiple trigger elements. Each trigger is identified by avaluepassed to
getTriggerProps. When the component is open and a different trigger is activated, it switches and repositions
without closing. - Splitter: Add multi-drag support for nested splitter layouts. When a horizontal and vertical splitter meet at
the same point (e.g. a grid layout), users can drag the intersection to resize both directions at once. Create a
shared registry viacreateSplitterRegistry()and pass it to each splitter instance. - Tags Input: Add
sanitizeValueprop to normalize tag values before they are added. This runs on every new tag,
so you can enforce consistent formatting in one place — strip whitespace, lowercase, remove special characters, etc.
Defaults to(v) => v.trim(). - Toast: Add priority-based queue system. When the max number of visible toasts is reached, incoming toasts are
queued and sorted by priority so the most important ones display first. You can override the automatic priority by
passing a custompriorityvalue. - Floating Panel: Add
initialFocusEl,finalFocusEl, andrestoreFocusprops for focus management when the
panel opens or closes.
Fixed
- Date Input: Fix crash in non-React frameworks (Vue, Solid, Svelte) where
event.nativeEvent.isComposingis
undefined. The composing check now uses a framework-agnostic utility that works across all adapters. - Dialog / Drawer: Avoid setting inline
pointer-eventswhen modal, letting the dismissable layer manage it
instead. - File Upload: Automatically reject duplicate files with
FILE_EXISTSerror. Previously, uploading the same file
twice was silently accepted and deleting one duplicate removed all of them. - Splitter: Fix
onResizeStartandonResizeEndcallbacks to fire for programmatic resizes. - Tags Input: Set
enterKeyHintto"done"on the input element so mobile virtual keyboards show a "Done" button
that triggers tag addition. - Toast: Restore
role="region"on the toast group element. The role was previously removed to reduce screen
reader landmark noise, but this caused an axearia-prohibited-attrviolation sincearia-labelis not permitted
on adivwithout a valid role. - Tour: Fix step navigation events (
next,prev,setStep) firing when the tour is inactive, bypassing the
startflow. Fix popper styles not being cleaned up when transitioning from a tooltip step to a dialog step. - Tree View: Add
data-checkedanddata-indeterminateattributes to item and branch control elements for
styling based on checked state. - Accordion: Fix missing
data-focusattribute ongetItemTriggerProps. - Combobox: Fix VoiceOver not announcing combobox options when navigating with arrow keys. Safari/VoiceOver
ignoresaria-activedescendantchanges on combobox inputs, so a live region is now used to announce the highlighted
item on Apple devices. - Menu: Fix issue where quick diagonal pointer movement toward an open submenu could flash the highlight across
sibling items you skim past. - Popper: Fix incorrect positioning when the anchor or floating element changes while the popover is still open
(e.g. switching between multiple triggers without closing first). - Vue: Fix keyboard navigation for nested menus. ArrowRight now correctly opens submenus when using nested
component patterns.
- Dialog, Drawer, Hover Card, Menu, Popover, Tooltip: Add support for multiple triggers. A single component
Fixed
-
Fix
lazyMountandunmountOnExitnot working for backdrop in Dialog, Drawer, NavigationMenu, Tabs, and Tour
components. -
Fix
NumberInputandProgressnot passinglocalefromLocaleProviderto the underlying machine. -
- Select, TagsInput, RadioGroup, RatingGroup, Pagination: Fixed issues where unwanted props were forwarded to the
DOM elements.
- Select, TagsInput, RadioGroup, RatingGroup, Pagination: Fixed issues where unwanted props were forwarded to the
[5.20.0] - 2026-03-26
Added
-
Date Picker: Improved range picker mode with new data attributes and state properties.
- Added missing range data attributes (
data-range-start,data-range-end,data-in-hover-range,
data-hover-range-start,data-hover-range-end) to month and year cell triggers. TableCellStatenow includesfirstInRange,lastInRange,inHoveredRange,firstInHoveredRange,
lastInHoveredRange, andoutsideRange.- Range boundary dates now announce "Starting range from {date}" and "Range ending at {date}" for better screen reader
context. - Fixed inverted year cell
selectablestate that caused years outside the visible decade or min/max range to appear
selectable. - Breaking:
DayTableCellState.formattedDateremoved — usevalueTextinstead (inherited fromTableCellState).
- Added missing range data attributes (
-
Drawer: Added new anatomy parts and improved swipe gestures.
- Added
descriptionanatomy part witharia-describedbysupport on the content element. - Added
SwipeAreapart for swipe-to-open gestures from screen edges. - Require intentional swipe movement before showing the drawer (no flash on pointer down).
- Smooth settle animation from release point to fully open position.
- Added cross-axis scroll preservation to prevent drawer drag when scrolling horizontally.
- Added initial focus management for non-modal mode.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Fixed swipe-to-dismiss in controlled mode (
open: truewithoutonOpenChangenow blocks dismiss).
- Added
-
Field: Added
Field.Itemcomponent andtargetprop onField.Rootfor multi-control fields (e.g., currency
select + amount input). UseField.Itemwith avalueto scope controls, andtargetto specify which item the
label should focus when clicked. -
Interaction: Added
useInteractionModalityanduseFocusVisiblehooks for tracking user input method (keyboard,
pointer, virtual) and conditionally showing focus rings. -
Listbox: Added
keyboardPriorityto input props to control whether key handling prioritizes text editing or list
navigation forHome/Endand horizontal arrows in grid collections. AddedhighlightFirst,highlightLast,
highlightNext, andhighlightPreviousto the API for programmatic highlight navigation. -
Pin Input: Overhauled deletion, focus management, and added new props.
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
[1, 2, 3]yields
[1, 3, ""]— not[1, "", 3]. - Smarter focus management: Backspace always moves back, click and ArrowRight are clamped to the insertion point,
same-key skip advances focus, and roving tabIndex treats the entire pin input as a single tab stop. - Added Home/End to jump to first slot or last filled slot.
- Added
enterKeyHintshowing "next" on intermediate slots and "done" on the last. - Added
autoSubmitprop to automatically submit the owning form when all inputs are filled. - Added
sanitizeValueprop to sanitize pasted values before validation (e.g. strip dashes from "1-2-3").
- Delete and Backspace now splice values left instead of leaving empty gaps. Deleting "2" from
-
Tags Input: Added
allowDuplicatesprop to allow duplicate tags. -
Clipboard, Navigation Menu, Popover, Select, Timer, Tree View: Added
translationsprop for localizing hardcoded
accessibility labels.
Fixed
-
Carousel: Fixed controlled carousel inside dialog jumping or skipping pages. Fixed navigation inside
CSS-transformed containers (e.g., dialogs with open/close animations). Fixed scroll position drifting when container
layout shifts (e.g., scrollbar removal). -
Color Picker: Fixed vertical slider orientation not preserved on pointer updates.
-
Date Input: Improved focus management.
-
Dialog: Improved non-modal mode behavior.
- Set
pointer-events: noneon positioner in non-modal mode so the page stays interactive. - Added initial focus management for non-modal mode (mirrors popover behavior).
- Fixed
aria-modalto reflect actualmodalprop value instead of hardcodedtrue.
- Set
-
Floating Panel: Fixed
opentaking precedence overdefaultOpenduring initialization. FixedsetPositionand
setSizeto work independently of drag/resize state. Fixed maximize/minimize restore reverting to(0, 0)in
controlled mode. FixedMaximum update depth exceededwhen content usesResizeObserver(React). Fixed Escape during
drag/resize to cancel and revert to original position/size. -
Focus Trap: Fixed edge cases in focus trapping.
- Fixed focus trapping when the content has a single effective tab stop, such as a native radio group.
- Handle disconnected
initialFocusnodes more safely.
-
Interact Outside: Fixed Safari-specific interaction issue.
- Fixed issue where nested popovers and select within popovers didn't toggle correctly in Safari due to
focusin
events racing with pointer interactions.
- Fixed issue where nested popovers and select within popovers didn't toggle correctly in Safari due to
-
Menu: Fixed trigger to keep
aria-expanded="false"when closed.
...