You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Fix onSubmitEditing firing twice for hardware Enter in multiline TextInput on Android - #59000
When a hardware Enter key is pressed in a multiline TextInput with submitBehavior="submit", TextView calls the editor action listener on key down, and because the listener returns true it sets enterDown and calls the listener again on key up with the same IME_NULL action. Our listener doesn't look at the key event, so it dispatches onSubmitEditing both times. Single-line inputs don't hit this because ReactEditText.onKeyUp already consumes Enter before TextView sees it, and IME action buttons pass a null event.
The listener now ignores the key-up call and just keeps consuming it. TextView only calls the listener on key up after the key down was already handled, so nothing else changes.
Changelog:
[ANDROID] [FIXED] - Fix onSubmitEditing firing twice when pressing a hardware Enter key in a multiline TextInput with submitBehavior="submit"
Test Plan:
Added ReactTextInputSubmitEditingTest, which sends an Enter key down and key up to a multiline TextInput with submitBehavior="submit" and checks that only one submit event is dispatched. It fails on main (2 dispatches) and passes with this change.
meta-claBot
added
the
CLA Signed
This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.
label
Oct 12, 2026
Confirming this on React Native 0.88.1 (Expo SDK 58, prebuilt react-android), Pixel 8 emulator on API 36: a multiline TextInput with submitBehavior="submit" and blurOnSubmit={false} gets onSubmitEditing twice for one hardware Enter (adb shell input keyevent 66, also from Bluetooth keyboards), and both events carry the same text. The soft keyboard's action button submits once.
The analysis matches what we found reading the source: TextView calls the editor action listener on key down and again on key up (enterDown), and ReactEditText.onKeyUp only consumes Enter when !isMultiline. Since Expo apps use the prebuilt AAR, patch-package can't apply this, so we are waiting for a release that includes this fix. It would be great to have it merged and picked into 0.88.x.
This branch has not been deployed
No deployments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.Shared with MetaApplied via automation to indicate that an Issue or Pull Request has been shared with the team.
2 participants
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
Fixes #58990.
When a hardware Enter key is pressed in a
multilineTextInput withsubmitBehavior="submit",TextViewcalls the editor action listener on key down, and because the listener returnstrueit setsenterDownand calls the listener again on key up with the sameIME_NULLaction. Our listener doesn't look at the key event, so it dispatchesonSubmitEditingboth times. Single-line inputs don't hit this becauseReactEditText.onKeyUpalready consumes Enter beforeTextViewsees it, and IME action buttons pass a null event.The listener now ignores the key-up call and just keeps consuming it.
TextViewonly calls the listener on key up after the key down was already handled, so nothing else changes.Changelog:
[ANDROID] [FIXED] - Fix
onSubmitEditingfiring twice when pressing a hardware Enter key in a multiline TextInput withsubmitBehavior="submit"Test Plan:
Added
ReactTextInputSubmitEditingTest, which sends an Enter key down and key up to a multiline TextInput withsubmitBehavior="submit"and checks that only one submit event is dispatched. It fails onmain(2 dispatches) and passes with this change.ReactTextInputPropertyTest(28) and the new test pass.