From bca3ca2c02e9d117733ad7f0986b0d310a9f8438 Mon Sep 17 00:00:00 2001 From: Josh Black Date: Thu, 25 Jun 2026 09:40:48 -0500 Subject: [PATCH 1/2] feat: add React Compiler support for hooks Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .changeset/react-compiler-hooks.md | 5 +++++ packages/react/script/react-compiler.mjs | 9 --------- 2 files changed, 5 insertions(+), 9 deletions(-) create mode 100644 .changeset/react-compiler-hooks.md diff --git a/.changeset/react-compiler-hooks.md b/.changeset/react-compiler-hooks.md new file mode 100644 index 00000000000..2e3431dd96c --- /dev/null +++ b/.changeset/react-compiler-hooks.md @@ -0,0 +1,5 @@ +--- +'@primer/react': patch +--- + +Hooks: Improve rendering performance with React Compiler support diff --git a/packages/react/script/react-compiler.mjs b/packages/react/script/react-compiler.mjs index 184c468cfc0..8ffc4aacf6c 100644 --- a/packages/react/script/react-compiler.mjs +++ b/packages/react/script/react-compiler.mjs @@ -30,16 +30,7 @@ const unsupportedPatterns = [ 'src/SideNav.tsx', 'src/UnderlineNav/**/*.tsx', 'src/experimental/SelectPanel2/**/*.tsx', - 'src/hooks/useAnchoredPosition.ts', - 'src/hooks/useFocusTrap.ts', - 'src/hooks/useFocusZone.ts', - 'src/hooks/useMenuInitialFocus.ts', - 'src/hooks/useOnEscapePress.ts', - 'src/hooks/useResizeObserver.ts', - 'src/hooks/useSafeTimeout.ts', - 'src/hooks/useScrollFlash.ts', 'src/internal/components/CheckboxOrRadioGroup/**/*.tsx', - 'src/hooks/useMergedRefs.ts', 'src/TooltipV2/**/*.tsx', ] From c7ec867ead032ca5531bea724be260613c03bfa4 Mon Sep 17 00:00:00 2001 From: Josh Black Date: Thu, 25 Jun 2026 10:03:02 -0500 Subject: [PATCH 2/2] test: wait for SelectPanel initial focus state Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/react/src/SelectPanel/SelectPanel.test.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/react/src/SelectPanel/SelectPanel.test.tsx b/packages/react/src/SelectPanel/SelectPanel.test.tsx index 32a3ade1f74..c7fc015b229 100644 --- a/packages/react/src/SelectPanel/SelectPanel.test.tsx +++ b/packages/react/src/SelectPanel/SelectPanel.test.tsx @@ -1673,11 +1673,10 @@ for (const usingRemoveActiveDescendant of [false, true]) { const input = screen.getByPlaceholderText('Filter items') const options = screen.getAllByRole('option') - // Wait a tick for the effect to run - await new Promise(resolve => setTimeout(resolve, 0)) - - // aria-activedescendant should be set to the first item - expect(input.getAttribute('aria-activedescendant')).toBe(options[0].id) + await waitFor(() => { + // aria-activedescendant should be set to the first item + expect(input.getAttribute('aria-activedescendant')).toBe(options[0].id) + }) }) it('should not set aria-activedescendant on mouse hover until after first interaction when setInitialFocus is true', async () => {