@@ -101,6 +101,7 @@ const TextInput: React.AbstractComponent<
101101 autoCompleteType,
102102 autoCorrect = true ,
103103 blurOnSubmit,
104+ submitBehavior,
104105 caretHidden,
105106 clearTextOnFocus,
106107 dir,
@@ -307,10 +308,19 @@ const TextInput: React.AbstractComponent<
307308 // Prevent key events bubbling (see #612)
308309 e . stopPropagation ( ) ;
309310
310- const blurOnSubmitDefault = ! multiline ;
311- const shouldBlurOnSubmit =
312- blurOnSubmit == null ? blurOnSubmitDefault : blurOnSubmit ;
313-
311+ // Support submitBehavior prop (React Native 0.73+), fallback to blurOnSubmit for backwards compatibility
312+ var shouldBlurOnSubmit ;
313+ var shouldSubmit ;
314+ if ( submitBehavior != null ) {
315+ // submitBehavior takes precedence over blurOnSubmit
316+ shouldSubmit = submitBehavior === 'submit' || submitBehavior === 'blurAndSubmit' ;
317+ shouldBlurOnSubmit = submitBehavior === 'blurAndSubmit' ;
318+ } else {
319+ // Fallback to blurOnSubmit logic for backwards compatibility
320+ var blurOnSubmitDefault = ! multiline ;
321+ shouldBlurOnSubmit = blurOnSubmit == null ? blurOnSubmitDefault : blurOnSubmit ;
322+ shouldSubmit = blurOnSubmit || ! multiline ;
323+ }
314324 const nativeEvent = e . nativeEvent ;
315325 const isComposing = isEventComposing ( nativeEvent ) ;
316326
@@ -325,7 +335,8 @@ const TextInput: React.AbstractComponent<
325335 ! isComposing &&
326336 ! e . isDefaultPrevented ( )
327337 ) {
328- if ( ( blurOnSubmit || ! multiline ) && onSubmitEditing ) {
338+ // submitBehavior === 'newline' means don't submit, just insert newline (default behavior)
339+ if ( shouldSubmit && onSubmitEditing ) {
329340 // prevent "Enter" from inserting a newline or submitting a form
330341 e . preventDefault ( ) ;
331342 nativeEvent . text = e . target . value ;
0 commit comments