Changelog
All notable changes will be documented in this file.
[Unreleased]
Added
- [NEW] DownloadTrigger: Component for downloading any a blob or file.
[5.1.0] - 2025-03-17
Added
- Added support for a cleanup function in
ref.
Fixed
- Field: Exported the missing
useFieldhook. - NumberInput:
onValueChangecorrectly receivedvalueAsNumber. - Slider: Thumbs initialized correctly when
minwas set to a non-zero value.
[5.0.1] - 2025-03-11
Fixed
- Effects now flush synchronously instead of using a microtask.
- Checkbox:
data-invalidis no longer set wheninvalidisfalse. - Combobox: Fixed unexpected cursor movement when editing input.
- PinInput: OTP SMS autofill now works as expected.
- RatingGroup: Fixed incorrect focus placement on the label.
- TagsInput: Improved caret detection to prevent unintended tag removal.
- Timer
- Fixed slowdown when switching tabs/windows.
- Changed default
intervalfrom250to1000.
[5.0.0] - 2025-03-06
Ark UI just got a major performance boost! 🚀
What’s new in v5?
- Blazing-fast performance – Every component runs smoother and renders faster.
- Smaller bundle size – Leaner components and adapters for a more efficient build.
We made this happen by using React’s native reactive primitives instead of external stores.
In our stress tests with 10,000 components, Ark v5 delivered 1.5x–4x better performance across the board.
A quick note on tests
Most component updates are non-breaking, but due to this change, some tests may need adjustments. For example:
// Before
it('should open by default', () => {
render(<ComponentUnderTest defaultOpen />)
expect(screen.getByRole('dialog')).toBeInTheDocument()
})
// After
it('should open by default', async () => {
render(<ComponentUnderTest defaultOpen />)
expect(await screen.findByRole('dialog')).toBeInTheDocument()
})
Added
- Carousel: ⚠️ Breaking change: Added required prop
slideCounttoCarousel.Rootcomponent. - Clipboard: Added
onValueChangeanddefaultValueprops. - ColorPicker: Added
defaultFormatprop. - Combobox: Added
defaultHighlightedValueanddefaultInputValueprops. - DatePicker: Added
defaultFocusedValueprop,getViewProps, andvisibleRangeText. - HoverCard: Expanded interaction handlers.
- Menu: Added
defaultHighlightedValueprop. - Pagination: Added
defaultPageSizeprop. - PinInput: Added
countprop for better SSR aria-label. - Progress: Added
localeandformatOptionsprops. - QrCode: Added
pixelSizeprop. - Select: Added
defaultHighlightedValueprop. - TagsInput: Added
defaultInputValueprop. - Toggle: Reintroduced toggle machine.
Fixed
- Accordion: Fixed issue in Safari where clicking triggers didn't show content.
- Avatar: Fixed
api.setSrcnot working. - Carousel: Fixed pagination sync and initial page issues.
- File Upload: Fixed drag-and-drop when
directory: true. - Menu: Fixed context menu positioning not updating on right-click.
- Number Input: Fixed
valueprop not being consumed. - Pin Input: Fixed focus warnings and editing issues.
- Progress: Allowed more precise (decimal) values.
- Radio Group, Switch: Improved focus behavior in Safari.
- Select: Fixed regression where
multiple: truedidn't work. - Steps: Ensured ARIA attributes use valid values and wrapped
<li>elements correctly within<ul>or<ol>. - Textarea: Fixed
ResizeObserverwarning. - Timer: Fixed stopping issue when switching tabs; resolved issue where
actionprop was passed toActionTrigger. - Toast: Fixed keyboard navigation skipping close button.
- Toggle Group: Fixed
data-focusnot being removed on blur.