If you are using react-navigation, this is affected by the header of the react-navigation. The height of the header is vary on different mobile screen. So you have to get the height of the header and pass into the keyboardVerticalOffset props.
import * as React from 'react'
import { KeyboardAvoidingView } from 'react-native'
import { useHeaderHeight } from '@react-navigation/elements'
type Props = {
children: React.ReactNode
}
export const KeyboardShift = ({ children }: Props) => {
const height = useHeaderHeight()
return (
<KeyboardAvoidingView
keyboardVerticalOffset={height + 47}
behavior="padding"
style={{ flex: 1 }}
enabled>
{children}
</KeyboardAvoidingView>
)
}