Skip to content

Releases: epam/UUI

v6.4.1

29 Dec 18:30

Choose a tag to compare

6.4.1 - 29.12.2025

What's Fixed

  • [NumericInput]: use 'any' value for step prop by default
  • [useForm]: fixed form revet on value prop change. Before it remained previous isChanged and form history values
  • [PickerInput]: fixed possibility to truncate long text in custom picker row
  • [Slider]: fixed tooltip styles and freezes on change

v6.4.0

15 Dec 14:32

Choose a tag to compare

6.4.0 - 15.12.2025

What's New

  • Added electric dark theme. Add import import '@epam/assets/css/theme/theme_electric_dark.css'; to connect.
    • --uui-surface-sunken variable removed from all themes; use --uui-surface-highest instead.
  • [Inputs/Controls]:Made clickable icons and clear buttons accessible via keyboard (#2845). Now it's possible to focus on them during keyboard navigation.
    • The icon provided by the icon property and the clear button are now button components (ControlIcon) with their own CSS variables, which makes some input-specific variables obsolete.
      • The following CSS variables are no longer available:
        • TextInput (and other inputs that use it):
          • --uui-text_input-icon
          • --uui-text_input-icon-disabled
          • --uui-text_input-icon-clickable
          • --uui-text_input-icon-clickable-hover
          • --uui-text_input-icon-clickable-active
        • PickerInput:
          • --uui-picker_toggler-icon-disabled
          • --uui-picker_toggler-icon-clickable
          • --uui-picker_toggler-icon-clickable-hover
      • The following CSS variables should be used instead:
        • --uui-control_icon
        • --uui-control_icon-clickable
        • --uui-control_icon-clickable-hover
        • --uui-control_icon-clickable-active
    • The icon provided with the icon property in TextInput (and other inputs that use it) is now always displayed in mode="cell", not only on hover.
  • [DataTable]: Improved accessibility: actions in the table header, row checkboxes, and row folding are now reachable from the keyboard.
  • [PickerInput]: Improved accessibility: now it's possible to fold/unfold items using right/left arrows, focus on the items list, and navigate through items with the keyboard (previously possible only when the search was focused).
  • [MainMenu]: Improved accessibility of hidden items in the "More" menu (#2948).
    • Added aria-haspopup="menu" to the "More" button.
    • Added role="menu" to the container wrapping the list of items.
    • Provided an example in the documentation of how to assign role="menuitem" to the items only when they are present in the menu.
  • [DatePicker], [RangeDatePicker]: Added ability to set the initially displayed month and year in the calendar body when the picker opens via the initialViewMonth prop.
  • [Dropdown]: Added fixedBodyPosition prop to control dropdown positioning. Pass true to keep the dropdown list fixed in the position where it was first opened.

What's Fixed

  • [DataTable]: Fixed resizing for right-fixed columns.
  • [TimePicker]: Reworked body open/close behavior. The body now opens on input click or 'Enter' key press (instead of 'focus' on target) and closes on 'Escape' or click outside (instead of target blur). Added focus lock behavior.
  • [uui-core]: Removed isFocusReceiverInsideFocusLock helper function that was causing focus management issues in picker components.
  • [LabeledInput]: Fixed incorrect prop resolution for infoIcon.
  • [PickerInput]: Changed value in aria-haspopup attribute from "true" to "dialog" (#2947).
  • [PickerInput]: Fixed an issue where item count text was truncated in isSingleLine mode.
  • [TextInput]: Removed call to onCancel callback on 'Escape' press.
  • [Pagination]: Fixed an issue where pagination elements were not grouped into a list (#2942).
    • Added "Previous page" and "Next page" aria-labels to the previous and next pages respectively.
  • [DatePickers]: Fixed calendar matrix calculation to use locale-specific firstDayOfWeek from dayjs instead of hardcoded i18n configuration, ensuring correct calendar layout for any locale.
  • [RangeDatePicker]: Display clear icon when at least one date is selected.
  • [PickerInput/PickerModal]: Fixed announcing of a picker item's content in screen readers when the item becomes focused (#2946).
  • [Dropdown]: Added example for fixed body position when toggler changes place.
  • [PresetActionsDropdown]: Fixed unreadable dark text in SuccessNotification after "Copy link" action under Loveship-Dark theme.
  • [TimePicker]: Fixed invalid value reset in case the previous value was empty.
  • [Blocker]: Changed blocker background color and animation.
  • [Error Pages]: Updated error images according to the design.
  • [DataTable]: Fixed 'Not found' block alignment to center.

v6.3.3

14 Oct 16:29

Choose a tag to compare

6.3.3 - 14.10.2025

What's Fixed

  • [ScrollBars]: move 'overlayscrollbars' styles import from TS to CSS, to prevent errors during Next.js build

v6.3.1

14 Oct 16:29

Choose a tag to compare

6.3.1 - 08.10.2025

What's Fixed

  • [DataTable]: fixed virtualization height calculation issues causing excessive empty space in tables

v6.3.0

26 Sep 12:05

Choose a tag to compare

6.3.0 - 26.09.2025

What's New

  • [Tabs]: added new component (#2857)
  • [TabButton]: added activation of tab button by pressing "Space" key (#2857)
  • [FiltersPanel]: added 'disableClear' and 'filter' props for picker filters
  • [ApiContext][Breaking Change]:
    • ApiContext no longer supports auth recovery via the 'message' event; it now uses the 'storage' event instead;
      • To switch to the handling via localStorage replace code of apiReloginPath endpoint to <html><script>window.localStorage.setItem("uui-auth-recovery-success", "true"); window.close();</script></html>
    • The 'opener' is cleared when the auth recovery popup is opened
  • [ScrollBars][Breaking Changes]: migrated from deprecated react-custom-scrollbars-2 to modern overlayscrollbars-react library to fix multiple issues and improve stability. This migration improved scrollbar styling, expanded API capabilities, but introduced some minor breaking changes, that should not affect common use-cases:
    • base component removed from @epam/uui-components, all types moved to @epam/uui;
    • Ref API changed from { container: HTMLDivElement | undefined } to { container: HTMLElement | null, view: HTMLElement | null };
    • autoHide prop changed from boolean to string values ('never' | 'scroll' | 'move' | 'leave'), autoHideTimeout & autoHideDuration replaced with autoHideDelay;
    • removed render callbacks renderView, renderTrackHorizontal, renderTrackVertical, renderThumbHorizontal, renderThumbVertical - now you can customize them via classes and uui css variables;
    • shadows API changed from hasTopShadow, hasBottomShadow to overflowTopEffect, overflowBottomEffect with 'line' | 'shadow' | 'none' values. ScrollBars now handle overflow effects internally - if you had custom shadow/border styling, you can remove it and use the new props instead;
    • overflow management centralized: previously each component (DataTable, VirtualList, Modals) had custom shadow implementations, now all use unified ScrollBars system with CSS classes .-scrolled-top, .-scrolled-bottom, .-scrolled-left, .-scrolled-right. Removed old shadow classes uui-shadow-top-visible, uui-shadow-bottom-visible in favor of unified system;
    • HTML attributes removed from ScrollBars interface - use rawProps instead;
    • on macOS scrollbars now also used UUI styles and always visible by default;
    • improved RTL support and performance;
    • fixed issues #1645, #2548, #2644, #2882, #2893
  • [Dropdown]: dropdown body now closed by Escape key press by default, to ensure proper accessibility compliance. Added closeOnEscape prop (default: true) to change this behavior.
  • [DropdownContainer][Breaking Change]: closeOnEsc prop is removed. Use closeOnEscape prop on Dropdown instead. Replace <DropdownContainer closeOnEsc={false} /> with <Dropdown closeOnEscape={false}><DropdownContainer /></Dropdown> if needed.
  • [Tooltip]: now tooltip body opens by target element focus and disappears on blur or Escape key press to ensure proper accessibility compliance. Added closeOnEscape prop (default: true).
  • [DataTable]: add support of columns configuration modal for table with grouped columns

What's Fixed

  • [useForm]: improved router block removal on discard and custom beforeLeave for close action. Rework useLock to unblock router immediately, rather than on next render
  • [Modals]: fixed incorrect order of abort() calls when pressing ESC with nested modals — now only the topmost modal responds to ESC key (#2873)
  • [Text]: changed fontSize and lineHeight props typings from strict string literal to more common number | string type, to support varied customization cases
  • [RangeDatePicker]: undefined value in preset range now applies like an empty date, not the current one (#2879)
  • [TimePicker]: disabled time editing in time picker body
  • [Dropdown]: fixed zIndex recalculation on dropdown update
  • [DataTable]: fixed preventing row redirect in case of click on -clickable element inside this row

v6.2.0

05 Aug 16:32

Choose a tag to compare

6.2.0 - 05.08.2025

What's New

  • Introduced a UUI docs MCP server for LLM Agents like Cursor IDE and Copilot.
    These MCP tools will respond with comprehensive UUI documentation for each component, including API details, descriptions, and code examples. This will add additional context about UUI usage for LLMs.
    • To connect it to the Cursor IDE, add the following content to .cursor/mcp.json file:
      "mcpServers": {
        "uui": {
          "url": "https://uui.epam.com/api/mcp"
        }
      }
      
    • For Copilot instructions, read this
  • Remove support of deprecated @epam/draft-rte package, this package source code was removed and will no longer receive new updated and release.
  • [MainMenu][Breaking Change]:
    • Removed deprecated children support, use items prop instead

    • removed outdated customer logo(customerLogoUrl, customerLogoLink, customerLogoHref, customerLogoBgColor) and isTransparent props.

    • removed Burger, renderBurger, alwaysShowBurger props, use Burger component in items with collapsedContainer: true option.

    • removed appLogoUrl, logoLink, onLogoClick prop, use MainMenuLogo component instead.

    • see example here

      // Before
        <MainMenu
           cx={ css.menuContainer }
           renderBurger={ renderBurger }
           logoLink={ { pathname: '/' } }
           appLogoUrl="/static/logo.svg"
           onLogoClick={ onLogoClick }
      >
            <MainMenuButton caption="Home" />
        </MainMenu>
      
      // After
        <MainMenu
            cx={ css.menuContainer }
            items={ [
                {
                    id: 'burger',
                    priority: 100,
                    collapsedContainer: true,
                    render: (p) => <Burger key={ p.id } renderBurgerContent={ renderBurger } logoUrl="/static/logo.svg" />,
                },
                {
                    id: 'logo',
                    priority: 99,
                    render: (p) => <MainMenuLogo key={ p.id } link={ { pathname: '/' } } onClick={ onLogoClick } logoUrl="/static/logo.svg"  />,
                },
                {
                    id: 'home',
                    priority: 1,
                    render: (p) => <MainMenuButton key={ p.id } caption="Home" />,
                },
            ] }
        />
  • [VerticalTabButton][Breaking Change]: reworked with improved functionality and styling
    • Updated size variants according to design: '30' | '36' | '48' (was '36' | '48' | '60')
    • Added renderAddons prop for custom addons rendering
    • Deprecated count, onClear, clearIcon props, use renderAddons instead
    • Added indent and isFoldable props
  • [ICanRedirect]:
    • deprecate isLinkActive prop, use new isActive prop instead
    • moved isLinkActive to ICanBeActive interface
    • remove isLinkActive prop from components where it was not used
  • [PresetsPanel]:
    • "Duplicate" action is now only available for unchanged presets
    • "Copy Link" action copies a link to the current (modified) state if the preset is changed, or to the saved preset otherwise
    • Added onCopyLink prop to customize or disable the "Copy Link" action (set to null to hide the action)
  • [Tree]:
    • reworked with improved functionality and styling, moved from @epam/uui-components to @epam/uui package
    • See docs here
  • [DataTable]: added disableVirtualization prop to turn off rows virtualization
  • [RTE]: added possibility to provide your own set of plugins for HTML and MD (de)serializers
  • Uploaded updated icons pack

What's Fixed

  • [DataSources]: fixed handling of selectAll for views with disabled checkboxes
  • [PickerInput]: fixed incorrect selection state in modal for single selection mode
  • [PickerInput]: disabled highlighting search results for row subtitle.
  • [PickerInput]: change color of subtitle text from --uui-text-secondary to --uui-text-tertiary

v6.1.5

28 Jul 16:36

Choose a tag to compare

6.1.5 - 28.07.2025

What's Fixed

  • [DataTable]: fixed DataTableSelectionContext and DataTableFocusContext provider mounting to fix compatibility with React 18

v6.1.4

17 Jun 15:38

Choose a tag to compare

6.1.4 - 17.06.2025

What's Fixed

  • [@epam/uui-test-utils]: fixed various of utils to work with React 18
  • [PickerModal]: fixed disableClear: true behavior for selectionMode: multi, added Clear button functionality to selectionMode: single
  • [PickerInput]: decreased default maxItems prop value from 100 to 20
  • [PickerInput] Stop "Escape" key press event propagation when body is opened (#2839)
  • [useLazyTree]: fixed tree structure update when getParentId function changes. When filter changes trigger tree refetch and affect getParentId logic (e.g., changing groupBy parameter), the tree now correctly clears its structure with updated hierarchy parameters instead of using stale getParentId function.
  • [TreeState]: added optional newParams parameter to clearStructure() method to support updating tree parameters during structure clearing

v6.1.2

30 May 15:50

Choose a tag to compare

6.1.2 - 30.05.2025

What's Fixed

  • [MultiSwitch]: fixed size prop for 'Loveship' and 'Electric' skins

v6.1.1

29 May 16:29

Choose a tag to compare

6.1.1 - 29.05.2025

What's New

  • [uui-test-utils]: added global mock for "getBoundingClientRect" to "setupJsDom"
  • [FiltersPanel]: added renderFooter prop for DatePicker and RangeDatePicker filters. Exported default implementation of UUI footers - FilterDatePickerBodyFooter and FilterRangeDatePickerBodyFooter components
  • [DataTable]: added predicates functionality for column filters

What's Fixed

  • [RangeDatePicker]: fixed switching of the calendar depending on which field(From/To) the action was on
  • [RangeDatePicker]: immediately apply date entered in input if it is valid
  • [PickerInput]: fixed returning to the previous focused element via shift+tab press
  • [PickerInput]: fixed row focusing on search results
  • [Rating]: fixed wrong rating calculations in 'block' container and 'sticky' value on hover
  • [Modals]: change border radius to 12px in Electric theme
  • [VerticalTabButton]: aligned paddings and gaps for all sizes according to the design
  • [uuiApi]: .withOptions method now merges his options with default option from apiDefinitions
  • [PickerModal]: disabled "Show only selected" when search is active
  • [DataTable]: increased DnD area for rows, updated drag-and-drop styles for improved user experience
  • [DnDContext]: fixed cursor visualization during drag and drop operations
  • [NotificationCard]: added gap between content and actions
  • [DataPickerFooter]: added gap between switch and action
  • [ModalBlocker]: fixed stale closure in abort function when it is called on "Escape" key's press
  • [IEditableDebouncer]: fixed ref forwarding, ref provided on the component forwarded to the render prop as a second param