· v0.7.0
RTL-ready props and flash-free themes
Consistent variant and RTL prop names, server-resolved theme palettes, and hardened overlays, focus, and keyboard handling.
New features
- Added
onModeChangeandattributesto ThemeScope, andonColorModeChangetoVortexProvider. - Added the
flaretheme override, which also themes primary buttons. - Exported
DrawerSnapPoint.
Improvements
- Resolved
ThemeScopepalettes in server-rendered markup, and saved and system color modes before hydration, so themed scopes no longer flash on load. - Made a controlled
colorModeown its boundary. Setters rendered beneath it have no effect. - Changed focus rings to an outline with a transparent gap. Inset rings use
currentColor. - Improved Drawer keyboard access, focus order, snap offsets, and nested release. Drawer warns in development when a handle is misplaced or duplicated.
- Improved ZoomImage focus: it manages dialog focus, focuses the close button during keyboard navigation, and uses the custom image renderer in its overlay.
- Gave the Toast region an accessible name. Toast actions keep keyboard handling and focus visibility.
- Improved Interactive semantics: it honors explicit roles, keeps native semantics and focus rings, and resolves
typeonly when rendering a<button>.
Bug fixes
- Fixed Interactive links activating with Space.
- Fixed Badge action and dismiss controls sharing one control. Unrecognised attributes stay on the badge root.
- Fixed Card firing duplicate click callbacks.
- Fixed Floating attribute forwarding, style precedence, rem-based spacing, and trigger-width measurement. Open callbacks no longer fire while disabled.
- Fixed Select, TextField, and TextArea focus, disabled, and placeholder styling. The multi-select search input keeps a minimum width while closed.
- Fixed Avatar fallback fill bleeding around photos. Its border now paints above the image.
- Fixed keyboard shortcuts not dispatching outside unrelated scopes.
- Fixed
body-xsfont weights and theheading-smdesktop line height. The primary border color now usesbrandPrimary500.
Breaking changes
- Required React 19. The
reactandreact-dompeer dependencies are now^19. - Required Node
>=22.12.0for thevortexCLI. - Renamed the visual
typeprop tovarianton Avatar, Badge, BreakpointsIndicator, Select, Shortcut, TextArea, and TextField, and tolayouton Alert and Toast.
Before → after
<Badge type="outline" />
<Badge variant="outline" />
<Alert type="inline" />
<Alert layout="inline" />- Renamed
leftIconandrightIcontostartIconandendIconon Button, Link, ListItem, and Badge. - Renamed
isExternaltoopenInNewTabon Interactive, Button, Link, and ListItem.
Before → after
<Button leftIcon={Bolt} rightIcon={Arrow} />
<Button startIcon={Bolt} endIcon={Arrow} />
<Link href="…" isExternal />
<Link href="…" openInNewTab />- Renamed Floating positions
left-*andright-*tostart-*andend-*. They now mirror in RTL, and submenus default toend-top. - Removed
forcePositionfrom Floating, Popover, and DropdownMenu. UsefallbackPositions={false}instead. RemovedfallbackMinWidth, which had no effect. - Removed
TextField.Field,TextField.StartSlot, andTextField.EndSlot, along with their prop types. - Restricted Drawer snap points to numbers or
pxstrings."50%"previously rendered as50px. - Limited
Drawer.Closerender-prop attributes toonClick. - Renamed the
themes/overrides/reddit/*export tothemes/overrides/flare/*.

