# CHANGELOG All notable changes to this project will be documented in this file. > For v0.x changelog, see the [v0 branch](https://github.com/chakra-ui/zag/blob/v0/CHANGELOG.md) ## [1.42.0](./#1.42.0) - 2026-06-29 ### Added - **Number Input**: Add `largeStep` (defaults to `10 * step`, applied on `Shift`) and `smallStep` (defaults to `step / 10`, applied on `Alt`) props for configurable keyboard stepping. The defaults preserve the previous stepping magnitudes. - **Slider**: Add `largeStep` prop (defaults to `10 * step`), applied on `Shift` or `PageUp`/`PageDown`. The default preserves the previous stepping magnitude. ### Fixed - **Cascade Select**: Fix issue where pressing `Enter` on a highlighted leaf node did not select it in non-React frameworks. - **Date Input** - Allow typing dates using the locale's native numerals (e.g. Arabic-Indic `٠-٩`, Devanagari `०-९`) in addition to ASCII digits. Latin-locale behavior is unchanged. - Fix timezone-naive values (`CalendarDate`/`CalendarDateTime`) being shifted by the viewer's local UTC offset when a custom `formatter` without an explicit `timeZone` is provided. The instant fed to the formatter is now built using the formatter's own resolved time zone, so a wall-clock value round-trips unshifted. - **Date Picker** - Allow typing dates using the locale's native numerals (e.g. Arabic-Indic `٠-٩`, Devanagari `०-९`) in addition to ASCII digits. - Add date reordering on blur for range selection to match other selection paths. - Fix day view briefly flashing when closing the date picker from the month or year view. - Fix `visibleRangeText` returning a stale value when multiple date pickers with different `selectionMode` (or `timeZone`) share the same visible range. This previously surfaced as SSR hydration mismatches. - **Menu**: Fix issue where the context menu briefly flashes at the top-left corner before positioning, and where a long-press (touch) context menu opens stuck at `(0,0)` without ever repositioning to the touch point. - **Number Input** - Fix issue where calling `api.setValue` with a number throws when `formatOptions` is defined. - Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid (e.g. non-integer values when `step: 1`). - **Slider**: Fix `Cmd`/`Ctrl` + arrow keys producing values off the `step` grid (e.g. non-integer values when `step: 1`). - **Tags Input**: Fix native form submit so `FormData` reflects the current tags. The hidden input previously kept its initial value after tags were added, removed, or cleared. - **Toast**: Fix toast height measurement including the `scale` transform in overlap mode, causing a height flicker when expanding the stack. Height is now measured from the untransformed element. ## [1.41.2](./#1.41.2) - 2026-06-05 ### Fixed - **Date Input**: Fix date segment placeholders for locales with explicit script subtags. - **Drawer** - Fix controlled drawer flickering when swiped or backdrop-closed while the `open` setter is asynchronous (e.g. history API or a delayed state update). - Keep nested-drawer layout metrics in machine state so swipe and backdrop-close transitions stay visually stable. - **Image Cropper**: Fix `getCroppedImage` and `getCropData` returning the wrong region when the image is displayed at a size different from its natural resolution (e.g. `width/height: 100%`). - **Pin Input**: Fix issue where `data-filled` was incorrectly set on every input on first render. - **Signature Pad**: Fix issue where the `dir` prop was accepted but never forwarded to the DOM. ## [1.41.1](./#1.41.1) - 2026-05-26 ### Fixed - **Dismissable**: Fix layer `pointer-events` being wiped by frameworks (Svelte, Vue) whose spread updates rewrite the entire `style` attribute. - **Drawer** - Fix controlled drawers snapping back to open before the close animation when dismissed via swipe. - Fix indent and indent-background snapping back into place after the close animation instead of transitioning in sync. - Fix `--drawer-swipe-progress` jumping to `1` at the start of a dismiss swipe; it now goes smoothly from `0` (at rest) to `1` (fully dismissed). - Fix drawer freezing mid-drag on release when its content mounts lazily which left snap points unmeasured. ## [1.41.0](./#1.41.0) - 2026-05-22 ### Added - **Floating Components**: Add `data-side` to placement-aware parts based on the current placement. > Affected Components: Cascade Select, Color Picker, Combobox, Date Picker, Hover Card, Menu, Popover, Select, > Tooltip, Tour. - **Date Input** - Add `hideTimeZone` prop. The `timeZoneName` segment now renders automatically when the value is a `ZonedDateTime`, and can be hidden via `hideTimeZone: true`. - Arrow navigation and auto-advance after typing now reach read-only focusable segments (e.g. `timeZoneName`). Typing the final editable segment (e.g. "P" on `dayPeriod`) advances focus to the trailing read-only segment instead of staying put. - **Splitter** - Add CSS unit support for `defaultSize`, `minSize`, and `maxSize`. The splitter now accepts `px`, `em`, `rem`, `vh`, and `vw` in addition to percentages, and resolves them to percentages after hydration. ```tsx const service = useMachine(splitter.machine, { panels: [ { id: "nav", minSize: "240px", maxSize: "480px" }, { id: "main", minSize: 30 }, ], defaultSize: ["240px", "60vw"], }) ``` - Add `resizeBehavior` per panel. Set to `"preserve-pixel-size"` to keep a panel's pixel size constant when the parent splitter group resizes. Leave at least one panel as `"preserve-relative-size"` (the default) so the layout can absorb the change. ```tsx panels: [ { id: "nav", minSize: 20 }, { id: "main", minSize: "240px", maxSize: "480px", resizeBehavior: "preserve-pixel-size", }, { id: "aside", minSize: 20 }, ] ``` - Allow non-panel children inside the splitter root for fixed toolbars, rails, or status areas that should not be managed as panels. Use partial trigger ids (`"left:"`, `":right"`) to bind handles around the fixed element. ```tsx
Left
Fixed sized element
Right
``` - **TOC**: Add `api.scrollTo(value, details?)` for programmatically scrolling to a heading. The optional `details.behavior` controls the scroll behavior; when omitted, the platform default applies. ```tsx api.scrollTo("installation", { behavior: "smooth" }) ``` ### Fixed - **Accordion**: Remove redundant `aria-disabled` from accordion item triggers. - **Color Picker**: Invoke `onValueChangeEnd` when the user picks a color with the EyeDropper API, consistent with ending a drag on the area or channel sliders. - **Combobox**: Fix `Enter` no longer submits the form when an item is highlighted (regardless of `allowCustomValue`), or when the typed value will be rejected by `allowCustomValue: false`. - **Date Input** - Fix min/max handling to preserve entered segments while editing. Values are now clamped segment-by-segment on blur, so `06/15/1999` with min `2000-01-01` becomes `06/15/2000` instead of snapping to `01/01/2000`. - Fix range mode keyboard navigation so `ArrowRight` moves from the last segment of the start date to the first segment of the end date. - Fix time-only formatters (no `year` segment) never firing `onValueChange` — `era` is now only required when `year` is present. - Fix `setSegmentValue` reading stale `displayValues`. `updateSegmentValue` returns the new `IncompleteDate` directly so the commit check uses the fresh value. - Fix `dayPeriod` (AM/PM) arrow up/down not updating the visible segment when `hourCycle` changes at runtime — `displayValues` now re-sync to the new hour cycle while preserving in-progress edits. - Fix typing "A" / "P" on the `dayPeriod` segment not updating the visible AM/PM. The typing path was writing `12` for PM while every other code path uses `1`, so the display silently stayed on AM. - **Date Picker** - Fix `VALUE.CLEAR` not resetting `activeIndex` and `hoveredValue` in range mode when `getInputProps` inputs are not rendered. - Fix issue where the date input was not writable in locales whose date format separator contains more than one character (e.g. `cs-CZ`, `sk-SK`, `hu-HU`, `ko-KR` which use `". "`). - Fix issue in Firefox where native month/year `