apps/docs/content/docs/en/react/releases/v3-0-0-beta-2.mdx
This release introduces six essential new components, improves the Select component API, and includes various refinements and bug fixes.
<DocsImage src="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/docs/versions/[email protected]" darkSrc="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/docs/versions/[email protected]" alt="HeroUI v3 Beta 2" />
Update to the latest version:
<Tabs items={["npm", "pnpm", "yarn", "bun"]}>
<Tab value="npm">
bash npm i @heroui/styles@beta @heroui/react@beta
</Tab>
<Tab value="pnpm">
bash pnpm add @heroui/styles@beta @heroui/react@beta
</Tab>
<Tab value="yarn">
bash yarn add @heroui/styles@beta @heroui/react@beta
</Tab>
<Tab value="bun">
bash bun add @heroui/styles@beta @heroui/react@beta
</Tab>
</Tabs>
This release introduces 6 new essential components:
<ComponentPreview name="alert-dialog-default" />
<ComponentPreview name="combo-box-default" />
<ComponentPreview name="dropdown-default" />
<ComponentPreview name="modal-default" />
<ComponentPreview name="input-group-with-icon-prefix-and-text-suffix" />
<ComponentPreview name="number-field-basic" />
Enhanced CSS variants and theme system for better customization:
Motion Preferences:
motion-safe variant with data-reduce-motion="true" attribute matchingmotion-reduce now supports ancestor elements and pseudo-elementsDark Mode:
data-theme="dark" attribute selectors now take precedence over prefers-color-schemeTheme Variables:
:root, .light, .default, [data-theme="light"], [data-theme="default"])The Select component's API has been improved for better consistency with other components. The Content subcomponent has been renamed to Popover.
Before:
<Select>
<Select.Trigger>
<Select.Value />
<Select.Indicator />
</Select.Trigger>
<Select.Content>
<ListBox>
</ListBox>
</Select.Content>
</Select>
After:
<Select>
<Select.Trigger>
<Select.Value />
<Select.Indicator />
</Select.Trigger>
<Select.Popover>
<ListBox>
</ListBox>
</Select.Popover>
</Select>
Chip component sizes have been updated for better consistency:
sm): px-1 py-0 text-xsmd): text-xs (now explicitly set)lg): px-3 py-1 text-sm font-mediumThe Separator component now automatically detects when it's placed inside a surface component (one that uses bg-surface) and applies the appropriate divider color for better visibility. A new isOnSurface prop is also available for manual control.
New Calculated Variable:
--color-separator-on-surface: A calculated variable (automatically generated using color-mix) that ensures the separator is visible when placed on a surface background. Like other calculated variables, it can be overridden in your theme.Usage:
<div className="bg-surface">
<Separator isOnSurface />
</div>
The isOnSurface prop is automatically applied when the Separator detects a SurfaceContext provider (used by components like Card, Alert, Popover, Modal, etc.).
You can also use the calculated variable directly with Tailwind classes:
<div className="bg-surface">
<div className="h-px w-full bg-separator-on-surface" />
</div>
prefers-reduced-motion with pseudo elementsThe Select.Content subcomponent has been renamed to Select.Popover for consistency with other components like ComboBox and Dropdown.
Migration:
Replace all instances of Select.Content with Select.Popover:
// Before
<Select.Content>
<ListBox>...</ListBox>
</Select.Content>
// After
<Select.Popover>
<ListBox>...</ListBox>
</Select.Popover>
Type imports:
// Before
import type { SelectContentProps } from "@heroui/react"
// After
import type { SelectPopoverProps } from "@heroui/react"
Named exports:
// Before
import { SelectContent } from "@heroui/react"
// After
import { SelectPopover } from "@heroui/react"
All CSS variables and utility classes related to divider have been renamed to separator for consistency with the Separator component name.
CSS Variables:
/* Before */
border-bottom: 1px solid var(--divider);
/* After */
border-bottom: 1px solid var(--separator);
Tailwind Utility Classes:
// Before
<div className="bg-divider" />
<div className="border-divider" />
// After
<div className="bg-separator" />
<div className="border-separator" />
Theme Overrides:
If you have custom themes that override the divider variable, update them:
/* Before */
:root {
--divider: oklch(92% 0.004 286.32);
}
.dark {
--divider: oklch(22% 0.006 286.033);
}
/* After */
:root {
--separator: oklch(92% 0.004 286.32);
}
.dark {
--separator: oklch(22% 0.006 286.033);
}
@media (hover: hover) media queries. Also simplified data attribute selectors by removing unnecessary ="true" value checks.Thanks to everyone who contributed to this release!
<PRContributors />