Dialog,AlertDialog,Popover,Tooltip,Select:Popupportal API (#77452). AddPortalsubcomponents and an optionalportalprop onPopup(when omitted, the defaultPortalis used). Removecontainerfrom everyPopupandportalClassNamefromDialog.Popup/AlertDialog.Popup; passportal={ <Matching.Portal … /> }forcontainer,className,style, and other portal options.Popover,Tooltip,Select:styleandclassNameonPopupare now forwarded to the inner Base UIPopupelement instead of the outerPositioner. To override the per-instance z-index, passportal={ <Overlay.Portal style={ { '--wp-ui-<overlay>-z-index': '9999' } } /> }(or set the variable globally on a wrapping element); inlinestyle={ { zIndex: … } }onPopupno longer reaches the positioned element.Dialog,Drawer: Scrolling now requires the newDialog.Content/Drawer.Contentsubcomponent; the popup itself no longer scrolls. RenderingHeader/Footeras siblings ofContentpins them to the popup edges; nesting them insideContentopts out of pinning.AlertDialog.PopupaddsstickyHeader/stickyFooterprops (defaulttrue) for the same choice on its internal chrome (#77559).
- Add
Drawerprimitive (#76690). - Add
Autocompleteprimitive (#77642). - Add
SelectControlcomponent (#77809).
- Restructure setup docs into "Within standard WordPress editor screens" and "Elsewhere" for clarity (#77338).
Link: Fix text decoration on theunstyledvariant whenopenInNewTabis enabled, and simplify new-tab icon markup (#77420).Dialog,AlertDialog,Popover,Tooltip,Select: Restore focus-trap tabbability throughThemeProvider'sdisplay: contentswrapper (#77381, #77520).- Remove the transitive peer dependency on
date-fns/@date-fns/tz(#77520), resolving #77395. Text: Apply both heading and paragraph CSS defenses regardless of variant, so the correct defense kicks in based on the rendered element rather than the typographic variant (#77461).CollapsibleCard: Fix missing keyboard focus ring on the header chevron icon when rendered inside wp-admin (#77468).CollapsibleCard: Prevent the focus ring of focusable descendants from being clipped by the panel's overflow once the panel is fully expanded (#77667).Tabs: Fix missing keyboard focus ring on the panel in Windows High Contrast mode when rendered inside wp-admin (#77469).
Dialog/AlertDialog/Drawer: Pin header / footer chrome to the popup edges when the body overflows, and show separator borders only while there is off-screen content in that direction (#77559).Dialog: AddDialog.Descriptionsub-component, exposeonOpenChangeComplete, skip the backdrop whenmodalis nottrue, use100dvhfor viewport-based heights so the popup fits the dynamic viewport on mobile, and forwardclassNameonDialog.Title(#77194).Dialog:Dialog.HeaderandDialog.Footernow default to<header>and<footer>elements for richer landmark semantics. Theirreftype widens fromHTMLDivElementtoHTMLElement; passrenderto opt out of the default tag (#76690).Dialog,Popover: Upgrade dev-only title validation from mount-only to cleanup-based re-validation, catching conditionally rendered titles (#77165).Link: HonoropenInNewTabconsistently instead of treating hash links as a special case (#77422).Select: Tighten spacing after checkmark whenSelect.Itemissize="small"(#77642).Dialog,Drawer,Popover: Align title and description colors across all three overlay primitives. Title color is now authored explicitly (resilient to global CSS defenses), and description color now inherits from the popup foreground token instead of overriding to the weak variant (#77692).Dialog,AlertDialog,Drawer,Popover,Select,Tooltip: Unify the hairline border across overlay popups. Popups without a backdrop show a token-colored border in regular mode; popups with a backdrop hide the border (which would be redundant with the backdrop's containment); all popups show aCanvasTextborder in forced-colors mode (#77691).Link: Usetext-decoration-thickness: from-fontso the underline honors the font's metrics, instead of a fixed sub-pixel value that renders inconsistently across device pixel ratios (#77790).
- Update
@base-ui/reactfrom1.4.0to1.4.1(#77520). - Extract shared
useScheduleValidationhook; refactorDialog,Popover, andTabsvalidation contexts to use it (#77165). Tabs: Wrap two validation timeout waits inact(...)to avoid intermittent test warnings (#77319).
Text: Applymargin: 0, removing user-agent margins when the component renders as block-level elements (for exampleporh1–h6viarenderprop) (#76970).AlertDialog: Revise component API (#76937):AlertDialog.Root: movedintentprop toAlertDialog.Popup;AlertDialog.Popup: movedonConfirmprop toAlertDialog.Root(now optional; supports async handlers,{ close: false }to keep the dialog open, and{ error: '...' }to display a built-in error message);AlertDialog.Popup: removedloadingprop (async flows are now handled internally viaPromise-returningonConfirm);AlertDialog.Popup: madechildrenoptional in favor of a newdescriptionprop, which describes the alert dialog semantically.
- Add
Popoverprimitive (#76438).
Card.Title,EmptyState.Title,EmptyState.Description: Fix ref and props being lost when a customrenderelement is provided (#77160).Tabs.List: Fixrenderprop being silently discarded (#77160).Card: Set default foreground color onCard.Rootso content andcurrentColoricons (for example theCollapsibleCardchevron) are themeable by default (#77013).
Dialog: UpdateHeaderlayout to support multiple trailing elements alongside the title (#77161, #77334).Dialog: UseTextinternally forDialog.Title, adopting theheading-xlvariant for consistent typography (#77161).Dialog,AlertDialog,Tooltip,Select: Addcontainerprop toPopupfor custom portal targets (#77163).- Add defensive styles against global WordPress stylesheets like common.css and forms.css (#76783).
VisuallyHidden: Improve Storybook stories and documentation for therenderprop composition pattern.
Card: Remove redundantmargin: 0fromCard.Titlenow thatTextapplies it by default (#77187).- Normalize
renderprop handling across components and document conventions inCONTRIBUTING.md(#77160). AlertDialog: Rewrite internals to use Base UI'sAlertDialogprimitives directly instead ofDialogwrappers. Introduces an internal state machine for async confirm flows (#76937).Field.Label,Fieldset.Legend,Field.Details: RefactorVisuallyHiddencomposition to preserve semantic HTML elements when visually hiding content.Badge: UseTextcomponent for typography (#77295).Notice.ActionLink: UseTextcomponent for typography (#77332).- Update
@base-ui/reactfrom1.3.0to1.4.0(#77308).
- Add
AlertDialogprimitive (#76847). - Add
InputControlcomponent (#76653). Dialog: ExposeinitialFocusandfinalFocusprops onDialog.Popupfor custom focus management (#76860).CollapsibleCard: AddHeaderDescriptionsubcomponent for supplementary header content witharia-describedbyrelationship (#76867).
Card: Addoverflow: cliptoCard.Rootto prevent child content from overflowing rounded corners (#76678).CollapsibleCard: do not animate the focus ring when expanding/collapsing the card (#76459).
Dialog.Root: exposedisablePointerDismissalprop (#76847).Dialog.Popup: DefaultinitialFocusnow deprioritizes the close icon, focusing the first tabbable content element instead (following WAI-ARIA APG guidance) (#76910).
- Extract
useDeprioritizedInitialFocusshared hook for reuse across overlay components (#76910). Tabs: Add development-mode validation for Tab/Panel count matching (#75170).
- Remove
NoticeIntenttype from package exports (#76791).
- Add
Textprimitive with predefined typographic variants (heading-2xlthroughheading-sm,body-xlthroughbody-sm) built on design tokens (#75870). - Add
CardandCollapsibleCardprimitives (#76252). - Add
Linkprimitive (#76013). - Add
Collapsibleprimitive (#76280).
InputLayout.Slot: Forward the incomingclassNameprop instead of letting it be silently overwritten by the rest spread (#76459).VisuallyHidden: Addword-break: normalto prevent text wrapping issues in screen reader content (#75539).
Badge: Add border, update text color, and applyneutral-strongbackground tononeintent for better contrast against neutral surfaces (#76356).Dialog: Use--wpds-dimension-surface-width-*design tokens for width constraints (#76494).Notice: Improve narrow layout by letting description and actions span the icon column when a title is present (#76202).Notice: UseTextcomponent forTitleandDescriptiontypography (#75870).Card: UseTextcomponent forTitletypography (#76642).Card,CollapsibleCard: update padding to match legacyCardcomponent (#76368).CollapsibleCard: move trigger to the header (#76265).CollapsibleCard: add animations (#76378).CollapsibleCard: allows the browser page search to find and expand the panel contents via thehiddenUntilFoundprop. (#76498).
InputLayout: Remove thetypeprop fromInputLayout.Slot(#76011).
- Add
Noticeprimitive (#75981).
Field.Label,Fieldset.Legend: AddhideFromVisionprop to visually hide the label while keeping it accessible to screen readers (#76052).Dialog: Add--wp-ui-dialog-z-indexCSS custom property for legacy z-index compatibility (#75874).Tooltip: Change defaultsidefrombottomtotop. (#76131).
IconButton: Hide tooltip when the button is truly disabled (#75754).
- Update
@base-ui/reactfrom 1.0.0 to 1.2.0 (#75698). Input: Align ref type with upstream widening toHTMLElement(#75698).
- Remove
Boxcomponent. Components that previously usedBoxshould use the equivalent design tokens in their CSS directly (#74981).
Tabs: Replace hardcoded font values with design tokens on tab buttons (#75537).Field: Fix default gap spacing (#75446).Button: Fix disabled styles whilefocusableWhenDisabled={false}(#75568).IconButton: make icon always24pxregardless ofsizeprop (#75677).
Button: Add minimum content width (6ch+ padding) to prevent overly narrow buttons with short labels (#75133).
Button,InputLayout,Tabs: use semantic dimension tokens (#74557).Button: Fix overriding of internal CSS variables (#75568).
- Add
Selectprimitive (#74661).