v3.2.4
Patch release that stops the Autocomplete popover from clipping its last options, restores backdrop dismissal for modals with outside scrolling, clamps Tabs.ListContainer chevron scrolling to the scrollable range, upgrades tailwind-variants to 3.3.1 to fix variant classes falling back after a re-render, upgrades React Aria to 1.20.0, and adds a behavioral test suite to @heroui/react.
Patch release: the Autocomplete popover no longer clips its last options, backdrop clicks dismiss a Modal with scroll="outside" again, Tabs chevron scrolling lands flush on the edges, tailwind-variants is upgraded to 3.3.1 to fix variant modifiers falling back to the wrong class after a re-render, React Aria is upgraded to 1.20.0 (react-aria@3.51.0), and @heroui/react gains a behavioral test suite.
Installation
Update to the latest version:
npm i @heroui/styles@latest @heroui/react@latestpnpm add @heroui/styles@latest @heroui/react@latestyarn add @heroui/styles@latest @heroui/react@latestbun add @heroui/styles@latest @heroui/react@latestUsing AI assistants? Simply prompt "Hey Cursor, update HeroUI to the latest version" and your AI assistant will automatically compare versions and apply the necessary changes. Learn more about the HeroUI MCP Server.
Bug Fixes
- Variants: Fix variant modifiers falling back to the wrong class after a re-render — a controlled
Checkboxno longer switches fromcheckbox--primarytocheckbox--secondarywhen it is deselected, and secondaryTabsno longer revert to the primary variant (#6760). - Autocomplete: Lay the popover out as a flex column and let the list shrink below its
320pxcap so the last options stay reachable when the popover is shorter than its content — most often when the trigger sits mid-viewport inside aModal(#6766). - Modal: Move outside scrolling onto the backdrop so a
scroll="outside"modal stays dismissible — the full-height container no longer absorbs backdrop clicks and classifies them as inside the dialog (#6770). - Tooltip: Keep the enter and exit animations when moving from one tooltip to an adjacent one. React Aria's warmup timer suppresses
data-entering/data-exitingon the tooltip being replaced, unmounting it before HeroUI's CSS keyframes can run — pass the newshouldSkipAnimationprop to opt back into React Aria's instant swap (#6772). - Tabs: Clamp
Tabs.ListContainerchevron scrolling to the scrollable range so a press near an edge lands flush on it instead of overshooting, and a press while already at an edge is now a no-op (#6749). - Badge: Clip the background to the padding box so it no longer bleeds past the
1pxborder, which surfaced as a thin colored fringe on the rounded corners in Firefox (#6768). - Link: Expose
data-slot="link"on the link root (#6754). - Exports: Order the
./stylesexport conditions withstylebeforedefaultso thestylecondition is reachable (#6754).
Testing
@heroui/react now ships a behavioral test suite built on a shared @heroui/testing harness — Vitest configs, setup, and helpers (render, setupUser, ssrSmoke, timers, scroll-lock). Suites live in packages/react/tests/components/ and split across two Vitest projects: react-jsdom for behavior and client-SSR smoke tests, and react-browser for Playwright checks. A QA CI job runs both, with coverage floors enforced on jsdom only.
- Behavioral tests: Add the testing harness, per-component suites, dual Vitest projects, and the QA job (#6754).
Dependencies
- React Aria: Upgrade to React Aria 1.20.0 —
react-aria-components@1.20.0,react-aria@3.51.0,@react-types/shared@3.36.1, and@internationalized/date@3.12.3(#6752). - tailwind-variants: Upgrade
@heroui/reactand@heroui/stylestotailwind-variants@3.3.1(#6760).
Links
Contributors
Thanks to everyone who contributed to this release!
All Releases
All updates and changes to HeroUI v3, including new features, fixes, and breaking changes.
v3.2.3
Patch release that adds multiple selection to ComboBox, improves RTL support with logical CSS properties, upgrades tailwind-variants to 3.3.0, and fixes ScrollShadow, Spinner, InputOTP, Table, and Button accent styling.