from react-native docs :
When running on Android TV the Android framework will automatically
apply a directional navigation scheme based on the relative position
of focusable elements in your views. The Touchable mixin has code
added to detect focus changes and use existing methods to style the
components properly and initiate the proper actions when the view is
selected using the TV remote, so TouchableWithoutFeedback,
TouchableHighlight, TouchableOpacity, and TouchableNativeFeedback will
work as expected. In particular:
onFocus will be executed when the touchable view goes into focus
onBlur will be executed when the touchable view goes out of focus
onPress will be executed when the touchable view is actually selected by pressing the "select" button on the TV remote.
so adding onfocus on TouchableOpacity should work for you the reason it is not you need some changes in AndroidManifest.xml to activate android tv mode
<!-- Add custom banner image to display as Android TV launcher icon -->
<application
...
android:banner="@drawable/tv_banner"
>
...
<intent-filter>
...
<!-- Needed to properly create a launch intent when running on Android TV -->
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
...
</application>
also, you can use tvParallaxProperties and hasTVPreferredFocus to show the initial focus but it has limited effects
<TouchableHighlight
hasTVPreferredFocus
tvParallaxProperties={{ magnification: 1.2 }}
>
<Text>Button</Text>
</TouchableHighlight>
https://reactnative.dev/docs/touchableopacity#tvparallaxproperties-android