Files
backstage/packages/ui
Johan Persson c6fc76f532 fix(ui): prevent hidden Tabs tree from stomping active indicator opacity
React Aria's `CollectionBuilder` renders `TabList`'s children into both a
hidden collection-building tree and the real DOM. The hidden instance of
`TabsIndicators` sits outside the `TabListStateContext` provider, so its
`state` is `null` — causing its `updateCSSVariables` effect to hit the
`else` branch and write `--active-tab-opacity: 0` to the `tabsRef` DOM
element that the real instance also writes to. Under the right render
ordering, this hidden write lands after the real instance's `opacity: 1`
and makes the active indicator disappear on uncontrolled Tabs.

Guard `updateCSSVariables` with an early return when `state == null` so
the hidden instance never writes to the shared DOM element.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-04-17 14:18:22 +02:00
..
2026-02-03 15:08:27 +01:00
2026-04-16 12:14:47 +02:00

@backstage/ui

Backstage UI is a component library for Backstage.

Installation

Install the package via Yarn:

cd <package-dir> # if within a monorepo
yarn add @backstage/ui

Documentation

Writing Changesets for Components

When creating changesets for component-specific changes, add component metadata to help maintain documentation:

---
'@backstage/ui': patch
---

Fixed size prop handling for Avatar component.

Affected components: Avatar

Guidelines:

  • Component names: Use PascalCase as they appear in imports (Avatar, ButtonIcon, SearchField)
  • Multiple components: Affected components: Button, ButtonLink, ButtonIcon
  • General changes: Omit the metadata line (build changes, package-level updates)
  • Placement: The line can appear anywhere in the description

The changelog sync tool will parse these tags and update the documentation site automatically.