From 507a7802d7d014dffb10beea2b81637cf3200878 Mon Sep 17 00:00:00 2001 From: Lucas <130944577+Lucas20000903@users.noreply.github.com> Date: Thu, 4 Jun 2026 11:06:51 +0900 Subject: [PATCH] fix(autocomplete): apply virtual focus to first item on IME composition input useAutocomplete only called focusFirstItem() when inputType was 'insertText'. IME-based input (CJK languages) reports 'insertCompositionText'/'insertFromComposition' instead, which fell through to clearVirtualFocus(true), so the first matching item never received virtual focus and Enter could not select it. Closes #10126 --- packages/react-aria/src/autocomplete/useAutocomplete.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/react-aria/src/autocomplete/useAutocomplete.ts b/packages/react-aria/src/autocomplete/useAutocomplete.ts index e778fe9152c..0fca4a6e726 100644 --- a/packages/react-aria/src/autocomplete/useAutocomplete.ts +++ b/packages/react-aria/src/autocomplete/useAutocomplete.ts @@ -287,7 +287,14 @@ export function useAutocomplete( let onChange = (value: string) => { // Tell wrapped collection to focus the first element in the list when typing forward and to clear focused key when modifying the text via // copy paste/backspacing/undo/redo for screen reader announcements - if (lastInputType.current === 'insertText' && !disableAutoFocusFirst) { + if ( + (lastInputType.current === 'insertText' || + // IME composition (e.g. CJK input) reports 'insertCompositionText'/'insertFromComposition' + // instead of 'insertText'. Treat these as forward typing so the first item gets virtual focus. + lastInputType.current === 'insertCompositionText' || + lastInputType.current === 'insertFromComposition') && + !disableAutoFocusFirst + ) { focusFirstItem(); } else if ( lastInputType.current &&