Releases: chakra-ui/ark
@ark-ui/vue@5.35.0
@ark-ui/vue
[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 shadow root.
[5.34.1] - 2026-03-03
Fixed
- Carousel:
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
at mount time - Keep page and indicators in sync after drag release and scroll settling
- Handle rapid mixed interactions (drag, wheel, buttons, indicators) more consistently
- Keep page state valid when
slidesPerPage,slidesPerMove, direction, or orientation change - Make
slidesPerMoveprogression more predictable
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
- Combobox, Listbox, Select: Improved controlled-mode synchronization and callback/item resolution behavior across
filtered collections
Changed
- Format:
Format.Timenow acceptsamLabelandpmLabelas separate props instead of the previousamPmLabels
object
[5.34.0] - 2026-02-27
Added
- Format: Added
Format.Timefor formatting time values and examples for basic, date input, seconds, custom AM/PM
labels, and locale
Fixed
- Build: Fixed CJS build issues in downstream Zag.js packages
[5.33.0] - 2026-02-26
Added
-
Date Picker: Added non-Gregorian calendar support via
createCalendarprop (Persian, Buddhist, Islamic, Hebrew,
and other calendar systems)<script setup> import { PersianCalendar } from '@internationalized/date' function createCalendar(identifier) { switch (identifier) { case 'persian': return new PersianCalendar() default: throw new Error(`Unsupported calendar: ${identifier}`) } } </script> <DatePicker.Root locale="fa-IR" :create-calendar="createCalendar"> <!-- ... --> </DatePicker.Root>
-
Date Picker: Added
data-typeattribute to weekend table header and cell
Fixed
- Combobox: Fixed
onValueChangereturning emptyitemsarray when using controlled value - Popover: Fixed nested popover z-index layering
- Toast: Fixed types to ensure
parent/indexare exposed as props andexpand/collapseare exposed on the
store - Radio Group, Listbox, Progress, Segment Group: Fixed group labels rendering orphan label elements; now render as
spanper W3C ARIA pattern
[5.32.0] - 2026-02-21
Added
- Locale: Added
useDateFormatterhook for localized date formatting using@internationalized/date - Swap: Added new
Swapcomponent for toggling between two visual states with CSS animations using dual presence
instances - Checkbox: Added
maxSelectedValuesprop toCheckboxGroupto limit the number of selected values - Drawer: Replaced
BottomSheetwith newDrawercomponent supporting multi-directional swipe viaswipeDirection
prop (up,down,left,right), a newPositionerpart, andsnapToSequentialPointsoption - Date Picker:
- Added
focusoption toapi.clearValue({ focus?: boolean }) - Added
api.setTime(time, index?)for date-time picker support - Added
maxSelectedDatesprop to limit selected dates inmultipleselection mode - Added
api.isMaxSelectedto check if maximum number of dates has been selected - Added
openOnClickprop to open the calendar when clicking the input field - Added
showWeekNumberssupport to display ISO 8601 week number column in the day view
- Added
- Popover: Added
sizeMiddlewarepositioning option to optionally disable the size middleware - Select: Added
autoCompleteprop for browser autofill hints
Fixed
- useForwardExpose: Fixed crash when element bound with
forwardRefdoes not exist (e.g. conditionally rendered
withv-if) - Combobox:
- Fixed
aria-selectedbeing set on highlighted items instead of selected items - Fixed
selectedItemsgetting out of sync withvaluein controlled mode - Fixed item disabled state not accounting for root-level
disabledprop
- Fixed
- Date Picker:
- Fixed
api.selectToday()sending incorrect value format - Preserve time/timezone when selecting new dates (
CalendarDateTimeandZonedDateTime) - Improved focus management in trigger-only mode
- Fixed
- Dialog: Fixed non-modal dialog closing on outside click when
modalisfalse - Listbox: Fixed DOM IDs
- Number Input: Fixed
invalidprop being ignored when v...
@ark-ui/svelte@5.20.0
@ark-ui/svelte
[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. -
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 shadow root.
[5.19.1] - 2026-03-03
Fixed
- Carousel:
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
at mount time - Keep page and indicators in sync after drag release and scroll settling
- Handle rapid mixed interactions (drag, wheel, buttons, indicators) more consistently
- Keep page state valid when
slidesPerPage,slidesPerMove, direction, or orientation change - Make
slidesPerMoveprogression more predictable
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
- Combobox, Listbox, Select: Improved controlled-mode synchronization and callback/item resolution behavior across
filtered collections
Changed
- Format:
Format.Timenow acceptsamLabelandpmLabelas separate props instead of the previousamPmLabels
object
[5.19.0] - 2026-02-27
Added
- Format: Added
Format.Timefor formatting time values and examples for basic, date input, seconds, custom AM/PM
labels, and locale
Fixed
- Build: Fixed CJS build issues in downstream Zag.js packages
- Download Trigger: Fixed window resolution to use environment context in custom environments (for example, iframes)
[5.18.0] - 2026-02-26
Added
-
Date Picker: Added non-Gregorian calendar support via
createCalendarprop (Persian, Buddhist, Islamic, Hebrew,
and other calendar systems)<script> import { PersianCalendar } from '@internationalized/date' function createCalendar(identifier) { switch (identifier) { case 'persian': return new PersianCalendar() default: throw new Error(`Unsupported calendar: ${identifier}`) } } </script> <DatePicker.Root locale="fa-IR" {createCalendar}> <!-- ... --> </DatePicker.Root>
-
Date Picker: Added
data-typeattribute to weekend table header and cell
Fixed
- Combobox: Fixed
onValueChangereturning emptyitemsarray when using controlled value - Popover: Fixed nested popover z-index layering
- Toast: Fixed types to ensure
parent/indexare exposed as props andexpand/collapseare exposed on the
store - Radio Group, Listbox, Progress, Segment Group: Fixed group labels rendering orphan label elements; now render as
spanper W3C ARIA pattern
Added
- Locale: Added
useDateFormatterhook for localized date formatting using@internationalized/date - Swap: Added new
Swapcomponent for toggling between two visual states with CSS animations using dual presence
instances - Checkbox: Added
maxSelectedValuesprop toCheckboxGroupto limit the number of selected values - Drawer: Replaced
BottomSheetwith newDrawercomponent supporting multi-directional swipe viaswipeDirection
prop (up,down,left,right), a newPositionerpart, andsnapToSequentialPointsoption - Date Picker:
- Added
focusoption toapi.clearValue({ focus?: boolean }) - Added
api.setTime(time, index?)for date-time picker support - Added
maxSelectedDatesprop to limit selected dates inmultipleselection mode - Added
api.isMaxSelectedto check if maximum number of dates has been selected - Added
openOnClickprop to open the calendar when clicking the input field - Added
showWeekNumberssupport to display ISO 8601 week number column in the day view
- Added
- Popover: Added
sizeMiddlewarepositioning option to optionally disable the size middleware - Select: Added
autoCompleteprop for browser autofill hints
Fixed
- Combobox:
- Fixed
aria-selectedbeing set on highlighted items instead of selected items - Fixed
selectedItemsgetting out of sync withvaluein controlled mode - Fixed item disabled state not accounting for root-level
disabledprop
- Fixed
- Date Picker:
- Fixed
api.selectToday()sending incorrect value format - Preserve time/timezone when selecting new dates (
CalendarDateTimeandZonedDateTime) - Improved focus management in trigger-only mode
- Fixed
- Dialog: Fixed non-modal dialog closing on outside click when
modalisfalse - Listbox: Fixed DOM IDs
- Number Input: Fixed
invalidprop being ignored when value is out of range - Popover: ...
@ark-ui/solid@5.35.0
@ark-ui/solid
[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 shadow root.
[5.34.1] - 2026-03-03
Fixed
- Carousel:
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
at mount time - Keep page and indicators in sync after drag release and scroll settling
- Handle rapid mixed interactions (drag, wheel, buttons, indicators) more consistently
- Keep page state valid when
slidesPerPage,slidesPerMove, direction, or orientation change - Make
slidesPerMoveprogression more predictable
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
- Combobox, Listbox, Select: Improved controlled-mode synchronization and callback/item resolution behavior across
collections - Menu: Fixed
MenuCheckboxItemto usegetOptionItemStateforoptionItemStatecontext lookup
Changed
- Format:
Format.Timenow acceptsamLabelandpmLabelas separate props instead of the previousamPmLabels
object
[5.34.0] - 2026-02-27
Added
- Format: Added
Format.Timefor formatting time values and examples for basic, date input, seconds, custom AM/PM
labels, and locale
Fixed
- Build: Fixed CJS build issues in downstream Zag.js packages
[5.33.0] - 2026-02-26
Added
-
Date Picker: Added non-Gregorian calendar support via
createCalendarprop (Persian, Buddhist, Islamic, Hebrew,
and other calendar systems)import { PersianCalendar } from '@internationalized/date' function createCalendar(identifier) { switch (identifier) { case 'persian': return new PersianCalendar() default: throw new Error(`Unsupported calendar: ${identifier}`) } } ;<DatePicker.Root locale="fa-IR" createCalendar={createCalendar}> {/* ... */} </DatePicker.Root>
-
Date Picker: Added
data-typeattribute to weekend table header and cell
Fixed
- Combobox: Fixed
onValueChangereturning emptyitemsarray when using controlled value - Popover: Fixed nested popover z-index layering
- Toast: Fixed types to ensure
parent/indexare exposed as props andexpand/collapseare exposed on the
store - Radio Group, Listbox, Progress, Segment Group: Fixed group labels rendering orphan label elements; now render as
spanper W3C ARIA pattern
[5.32.0] - 2026-02-21
Added
- Locale: Added
useDateFormatterhook for localized date formatting using@internationalized/date - Swap: Added new
Swapcomponent for toggling between two visual states with CSS animations using dual presence
instances - Checkbox: Added
maxSelectedValuesprop toCheckboxGroupto limit the number of selected values - Drawer: Replaced
BottomSheetwith newDrawercomponent supporting multi-directional swipe viaswipeDirection
prop (up,down,left,right), a newPositionerpart, andsnapToSequentialPointsoption - Date Picker:
- Added
focusoption toapi.clearValue({ focus?: boolean }) - Added
api.setTime(time, index?)for date-time picker support - Added
maxSelectedDatesprop to limit selected dates inmultipleselection mode - Added
api.isMaxSelectedto check if maximum number of dates has been selected - Added
openOnClickprop to open the calendar when clicking the input field - Added
showWeekNumberssupport to display ISO 8601 week number column in the day view
- Added
- Popover: Added
sizeMiddlewarepositioning option to optionally disable the size middleware - Select: Added
autoCompleteprop for browser autofill hints
Fixed
- Combobox:
- Fixed
aria-selectedbeing set on highlighted items instead of selected items - Fixed
selectedItemsgetting out of sync withvaluein controlled mode - Fixed item disabled state not accounting for root-level
disabledprop
- Fixed
- Date Picker:
- Fixed
api.selectToday()sending incorrect value format - Preserve time/timezone when selecting new dates (
CalendarDateTimeandZonedDateTime) - Improved focus management in trigger-only mode
- Fixed
- Dialog: Fixed non-modal dialog closing on outside click when
modalisfalse - Listbox: Fixed DOM IDs
- Number Input: Fixed
invalidprop being ignored when value is out of range - Popover: Improved performance by reducing sty...
@ark-ui/react@5.35.0
@ark-ui/react
[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 shadow root.
[5.34.1] - 2026-03-03
Fixed
- Carousel:
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
at mount time - Keep page and indicators in sync after drag release and scroll settling
- Handle rapid mixed interactions (drag, wheel, buttons, indicators) more consistently
- Keep page state valid when
slidesPerPage,slidesPerMove, direction, or orientation change - Make
slidesPerMoveprogression more predictable
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
- Combobox, Listbox, Select: Improved controlled-mode synchronization and callback/item resolution behavior across
filtered collections
Changed
- Format:
Format.Timenow acceptsamLabelandpmLabelas separate props instead of the previousamPmLabels
object
[5.34.0] - 2026-02-27
Added
- Format: Added
Format.Timefor formatting time values and examples for basic, date input, seconds, custom AM/PM
labels, and locale
Fixed
- Build: Fixed CJS build issues in downstream Zag.js packages
[5.33.0] - 2026-02-26
Added
-
Date Picker: Added non-Gregorian calendar support via
createCalendarprop (Persian, Buddhist, Islamic, Hebrew,
and other calendar systems)import { PersianCalendar } from '@internationalized/date' function createCalendar(identifier) { switch (identifier) { case 'persian': return new PersianCalendar() default: throw new Error(`Unsupported calendar: ${identifier}`) } } ;<DatePicker.Root locale="fa-IR" createCalendar={createCalendar}> {/* ... */} </DatePicker.Root>
-
Date Picker: Added
data-typeattribute to weekend table header and cell
Fixed
- Combobox: Fixed
onValueChangereturning emptyitemsarray when using controlled value - Popover: Fixed nested popover z-index layering
- Toast: Fixed types to ensure
parent/indexare exposed as props andexpand/collapseare exposed on the
store - Radio Group, Listbox, Progress, Segment Group: Fixed group labels rendering orphan label elements; now render as
spanper W3C ARIA pattern
[5.32.0] - 2026-02-21
Added
- Locale: Added
useDateFormatterhook for localized date formatting using@internationalized/date - Swap: Added new
Swapcomponent for toggling between two visual states with CSS animations using dual presence
instances - Checkbox: Added
maxSelectedValuesprop toCheckboxGroupto limit the number of selected values - Drawer: Replaced
BottomSheetwith newDrawercomponent supporting multi-directional swipe viaswipeDirection
prop (up,down,left,right), a newPositionerpart, andsnapToSequentialPointsoption - Date Picker:
- Added
focusoption toapi.clearValue({ focus?: boolean }) - Added
api.setTime(time, index?)for date-time picker support - Added
maxSelectedDatesprop to limit selected dates inmultipleselection mode - Added
api.isMaxSelectedto check if maximum number of dates has been selected - Added
openOnClickprop to open the calendar when clicking the input field - Added
showWeekNumberssupport to display ISO 8601 week number column in the day view
- Added
- Popover: Added
sizeMiddlewarepositioning option to optionally disable the size middleware - Select: Added
autoCompleteprop for browser autofill hints
Fixed
- Combobox:
- Fixed
aria-selectedbeing set on highlighted items instead of selected items - Fixed
selectedItemsgetting out of sync withvaluein controlled mode - Fixed item disabled state not accounting for root-level
disabledprop
- Fixed
- Date Picker:
- Fixed
api.selectToday()sending incorrect value format - Preserve time/timezone when selecting new dates (
CalendarDateTimeandZonedDateTime) - Improved focus management in trigger-only mode
- Fixed
- Dialog: Fixed non-modal dialog closing on outside click when
modalisfalse - Listbox: Fixed DOM IDs
- Number Input: Fixed
invalidprop being ignored when value is out of range - Popover: Improved performance by reducing style recalculations when scrolling
- Select: Fixed autofill not updating value when hidden ...
@ark-ui/mcp@1.2.1
@ark-ui/mcp
[1.2.1] - 2026-03-26
Fixed
- Fixed MCP server startup error in Google Antigravity and other MCP clients by using
console.errorinstead of
console.infofor startup messages, preventing stdout pollution of the MCP protocol.
[1.2.0] - 2025-09-04
Added
- Added
get_component_propstool to retrieve component props/properties for specific Ark UI components
[1.1.2] - 2025-09-03
Fixed
Add missing node shebang to the stdio script.
[1.1.1] - 2025-09-01
Fixed
Don't ship the src directory to the package.
[1.1.0] - 2025-09-01
Added
- Initial release of the official MCP server for Ark UI
@ark-ui/vue@5.34.1
Fixed
- Carousel:
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
at mount time - Keep page and indicators in sync after drag release and scroll settling
- Handle rapid mixed interactions (drag, wheel, buttons, indicators) more consistently
- Keep page state valid when
slidesPerPage,slidesPerMove, direction, or orientation change - Make
slidesPerMoveprogression more predictable
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
- Combobox, Listbox, Select: Improved controlled-mode synchronization and callback/item resolution behavior across
filtered collections
Changed
- Format:
Format.Timenow acceptsamLabelandpmLabelas separate props instead of the previousamPmLabels
object
@ark-ui/svelte@5.19.1
Fixed
- Carousel:
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
at mount time - Keep page and indicators in sync after drag release and scroll settling
- Handle rapid mixed interactions (drag, wheel, buttons, indicators) more consistently
- Keep page state valid when
slidesPerPage,slidesPerMove, direction, or orientation change - Make
slidesPerMoveprogression more predictable
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
- Combobox, Listbox, Select: Improved controlled-mode synchronization and callback/item resolution behavior across
filtered collections
Changed
- Format:
Format.Timenow acceptsamLabelandpmLabelas separate props instead of the previousamPmLabels
object
@ark-ui/solid@5.34.1
Fixed
- Carousel:
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
at mount time - Keep page and indicators in sync after drag release and scroll settling
- Handle rapid mixed interactions (drag, wheel, buttons, indicators) more consistently
- Keep page state valid when
slidesPerPage,slidesPerMove, direction, or orientation change - Make
slidesPerMoveprogression more predictable
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
- Combobox, Listbox, Select: Improved controlled-mode synchronization and callback/item resolution behavior across
collections - Menu: Fixed
MenuCheckboxItemto usegetOptionItemStateforoptionItemStatecontext lookup
Changed
- Format:
Format.Timenow acceptsamLabelandpmLabelas separate props instead of the previousamPmLabels
object
@ark-ui/react@5.34.1
Fixed
- Carousel:
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
at mount time - Keep page and indicators in sync after drag release and scroll settling
- Handle rapid mixed interactions (drag, wheel, buttons, indicators) more consistently
- Keep page state valid when
slidesPerPage,slidesPerMove, direction, or orientation change - Make
slidesPerMoveprogression more predictable
- Fixed issue where carousel inside a Portal (e.g., Dialog) computes incorrect page count due to incomplete DOM layout
- Combobox, Listbox, Select: Improved controlled-mode synchronization and callback/item resolution behavior across
filtered collections
Changed
- Format:
Format.Timenow acceptsamLabelandpmLabelas separate props instead of the previousamPmLabels
object