Repository navigation
Base UI 1.8.0 differences in Select, Tooltip, Combobox, Dialog and AlertDialog #841
Description
This tracking issue records consumer-visible differences found while comparing GPU-IX with Base UI 1.8.0. The comparison used the v1.8.0 source tag.
Differences found
Tooltip
The Tooltip parity suite and behaviour fixes were merged in PR #871 as commit 072594aa7781afa33c1d1fbea7bab8bc173c7ede. The PR fixes 24 of 47 baseline failures. Twenty-three nested-Trigger cases remain unresolved under #859: the attempted implementation failed the Windows React shard 2/3 focus test, so those changes and tests were withdrawn from the PR. The other 109 Tooltip parity tests pass locally after withdrawal. Nineteen additional cases need native renderer support and are listed in the PR. Tooltip.Viewport transition behaviour remains tracked separately in #879 because the native renderer cannot retain a previous rendered subtree or observe animation completion.
- #845 — Tooltip.Popup renders without its required Positioner: now throws when Popup is outside Positioner.
- #846 — Tooltip change event details lack cancel and allowPropagation: event details expose both methods; canceled changes and Escape propagation match Base UI.
- #847 — Tooltip emits controlled no-op changes and mounts closed content: controlled roots ignore no-op state notifications and closed content stays unmounted.
- #848 — Tooltip.Arrow is not hidden from assistive technology: the decorative Arrow defaults to
aria-hidden="true". - #849 — Tooltip handles silently ignore unregistered trigger IDs: unknown trigger IDs throw a descriptive error.
- #851 — Tooltip.Positioner offsets do not use resolved placement, related to closed #776 — Floating Popup props omit Base UI anchor positioning options: Tooltip.Positioner defaults
collisionAvoidance.aligntoflip, so the ten sideOffset and alignOffset checks report Base UI’s resolvedendalignment. - #852 — Tooltip handles omit warnings for missing or duplicate Roots: missing and duplicate Root attachment warnings match Base UI.
- #853 — Tooltip Positioner ignores disableHoverablePopup: the Positioner applies
pointer-events: nonewhen requested. - #856 — Tooltip handle does not switch payload while open: open handoffs update the active trigger payload while retaining the popup and Positioner.
- #857 — Tooltip stays open after its active detached trigger unmounts: removing the active trigger closes the Tooltip.
- #859 — Tooltip.Trigger drops nested children when rendering a custom element remains open. The attempted nested-Trigger fix left the outer Tooltip mounted when focus moved to the nested Trigger on Windows React shard 2/3; PR fix(react): match Base UI Tooltip behaviour #871 withdraws that implementation and its tests. The CI evidence is run 37064016778.
- #862 — Tooltip handle loses its active Root during an overlapping handoff: an overlapping Root handoff keeps the handle attached to the incoming Root.
- Existing #834 — Focus-opened tooltips remain visible after Tab moves on was not refiled. The copied Satisfactory wrapper test passes against the packed PR build and is recorded with its exact command and output in the Tooltip table.
- #885 — Tooltip.Positioner renders outside Tooltip.Portal without reporting the missing Portal: Positioner now reports the missing Portal composition error.
- #879 — Tooltip.Viewport drops previous content during animated trigger changes: GPU-IX replaces current content but cannot retain the previous rendered subtree or observe animation completion; ten related transition and direction cases remain out of the parity suite for missing native renderer support.
Combobox
- #839 —
Combobox.Listfunction children receiveunknowninstead of theRootitem type. Base UI's object-values, item-IDs, and memoized-list examples infer the item type fromRoot.items. GPU-IX emitsTS18046orTS2322for the same examples. Reproductions arepackages/react/type-tests/base-ui-check-docs/combobox-02.tsx,combobox-04.tsx, andcombobox-12.tsxon branchbase-ui-check. - #840 —
Combobox.Valuefunction children receiveunknowninstead of the selected value type. A typed selected-value callback in Base UI's “Limiting visible chips” example fails against GPU-IX withTS2322. Reproduction:packages/react/type-tests/base-ui-check-docs/combobox-07.tsxon branchbase-ui-check.
Inventory counts
Counts include source test cases after expanding parameterised variants, documentation examples, and both CSS Modules and Tailwind sources for each documentation demo. Tooltip has 108 applicable rows passing after the 24 fixes and 23 applicable nested-Trigger rows still failing under #859. Eight rows do not apply, and nineteen rows need native test support that the renderer does not provide.
| Component | Applies and passes | Applies and fails | Does not apply | Not ported | Total rows |
|---|---|---|---|---|---|
| Select | 9 | 0 | 0 | 295 | 304 |
| Tooltip | 108 | 23 | 8 | 19 | 158 |
| Combobox | 10 | 4 | 7 | 648 | 669 |
| Dialog | 9 | 0 | 0 | 163 | 172 |
| AlertDialog | 6 | 0 | 0 | 42 | 48 |
| Total | 142 | 27 | 15 | 1,167 | 1,351 |
The Tooltip table is stored at $BB_THREAD_STORAGE/base-ui-check-tooltip.md. Tooltip documentation code samples and CSS Modules/Tailwind demos typecheck against both Base UI and GPU-IX with exactOptionalPropertyTypes. The latest native Tooltip parity run after withdrawing nested-Trigger tests has 109 tests: 109 passed, 0 failed, and none skipped. The 19 cases that remain out name their required missing renderer support in the table and PR #871. Pull-request CI run 37066776451 passed on macOS, Linux and Windows. The nested-trigger behaviour in #859 remains unverified because its failing tests and attempted fix were withdrawn from the PR.
Activity