diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt b/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt index 677d563ccd..dc4e1d0491 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt @@ -393,8 +393,13 @@ class KeyboardAnimationCallback( "KeyboardController::" + if (!isKeyboardVisible) "keyboardDidHide" else "keyboardDidShow", getEventParams(keyboardHeight), ) - // dispatch `onMove` to update RN animated value and `onEnd` to indicate that transition finished - listOf(KeyboardTransitionEvent.Move, KeyboardTransitionEvent.End).forEach { eventName -> + // dispatch full lifecycle of onStart/onMove/onEnd events to update RN animated value and + // keep imperative hooks like `useKeyboardHandler` in sync + listOf( + KeyboardTransitionEvent.Start, + KeyboardTransitionEvent.Move, + KeyboardTransitionEvent.End, + ).forEach { eventName -> context.dispatchEvent( eventPropagationView.id, KeyboardTransitionEvent(