Releases: chakra-ui/ark
Releases · chakra-ui/ark
@ark-ui/solid@5.2.0
Added
- [NEW] DownloadTrigger: Added Component for downloading a blob or file, whether retrieved synchronously or
asynchronously.
import { DownloadTrigger } from '@ark-ui/solid/download-trigger'
export const DownloadImage = () => {
async function fetchImage() {
const response = await fetch('https://picsum.photos/200/300')
return response.blob()
}
return (
<DownloadTrigger data={fetchImage} fileName="avatar.jpeg" mimeType="image/jpeg">
Download Image
</DownloadTrigger>
)
}
Changed
- NumberInput: Set the default step to
0.01
whenformatOptions.style
was set topercent
. - [Breaking] Splitter: Redesigned splitter machine to support more use cases and improve DX. Check out the
Splitter documentation for more details.
Fixed
- Presence: Fixed issue where
onExitComplete
was not being called. - Select: Fixed issue where select
valueAsString
lost reactivity. - Toast:
- Fixed issue where setting
offsets
toundefined
caused the machine to throw. - Fixed issue where
onExitComplete
was not being called.
- Fixed issue where setting
@ark-ui/react@5.2.0
Added
- [NEW] DownloadTrigger: Added Component for downloading a blob or file, whether retrieved synchronously or
asynchronously.
import { DownloadTrigger } from '@ark-ui/react/download-trigger'
export const DownloadImage = () => {
async function fetchImage() {
const response = await fetch('https://picsum.photos/200/300')
return response.blob()
}
return (
<DownloadTrigger data={fetchImage} fileName="avatar.jpeg" mimeType="image/jpeg">
Download Image
</DownloadTrigger>
)
}
Changed
- NumberInput: Set the default step to
0.01
whenformatOptions.style
was set topercent
. - [Breaking] Splitter: Redesigned splitter machine to support more use cases and improve DX. Check out the
Splitter documentation for more details.
Fixed
- Toast: Fixed issue where setting
offsets
toundefined
caused the machine to throw. - Select: Fixed issue where select
valueAsString
lost reactivity.
@ark-ui/vue@5.1.1
Fixed
- Field: Exported the missing
useField
hook. - NumberInput:
onValueChange
correctly receivedvalueAsNumber
. - Slider: Thumbs initialized correctly when
min
was set to a non-zero value.
@ark-ui/solid@5.1.1
Fixed
- Field: Exported the missing
useField
hook. - NumberInput:
onValueChange
correctly receivedvalueAsNumber
. - Slider: Thumbs initialized correctly when
min
was set to a non-zero value.
@ark-ui/react@5.1.0
Added
- Added support for a cleanup function in
ref
.
Fixed
- Field: Exported the missing
useField
hook. - NumberInput:
onValueChange
correctly receivedvalueAsNumber
. - Slider: Thumbs initialized correctly when
min
was set to a non-zero value.
@ark-ui/vue@5.1.0
Added
- Implemented support for reactive props in
use-*.ts
functions.
const value = ref(['React'])
const accordionProps = computed<UseAccordionProps>(() => ({
multiple: true,
value: value.value,
onValueChange: (e) => (value.value = e.value),
}))
const accordion = useAccordion(accordionProps)
Fixed
- Checkbox:
data-invalid
is no longer set wheninvalid
isfalse
. - 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
interval
from250
to1000
.
@ark-ui/solid@5.1.0
Added
-
Implemented support for reactive props in
use-*.ts
functions.const accordionProps = createMemo<UseAccordionProps>(() => ({ multiple: true, value: value(), onValueChange: (e) => setValue(e.value), })) const accordion = useAccordion(accordionProps)
Fixed
- Checkbox:
data-invalid
is no longer set wheninvalid
isfalse
. - 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
interval
from250
to1000
.
@ark-ui/react@5.0.1
Fixed
- General: Effects now flush synchronously instead of using a microtask.
- Checkbox:
data-invalid
is no longer set wheninvalid
isfalse
. - 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
interval
from250
to1000
.
@ark-ui/vue@5.0.2
Fixed
- Steps: Fixed issue where
Steps.X
namespace was not exported.
@ark-ui/vue@5.0.1
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 Vue'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, {
props: {
defaultOpen: true,
},
})
expect(screen.getByRole('dialog')).toBeInTheDocument()
})
// After
it('should open by default', async () => {
render(ComponentUnderTest, {
props: {
defaultOpen: true,
},
})
expect(await screen.findByRole('dialog')).toBeInTheDocument()
})
Added
- Carousel:
⚠️ Breaking change: Added required propslideCount
toCarousel.Root
component. - Clipboard: Added
onValueChange
anddefaultValue
props. - ColorPicker: Added
defaultFormat
prop. - Combobox: Added
defaultHighlightedValue
anddefaultInputValue
props. - DatePicker: Added
defaultFocusedValue
prop,getViewProps
, andvisibleRangeText
. - HoverCard: Expanded interaction handlers.
- Menu: Added
defaultHighlightedValue
prop. - Pagination: Added
defaultPageSize
prop. - PinInput: Added
count
prop for better SSR aria-label. - Progress: Added
locale
andformatOptions
props. - QrCode: Added
pixelSize
prop. - Select: Added
defaultHighlightedValue
prop. - TagsInput: Added
defaultInputValue
prop. - Toggle: Reintroduced toggle machine.
Fixed
- Accordion: Fixed issue in Safari where clicking triggers didn't show content.
- Avatar: Fixed
api.setSrc
not 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
value
prop 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: true
didn't work. - Steps: Ensured ARIA attributes use valid values and wrapped
<li>
elements correctly within<ul>
or<ol>
. - Textarea: Fixed
ResizeObserver
warning. - Timer: Fixed stopping issue when switching tabs; resolved issue where
action
prop was passed toActionTrigger
. - Toast: Fixed keyboard navigation skipping close button.
- Toggle Group: Fixed
data-focus
not being removed on blur.