Skip to content

Conversation

@mattcosta7
Copy link
Contributor

@mattcosta7 mattcosta7 commented Dec 15, 2025

Summary

Performance optimization for SegmentedControl CSS selector to improve INP.

Changes

Scope :has(:focus-visible) to direct child with > combinator.

Expected INP Impact

Scenario Before After Improvement
Worst case (SegmentedControl with many items) ~10-20ms style recalc on focus <2ms 80-90% reduction
Average case (typical SegmentedControl, 3-5 items) ~5-10ms style recalc <1ms 80-90% reduction
Best case (2-3 items) ~3-5ms style recalc <1ms 70-80% reduction

Why this matters

Focus state changes are high-frequency interactions. The :has(:focus-visible) selector fires on every focus/blur event. Scoping to direct children eliminates subtree traversal during keyboard navigation.


Part of the INP performance optimization effort. See #7312 for full context.

@changeset-bot
Copy link

changeset-bot bot commented Dec 15, 2025

🦋 Changeset detected

Latest commit: e63fed7

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@primer/react Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions bot added the integration-tests: recommended This change needs to be tested for breaking changes. See https://arc.net/l/quote/tdmpakpm label Dec 15, 2025
@github-actions
Copy link
Contributor

👋 Hi, this pull request contains changes to the source code that github/github-ui depends on. If you are GitHub staff, test these changes with github/github-ui using the integration workflow. Or, apply the integration-tests: skipped manually label to skip these checks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

integration-tests: recommended This change needs to be tested for breaking changes. See https://arc.net/l/quote/tdmpakpm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants