# v3.0.0-beta.2 **Category**: react **URL**: https://www.heroui.com/docs/react/releases/v3-0-0-beta-2 **Source**: https://raw.githubusercontent.com/heroui-inc/heroui/refs/heads/v3/apps/docs/content/docs/react/releases/v3-0-0-beta-2.mdx > Six new components (AlertDialog, ComboBox, Dropdown, InputGroup, Modal, NumberField), Select API improvements, and component refinements. ***
November 20, 2025
This release introduces six essential new components, improves the Select component API, and includes various refinements and bug fixes. ## Installation Update to the latest version: ```bash npm i @heroui/styles@beta @heroui/react@beta ``` ```bash pnpm add @heroui/styles@beta @heroui/react@beta ``` ```bash yarn add @heroui/styles@beta @heroui/react@beta ``` ```bash bun add @heroui/styles@beta @heroui/react@beta ``` **Using 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](/docs/ui-for-agents/mcp-server). ## What's New ### New Components This release introduces **6 new** essential components: - **[AlertDialog](#alert-dialog)**: Modal dialog for important decisions that require user confirmation. ([Documentation](/docs/components/alert-dialog)) - **[ComboBox](#combo-box)**: Combines a text input with a listbox, allowing users to filter a list of options. ([Documentation](/docs/components/combo-box)) - **[Dropdown](#dropdown)**: Displays a list of actions or options that a user can choose. ([Documentation](/docs/components/dropdown)) - **[InputGroup](#inputgroup)**: Group related input controls with prefix and suffix elements for enhanced form fields. ([Documentation](/docs/components/input-group)) - **[Modal](#modal)**: Dialog overlay for focused user interactions and important content. ([Documentation](/docs/components/modal)) - **[NumberField](#numberfield)**: Number input with increment/decrement buttons, validation, and internationalized formatting. ([Documentation](/docs/components/number-field)) ### AlertDialog ```tsx "use client"; import {AlertDialog, Button} from "@heroui/react"; export function Default() { return ( Delete project permanently?

This will permanently delete My Awesome Project and all of its data. This action cannot be undone.

); } ``` ### ComboBox ```tsx "use client"; import {ComboBox, Input, Label, ListBox} from "@heroui/react"; export function Default() { return ( Aardvark Cat Dog Kangaroo Panda Snake ); } ``` ### Dropdown ```tsx "use client"; import {Button, Dropdown, Label} from "@heroui/react"; export function Default() { return ( console.log(`Selected: ${key}`)}> ); } ``` ### Modal ```tsx "use client"; import {Rocket} from "@gravity-ui/icons"; import {Button, Modal} from "@heroui/react"; export function Default() { return ( Welcome to HeroUI

A beautiful, fast, and modern React UI library for building accessible and customizable web applications with ease.

); } ``` ### InputGroup ```tsx "use client"; import {Globe} from "@gravity-ui/icons"; import {InputGroup, Label, TextField} from "@heroui/react"; export function WithIconPrefixAndTextSuffix() { return ( .com ); } ``` ### NumberField ```tsx import {Label, NumberField} from "@heroui/react"; export function Basic() { return ( ); } ``` ### Style Improvements #### Custom Variants and Theme Compatibility Enhanced CSS variants and theme system for better customization: **Motion Preferences**: - New `motion-safe` variant with `data-reduce-motion="true"` attribute matching - Enhanced `motion-reduce` now supports ancestor elements and pseudo-elements **Dark Mode**: - Class and `data-theme="dark"` attribute selectors now take precedence over `prefers-color-scheme` - Full support for pseudo-elements in dark mode **Theme Variables**: - Expanded light theme scope to support nested themes (`:root`, `.light`, `.default`, `[data-theme="light"]`, `[data-theme="default"]`) ### Component Improvements #### Select Component API Update The Select component's API has been improved for better consistency with other components. The `Content` subcomponent has been renamed to `Popover`. **Before:** ```tsx ``` **After:** ```tsx ``` #### Chip Component Refinements Chip component sizes have been updated for better consistency: - **Small (`sm`)**: `px-1 py-0 text-xs` - **Medium (`md`)**: `text-xs` (now explicitly set) - **Large (`lg`)**: `px-3 py-1 text-sm font-medium` #### Separator Component Enhancement The 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:** ```tsx
``` 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: ```tsx
``` #### Animation Improvements - Loading state spinner color updated for better visibility - Select and Slider component styles adjusted for improved animations - Checkbox animation improved (faster transition) - Better support for `prefers-reduced-motion` with pseudo elements ## ⚠️ Breaking Changes ### Select Component The `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`: ```tsx // Before ... // After ... ``` **Type imports:** ```tsx // Before import type { SelectContentProps } from "@heroui/react" // After import type { SelectPopoverProps } from "@heroui/react" ``` **Named exports:** ```tsx // Before import { SelectContent } from "@heroui/react" // After import { SelectPopover } from "@heroui/react" ``` ### CSS Variables and Utilities: Divider → Separator All CSS variables and utility classes related to `divider` have been renamed to `separator` for consistency with the Separator component name. **CSS Variables:** ```css /* Before */ border-bottom: 1px solid var(--divider); /* After */ border-bottom: 1px solid var(--separator); ``` **Tailwind Utility Classes:** ```tsx // Before
// After
``` **Theme Overrides:** If you have custom themes that override the divider variable, update them: ```css /* 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); } ``` ## Bug Fixes - Fixed loading state spinner color for better visibility - Fixed bordered focus styles taking precedence over hover states - Fixed animation stuttering in documentation - Improved modal form styling - Enhanced motion reduce support for pseudo elements - Fixed mobile hover states sticking after touch interactions by wrapping hover styles in `@media (hover: hover)` media queries. Also simplified data attribute selectors by removing unnecessary `="true"` value checks. ## Links - [Component Documentation](/docs/react/components) - [Design System - Figma Kit V3 (updated)](https://www.figma.com/community/file/1546526812159103429/heroui-figma-kit-v3) - [GitHub Repository](https://github.com/heroui-inc/heroui) - [GitHub PR #5885](https://github.com/heroui-inc/heroui/pull/5885) ## Contributors Thanks to everyone who contributed to this release!