v1.5.0

elyxlz/voxtralv1.5.0May 19, 2026by github-actions[bot]

AI Summary

Focuses on performance optimizations and RTL fixes across the UI component library.

Key Highlights

  • Improved mount performance by up to 50%
  • Fixed RTL component behavior
  • Renamed OTPField sanitizeValue to normalizeValue
  • Fixed form validation performance

Breaking Changes

  • Rename sanitizeValue() to normalizeValue() in OTPField

New Features

  • Mount performance improvements
  • RTL fixes
  • Persian digits support
  • Form validation fixes

Full Release Notes

### General changes

- Improve mount performance with interaction splitting, including closed popup mount performance by up to 50% and unmounting performance by up to 85% (#4661) by @atomiks
- Use local document for virtual arrow (#4662) by @lyzno1
- Fix macOS Safari and Firefox minimizing fullscreen when closing popups with <kbd>Esc</kbd> (#4695) by @arturbien
- Drop unnecessary memoization (#4693) by @flaviendelangle
- Do not use `Math.random()` in `useStableCallback()` (#4732) by @michaldudak
- Fix return focus when reference disconnects (#4655) by @atomiks
- Don't steal initial focus if focus already moved inside a popup (#4775) by @stefee

### Alert Dialog

- Fix handle defaults (#4834) by @atomiks

### Autocomplete

- Fix native `FormData` for popup inputs (#4725) by @lunaxislu

### Checkbox

- Submit the associated form when pressing <kbd>Enter</kbd> (#4713) by @michaldudak

### Combobox

- Expose clear visibility state (#4664) by @atomiks
- Fix popup input form submit (#4687) by @atomiks
- Preserve `closeQuery` when closing multiple input-inside-popup combobox (#4715) by @mj12albert
- Fix RTL component behavior (#4840) by @atomiks
- Ignore hidden-input changes while readonly or disabled (#4810) by @lunaxislu

### Dialog

- Consider the controlled `open` prop for open state detection (#4712) by @michaldudak

### Drawer

- Forward `style` prop in `<Drawer.Viewport>` (#4841) by @atomiks

### Field

- Avoid `flushSync` during validation (#4685) by @atomiks

### Form

- Avoid `flushSync` during validation (#4685) by @atomiks

### Menu

- Fix submenu pointer-events scope for `keepMounted` portals (#4723) by @twillhorn
- Support `<Menu.GroupLabel>` in `<Menu.RadioGroup>` (#4826) by @nami8824
- Consider the controlled `open` prop for open state detection (#4712) by @michaldudak

### Navigation Menu

- Fix RTL component behavior (#4840) by @atomiks
- Fix `keepMounted` content sizing (#4817) by @atomiks

### Number Field

- Allow Persian digits in keyboard input (#4719) by @lunaxislu
- Sync pasted input during step interactions (#4824) by @lunaxislu

### OTP Field

- **Breaking change:** Rename `sanitizeValue()` to `normalizeValue()` and allow composing with validation (#4717) by @atomiks
- Avoid `flushSync` during validation (#4685) by @atomiks
- Support <kbd>Ctrl</kbd> and <kbd>Cmd</kbd> shortcuts (#4606) by @atomiks
- Fire `onValueComplete()` for full paste (#4690) by @atomiks
- Fix vertical arrow slot navigation (#4844) by @atomiks
- Ignore hidden input changes while readonly or disabled (#4806) by @lunaxislu
- Prevent locked hidden autofill validation (#4827) by @lunaxislu
- Fix RTL arrow navigation (#4847) by @atomiks

### Popover

- Fix RTL component behavior (#4840) by @atomiks
- Preserve active trigger on close press (#4741) by @mj12albert
- Consider the controlled `open` prop for open state detection (#4712) by @michaldudak

### Preview Card

- Consider the controlled `open` prop for open state detection (#4712) by @michaldudak
- Integrate inline positioning (#2074) by @atomiks

### Scroll Area

- Fix RTL component behavior (#4840) by @atomiks

### Select

- Clear stale item text ref (#4683) by @atomiks
- Add `data-popup-side` to trigger (#4671) by @mj12albert
- Allow mouse selection without highlight (#4699) by @atomiks
- Ignore hidden-input changes while readonly or disabled (#4810) by @lunaxislu
- Fix nested Select requiring extra outside clicks to dismiss parent (#4820) by @mattrothenberg

### Tabs

- Fire `onValueChange()` for automatic tab selection (#4704) by @michaldudak

### Toast

- Re-use `getElementTransform()` and remove local implementation (#4749) by @sai6855
- Fix stuck drag state on release (#4742) by @aeterno-caspian
- Remove memoized selector (#4751) by @atomiks

### Tooltip

- Consider the controlled `open` prop for open state detection (#4712) by @michaldudak
- Fix flickering when nesting tooltip inside another tooltip's trigger (#4501) by @michaldudak

All contributors of this release in alphabetical order: @aeterno-caspian, @arturbien, @atomiks, @flaviendelangle, @Janpot, @lunaxislu, @lyzno1, @mattrothenberg, @michaldudak, @mj12albert, @nami8824, @sai6855, @stefee, @twillhorn