Skip to content

fix(react-combobox,react-tag-picker): separate tabster logic from the base hooks - #36497

Merged
dmytrokirpa merged 6 commits into
microsoft:masterfrom
dmytrokirpa:fix/headless-bundle-size-regression-36275
Aug 4, 2026
Merged

fix(react-combobox,react-tag-picker): separate tabster logic from the base hooks#36497
dmytrokirpa merged 6 commits into
microsoft:masterfrom
dmytrokirpa:fix/headless-bundle-size-regression-36275

Conversation

@dmytrokirpa

@dmytrokirpa dmytrokirpa commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Previous Behavior

The headless bundle included additional Tabster Escape-ignore attribute handling in a shared trigger slot path, which caused a bundle size regression after #36275.

New Behavior

Escape-ignore Tabster attributes are applied only where needed in Combobox, Dropdown, and TagPicker wrapper logic. This preserves Escape behavior when popup content is open while removing unnecessary shared-path overhead that affected headless bundle size.

Bundle size report is available below: #36497 (comment)

Related Issue(s)

@dmytrokirpa
dmytrokirpa requested review from a team as code owners August 3, 2026 12:27
@dmytrokirpa
dmytrokirpa marked this pull request as draft August 3, 2026 12:27
@dmytrokirpa dmytrokirpa self-assigned this Aug 3, 2026
@dmytrokirpa dmytrokirpa changed the title fix: headless bundle size regression from #36275 fix(react-combobox,react-tag-picker): headless bundle size regression from #36275 Aug 3, 2026
@dmytrokirpa
dmytrokirpa marked this pull request as ready for review August 3, 2026 12:32
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

📊 Bundle size report

Package & Exports Baseline (minified/GZIP) PR Change
react-combobox
Combobox (including child components)
138.149 kB
44.681 kB
138.206 kB
44.659 kB
57 B
-22 B
react-combobox
Dropdown (including child components)
137.905 kB
44.453 kB
137.965 kB
44.417 kB
60 B
-36 B
react-components
react-components: entire library
1.295 MB
326.282 kB
1.295 MB
326.427 kB
325 B
145 B
react-headless-components-preview
react-headless-components-preview: entire library
268.493 kB
77.803 kB
231.503 kB
66.865 kB
-36.99 kB
-10.938 kB
react-tag-picker
@fluentui/react-tag-picker - package
174.01 kB
54.191 kB
174.152 kB
54.355 kB
142 B
164 B
react-timepicker-compat
TimePicker
140.867 kB
46.058 kB
140.924 kB
46.053 kB
57 B
-5 B
Unchanged fixtures
Package & Exports Size (minified/GZIP)
react-components
react-components: Button, FluentProvider & webLightTheme
66.297 kB
19.006 kB
react-components
react-components: Accordion, Button, FluentProvider, Image, Menu, Popover
226.042 kB
68.045 kB
react-components
react-components: FluentProvider & webLightTheme
39.52 kB
13.116 kB
react-portal-compat
PortalCompatProvider
5.341 kB
2.146 kB
🤖 This report was generated against bb2471502447010277683517e3da2c1180339789

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

Pull request demo site: URL

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses a headless bundle size regression introduced by adding Tabster Escape-ignore handling in a shared trigger-slot utility. The Escape-ignore attribute is now applied only in the component wrapper layers (Combobox, Dropdown, TagPicker) where the popup-open Escape behavior is relevant, reducing overhead in the shared/headless path while preserving the Escape behavior when open.

Changes:

  • Removed Tabster Escape-ignore attribute handling from the shared useTriggerSlot utility in @fluentui/react-combobox.
  • Added an internal useTabsterEscapeIgnore helper hook in both @fluentui/react-combobox and @fluentui/react-tag-picker.
  • Applied the helper in Combobox/Dropdown wrapper state and TagPicker Input/Button state, gated by the open state.
  • Added Beachball change files for both packages.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments.

Show a summary per file
File Description
packages/react-components/react-tag-picker/library/src/utils/useTabsterEscapeIgnore.ts New internal helper to generate/merge Tabster Escape-ignore attributes.
packages/react-components/react-tag-picker/library/src/components/TagPickerInput/useTagPickerInput.tsx Applies Escape-ignore Tabster attributes to the input root when the picker is open.
packages/react-components/react-tag-picker/library/src/components/TagPickerButton/useTagPickerButton.tsx Applies Escape-ignore Tabster attributes to the button root when the picker is open.
packages/react-components/react-combobox/library/src/utils/useTriggerSlot.ts Removes Escape-ignore Tabster handling from the shared trigger-slot path (bundle-size fix).
packages/react-components/react-combobox/library/src/hooks/useTabsterEscapeIgnore.ts New internal helper to generate/merge Tabster Escape-ignore attributes.
packages/react-components/react-combobox/library/src/components/Dropdown/useDropdown.tsx Applies Escape-ignore Tabster attributes to the Dropdown trigger button when open.
packages/react-components/react-combobox/library/src/components/Combobox/useCombobox.tsx Applies Escape-ignore Tabster attributes to the Combobox input when open.
change/@fluentui-react-tag-picker-509b8d02-9b8f-4508-83f4-0e88760058a0.json Patch change file for @fluentui/react-tag-picker.
change/@fluentui-react-combobox-9f5fafcd-7082-45a1-a31e-9d2605a575fb.json Patch change file for @fluentui/react-combobox.

@dmytrokirpa dmytrokirpa changed the title fix(react-combobox,react-tag-picker): headless bundle size regression from #36275 fix(react-combobox,react-tag-picker): move tabster logic out of base hooks Aug 4, 2026
@dmytrokirpa dmytrokirpa changed the title fix(react-combobox,react-tag-picker): move tabster logic out of base hooks fix(react-combobox,react-tag-picker): separate tabster logic from the base hooks Aug 4, 2026
@tudorpopams
tudorpopams requested a review from mainframev August 4, 2026 12:05
@dmytrokirpa
dmytrokirpa merged commit 67b17f7 into microsoft:master Aug 4, 2026
13 checks passed
Hotell added a commit to Hotell/fluentui that referenced this pull request Aug 4, 2026
Upstream microsoft#36497 separated the tabster logic from these base hooks, so all four
directives are now unused and the accompanying `none` change files are redundant.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants