From a10d903eba2a20e7c18330e2a99207e276a466d6 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Mon, 4 May 2026 19:51:20 +0300 Subject: [PATCH] defer message send until after textinput resizes --- src/screens/Messages/components/MessageComposer.tsx | 8 ++++++-- src/screens/Messages/components/MessageInput.tsx | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/screens/Messages/components/MessageComposer.tsx b/src/screens/Messages/components/MessageComposer.tsx index 2d1376d521..50e403ca83 100644 --- a/src/screens/Messages/components/MessageComposer.tsx +++ b/src/screens/Messages/components/MessageComposer.tsx @@ -90,7 +90,6 @@ export function MessageComposer({ } clearDraft() - onSendMessage(message) playHaptic() setEmbed(undefined) composerInternalApiRef.current?.clear() @@ -98,6 +97,11 @@ export function MessageComposer({ if (IS_WEB) { composerInternalApiRef.current?.input?.focus() } + + // defer send by a frame so that the textinput resizes before we send the message + requestAnimationFrame(() => { + onSendMessage(message) + }) } const isFlushingAutocorrectSuggestion = useRef(false) @@ -290,7 +294,7 @@ export function ComposerContainer({children}: {children: React.ReactNode}) { paddingHorizontal: interpolate( progress.get(), [0, 1], - [bottomInset, tokens.space.sm], + [bottomInset, tokens.space.md], { extrapolateRight: Extrapolation.CLAMP, extrapolateLeft: Extrapolation.CLAMP, diff --git a/src/screens/Messages/components/MessageInput.tsx b/src/screens/Messages/components/MessageInput.tsx index 082f4d1c4a..6a1d62f336 100644 --- a/src/screens/Messages/components/MessageInput.tsx +++ b/src/screens/Messages/components/MessageInput.tsx @@ -85,7 +85,6 @@ export function MessageInput({ return } clearDraft() - void onSendMessage(message) playHaptic() setEmbed(undefined) setMessage('') @@ -99,6 +98,10 @@ export function MessageInput({ inputRef.current?.focus() }, 100) } + + requestAnimationFrame(() => { + void onSendMessage(message) + }) }, [ needsEmailVerification, hasEmbed,