[0.24][RN 0.83] Remote Select never invokes onPress (focus works)

:backhand_index_pointing_right: Bug Description


1. Summary

On Vega SDK 0.24 / React Native 0.83 / Kepler 4, remote Select (and Enter) never invokes onPress on the focused pressable. We originally used TouchableOpacity but I also tried Pressable and View with no luck. D-pad focus works. The same Select event does arrive on useTVEventHandler as eventType: 'select' | 'enter'.

This blocks our RN 0.72 → 0.83 migration: users cannot activate CTAs (sign-in, roadblock, tiles) unless we bypass native onPress.

App Name: Paramount+
App Link on Amazon Appstore (found through Developer Console → Actions column in App List → View on Amazon.com): com.cbs.ott (internal 0.83 QA build, not the store binary)

Bug Severity
Select one that applies

  • Impacts operation of app
  • Blocks current development
  • Improvement suggestion
  • Issue with documentation (If selected, please share the doc link and describe the issue)
  • Other

2. Steps to Reproduce

  1. Build a Kepler 4 / RN 0.83 app with SDK 0.24 and install it on Vega Virtual Device OS 1.2 (aarch64).
  2. Render a focused pressable that logs in onPress (Kepler Pressable, View + isPressable, or TouchableOpacity from react-native).
  3. Move focus onto that control with the D-pad (focus ring / onFocus fires).
  4. Press Select (VVD: inputd-cli button_press KEY_ENTER).
  5. Optionally also subscribe with useTVEventHandler and log event.eventType / event.eventKeyAction.

Component / APIs: onPress on Pressable / TouchableOpacity / pressable View; useTVEventHandler from @amazon-devices/react-native-kepler.

3. Observed Behavior

  • Focus works (onFocus / onBlur, D-pad navigation).
  • Select does not call onPress on any of:
    • Kepler Pressable
    • View with isPressable
    • TouchableOpacity remapped from react-native (activeOpacity={1}, including a fully visible control)
  • useTVEventHandler does receive the key: eventType is 'select' or 'enter', eventKeyAction === 0 (key down).
  • Not a crash. console.log / console.warn are often dropped on this OS; console.error shows as [KeplerScript-JavaScript].

4. Expected Behavior

Select on the focused pressable should fire onPress, as on Kepler 2 / RN 0.72.

4.a Possible Root Cause & Temporary Workaround

Possible cause: RN 0.83 / Fabric / bridgeless event-name normalization (0.24 notes mention media dual-dispatch). Select may be delivered to the TV event path but not mapped onto the focused component’s onPress.

Workaround (VirtualNav only):

import { HWEvent, useTVEventHandler } from '@amazon-devices/react-native-kepler';

const handleTVEvent = useCallback((event: HWEvent) => {
  if (!navHasFocus.current) return;
  if (
    (event.eventType !== 'select' && event.eventType !== 'enter') ||
    event.eventKeyAction !== 0
  ) {
    return;
  }
  handleCenterOnPressRef.current();
}, []);

useTVEventHandler(handleTVEvent);

Callback identity must be stable — Kepler re-subscribes if handleEvent changes. We still pass onPress={handleCenterOnPress} on the center TouchableOpacity; it never fires today. If native onPress is restored, this will double-fire.

This does not fix other pressables in our app (e.g. Show/Hide password).

5. Logs or crash report

Not a crash. No ACR. com.cbs.ott.main stayed in the foreground.

Native layer consumes the key (Consumed key:Return). No onPress / Pressable callback follows. JS console.log/warn are often dropped on this OS; we would still expect a CTA navigation side-effect, which did not happen.

6. Environment

SDK Version: 0.24.9914 (vega --version; Vega CLI 1.3.2)
React Native Version: RN 0.83 (@amazon-devices/react-native-kepler 4.0.0)
App State: Foreground
OS Information (cat /etc/os-release on VVD):

NAME="OS"
OE_VERSION="4.0.0"
OS_MAJOR_VERSION="1"
OS_MINOR_VERSION="2"
RELEASE_ID="21"
OS_VERSION="1.2"
BRANCH_CODE="TV Ship"
BUILD_DESC="OS 1.2 (TV Ship/101520710)"
BUILD_FINGERPRINT="1.0.152071.0(9a1d8dfa7da5d600)/101520710N:user/dev-keys"
BUILD_VARIANT="user"
BUILD_TAGS="dev-keys"
BUILD_DATE="Wed Jul 15 22:17:13 UTC 2026"
BUILD_TIMESTAMP="1784153833"
VERSION_NUMBER="2111172071030"

Device: Vega Virtual Device, tv, aarch64. I also previously reproduced the same issue on a physical device with the following details:

BRANCH_CODE=RN83 3P Alpha Release
BUILD_DESC=OS 1.1 (RN83 3P Alpha Release/301)
BUILD_FINGERPRINT=4.0.358278.0(3072cab629675a74)/301N:user/release-keys
VERSION_NUMBER=2101010030120

7. Example Code Snippet / Screenshots / Screengrabs

Fails (focus works, Select does nothing):

import { TouchableOpacity as RNPressable, Text } from 'react-native';

<RNPressable
  onFocus={handleCenterFocus}
  onBlur={handleCenterBlur}
  onPress={handleCenterOnPress}  // never called on Select
  activeOpacity={1}
  hasTVPreferredFocus={false}
>
  <Text>Press</Text>
</RNPressable>

Same failure with Kepler Pressable and View + isPressable + onPress, including a fully visible CTA.


:backhand_index_pointing_right: Playback Issues


N/A


:backhand_index_pointing_right: Additional Context


Hi @Jeff_Cannon,

Thank you for the detailed bug report. We understand this is blocking your RN 0.83 migration.

Our team is looking into the onPress not firing on remote Select with SDK 0.24 / RN 0.83 / Kepler 4. We’ll provide an update as soon as we have more information.

Thanks for helping us improve the Vega platform.

Warm regards,
Aishwarya