Skip to content

feat(popper)!: thin positioners — single-source inputs, unified CSS vars, z-index decoupling (ADR 0012)#419

Merged
pimenovoleg merged 4 commits into
mainfrom
feat/adr_12
Jun 13, 2026
Merged

feat(popper)!: thin positioners — single-source inputs, unified CSS vars, z-index decoupling (ADR 0012)#419
pimenovoleg merged 4 commits into
mainfrom
feat/adr_12

Conversation

@pimenovoleg

Copy link
Copy Markdown
Contributor

Description

@vercel

vercel Bot commented Jun 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
primitives-storybook Ready Ready Preview, Comment Jun 13, 2026 9:37am
radix-astro-doc Ready Ready Preview, Comment Jun 13, 2026 9:37am

Request Review

@pimenovoleg
pimenovoleg removed the request for review from pawel-twardziak June 13, 2026 08:04
@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown

⚡ Performance

Total duration: 136.1 ms +2.4 ms (+1.8%) · Renders: 13 (-3) · Paint: 167.9 ms +6.4 ms (+4.0%)

Test Duration Renders Paint
Select open (50 options) 5.3 ms +0.2 ms (+2.9%) 6 (-1) 10.1 ms +0.6 ms (+6.3%)
Select open (1000 options) 85.8 ms +2.0 ms (+2.4%) 5 (-2) 91.9 ms +2.0 ms (+2.3%)
2 tests within noise
Test Duration Renders Paint
Checkbox mount (500 instances) 28.6 ms +0.4 ms (+1.4%) 1 (+0) 42.8 ms +2.2 ms (+5.4%)
Checkbox toggle (500 instances) 16.4 ms −0.1 ms (-0.9%) 1 (+0) 23.2 ms +1.6 ms (+7.4%)

Lower is better. ▲ regression · ▼ improvement · within-noise = |Δ| ≤ 20% of base median.

The wrapper no longer copies the popup's computed z-index onto the
positioner. Drop `contentChild.required(RdxPopperContent)`, `contentZIndex`,
and the `zIndex` entry from `RdxPopperContentWrapper.style()` (plus the
now-unused isBrowser/PLATFORM_ID/RdxPopperContent imports). z-index now
belongs on the positioner, Base UI-aligned — and a positioner no longer
requires an inner `RdxPopperContent` to exist (the open-time query crash and
the getComputedStyle-in-change-detection both go away).

In-repo sweep of load-bearing popup z-index → positioner: demoCombobox
(combobox + autocomplete) and the 4 popper-mode select stories; the 2
item-aligned select stories were never copied and are left as-is.

BREAKING CHANGE: set the stacking `z-index` on the popper positioner element,
not the popup. Consumers who set `z-*` on the popup (relying on the wrapper
copying it onto the positioner) must move that class up one element to the
positioner.
@pimenovoleg pimenovoleg changed the title chore: init brach - complete phase 3 feat(popper)!: thin positioners — single-source inputs, unified CSS vars, z-index decoupling (ADR 0012) Jun 13, 2026
@pimenovoleg
pimenovoleg merged commit 8c8892d into main Jun 13, 2026
12 of 13 checks passed
@pimenovoleg
pimenovoleg deleted the feat/adr_12 branch June 13, 2026 09:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant