Giter Club home page Giter Club logo

react-native-tvos / react-native-tvos Goto Github PK

View Code? Open in Web Editor NEW
826.0 826.0 141.0 305.65 MB

React Native repo with additions for Apple TV and Android TV support. https://douglowder.github.io/react-native-apple-tv/

License: MIT License

JavaScript 17.08% Shell 0.46% Objective-C 9.87% Ruby 2.88% HTML 0.01% Objective-C++ 12.11% C 0.38% C++ 26.98% Java 23.87% Assembly 0.11% CMake 0.60% Kotlin 5.09% TypeScript 0.56% Swift 0.01%
android androidtv ios javascript react-native tvos

react-native-tvos's Introduction

react-native-tvos

Apple TV and Android TV support for React Native are maintained here and in the corresponding react-native-tvos NPM package, and not in the core repo. This is a full fork of the main repository, with only the changes needed to support Apple TV and Android TV.

Releases of react-native-tvos will be based on a public release of react-native; e.g. the 0.74.0-0 release of this package will be derived from the 0.74.0 release of react-native. All releases of this repo will follow the 0.xx.x-y format, where x digits are from a specific RN core release, and y represents the additional versioning from this repo.

Releases will be published on npmjs.org and you may find the latest release version here: https://www.npmjs.com/package/react-native-tvos?activeTab=versions or use the tag @latest

You will find the relevant tvOS support and maintenance within the branches marked tvos-v0.xx.x;

To build your project for Apple TV, you should change your package.json imports to import react-native as follows, so that this package is used instead of the core react-native package.

"react-native": "npm:react-native-tvos@latest",

You cannot use this package and the core react-native package simultaneously in a project.

This README covers only TV-specific features. For more general documentation and for changes between versions, you should also see these resources:

Hermes JS support

As of the 0.71 release, Hermes is fully working on both Apple TV and Android TV, and is enabled by default.

React Native new architecture (Fabric) support

  • Apple TV: Modify your app's Podfile to set the :fabric_enabled value to true in both iOS and tvOS targets. After that, run pod install to pick up the additional pods needed for the new architecture. Some components (TVTextScrollView, TabBarIOS) have not been reimplemented in the new architecture so they will show up as an "unimplemented component".
  • Android TV: To enable Fabric, modify android/gradle.properties in your app and set newArchEnabled=true, then rebuild your app.

As of the 0.74 release, bridgeless is the default when Fabric is enabled.

Known issue: The TVFocusGuide autofocus API has problems on Apple TV when bridgeless is enabled. If you need to use Fabric without bridgeless on Apple TV, you can override the default by adding the method below in AppDelegate.mm:

- (BOOL)bridgelessEnabled
{
  return false;
}

Typescript

Typescript types for TV-specific components and APIs have been added to types/public.

General support for TV

TV device support has been implemented with the intention of making existing React Native applications "just work" on TV, with few or no changes needed in the JavaScript code for the applications.

The RNTester app supports Apple TV and Android TV. In this repo, RNTester/Podfile and RNTester/RNTesterPods.xcodeproj have been modified to work for tvOS.

Minimum operating system versions:

  • Apple TV: tvOS 13.4
  • Android TV:
    • API level 21 (for the 0.73 releases)
    • API level 23 (for the 0.74 release)

Build changes

  • Native layer for Apple TV: React Native Xcode projects all now have Apple TV build targets, with names ending in the string '-tvOS'. Changes in the React Native podspecs in 0.73 now require that your application Podfile only have one target. This repo supports either an iOS target or a tvOS target, but both targets should not be active at the same time. The new app template now has the iOS target commented out.
  • Maven artifacts for Android TV: In 0.71 and later releases, the React Native Android prebuilt archives are published to Maven instead of being included in the NPM. We are following the same model, except that the Maven artifacts will be in group io.github.react-native-tvos instead of com.facebook.react. The @react-native/gradle-plugin module has been upgraded so that the Android dependencies will be detected correctly during build.

(New) Project creation using the Expo CLI

Pitfall: Make sure you do not globally install react-native or react-native-tvos. If you have done this the wrong way, you may get error messages like ld: library not found for -lPods-TestApp-tvOS.

We strongly recommend Yarn as the package manager. You should install yarn globally, as it should be used instead of npm for working in React Native projects.

To create a new project, use yarn create react-native-app as shown below. (This will install the Expo tool create-react-native-app for you if it is not already present.)

New projects created this way will automatically have properly configured iPhone and Apple TV targets created in their XCode projects, and will have the Android manifest correctly configured for both Android phone and Android TV. New projects are set up to use the Expo CLI; the Expo dependency and react-native.config.js are included in the new app template.

# Init an app called 'TestApp', note that you must not be in a node module (directory with node_modules sub-directory) for this to work
yarn create react-native-app TestApp --template https://github.com/react-native-tvos/react-native-template-typescript-tv/tree/tv-release-0.73.0 --template-path template
cd TestApp
# Now build and start the app in the tvOS Simulator - this will only work on a macOS machine.
# This command can also be run via "yarn tvos".
npx expo run:ios --scheme MyApp-tvOS --device "Apple TV"
# You can also build and start the app on an iOS phone simulator.
# This command can also be run via "yarn ios".
npx expo run:ios
# or specify a simulator:
npx expo run:ios --scheme MyApp --device "iPhone 15"
# This command builds and starts the app in an Android TV emulator or a phone emulator (needs to be created in advance).
# This command can also be run via "yarn android".
npx expo run:android --device tv_api_31

See this document for more details on Expo CLI functionality. (Note that many of these features require that Expo SDK modules be built into your app. Expo SDK support requires a different project configuration as described below.)

(New) Using the Expo SDK with TV apps

See the Building Expo apps for TV guide from Expo for details, including supported Expo modules and limitations.

Expo SDK 50 or greater, and react-native-tvos 0.73.x or later, are required.

(New) How to support TV specific file extensions

The template contains an example Metro configuration that allows Metro to resolve application source files with TV-specific code, indicated by specific file extensions (e.g. *.ios.tv.tsx, *.android.tv.tsx, *.tv.tsx). The config will work the same way with the other standard source file extensions (.js, etc.), as documented in Metro docs

When this is enabled, Metro will resolve files in the following order of preference (and similarly for the other supported file extensions):

  • file.ios.tv.tsx or file.android.tv.tsx
  • file.tv.tsx
  • file.ios.tsx or file.android.tsx
  • file.tsx

This config is not enabled by default, since it will impact bundling performance, but is available for developers who need this capability.

Code changes

  • JavaScript layer: Support for TV has been added to the Platform React Native API.
var Platform = require('Platform');
var running_on_tv = Platform.isTV;

// If you want to be more specific and only detect devices running tvOS
// (but no Android TV devices) you can use:
var running_on_apple_tv = Platform.isTVOS;
  • Common codebase for iOS and tvOS: Since tvOS and iOS share most Objective-C and JavaScript code in common, most documentation for iOS applies equally to tvOS. Apple TV specific changes in native code are all wrapped by the TARGET_OS_TV define. These include changes to suppress APIs that are not supported on tvOS (e.g. web views, sliders, switches, status bar, etc.), and changes to support user input from the TV remote or keyboard.

  • Common codebase for Android phone and Android TV: Apps built for Android using this repo will run on both Android phone and Android TV. Most of the changes for TV are specific to handling focus-based navigation on a TV using the D-Pad on the remote control.

  • Access to touchable controls: 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 and TouchableOpacity will "just work" on both Apple TV and Android TV. 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 (center button on Apple TV remote, or center button on Android TV DPad).
    • onLongPress will be executed twice if the "select" button is held down for a length of time. The two events passed into onLongPress() will have different values for their eventKeyAction property, 0 for key down (start) and 1 for key up (end).
  • Pressable controls: The Pressable API works with TV. Additional onFocus and onBlur props are provided to allow you to customize behavior when a Pressable enters or leaves focus. Similar to the pressed state that is true while a user is pressing the component on a touchscreen, the focused state will be true when it is focused on TV. PressableExample in RNTester has been modified appropriately. The onPress() and onLongPress() methods work the same way as with Touchable components.

  • TV remote/keyboard input: Application code that needs to implement custom handling of TV remote events can create an instance of TVEventHandler and listen for these events. For a more convenient API, we provide useTVEventHandler.

import { TVEventHandler, useTVEventHandler } from 'react-native';

// Functional component

const TVEventHandlerView: () => React.Node = () => {
  const [lastEventType, setLastEventType] = React.useState('');

  const myTVEventHandler = evt => {
    setLastEventType(evt.eventType);
  };

  useTVEventHandler(myTVEventHandler);

  return (
    <View>
      <TouchableOpacity onPress={() => {}}>
        <Text>
          This example enables an instance of TVEventHandler to show the last
          event detected from the Apple TV Siri remote or from a keyboard.
        </Text>
      </TouchableOpacity>
      <Text style={{color: 'blue'}}>{lastEventType}</Text>
    </View>
  );

};

// Class based component

class Game2048 extends React.Component {
  _tvEventHandler: any;

  _enableTVEventHandler() {
    this._tvEventHandler = new TVEventHandler();
    this._tvEventHandler.enable(this, function(cmp, evt) {
      if (evt && evt.eventType === 'right') {
        cmp.setState({board: cmp.state.board.move(2)});
      } else if(evt && evt.eventType === 'up') {
        cmp.setState({board: cmp.state.board.move(1)});
      } else if(evt && evt.eventType === 'left') {
        cmp.setState({board: cmp.state.board.move(0)});
      } else if(evt && evt.eventType === 'down') {
        cmp.setState({board: cmp.state.board.move(3)});
      } else if(evt && evt.eventType === 'playPause') {
        cmp.restartGame();
      }
    });
  }

  _disableTVEventHandler() {
    if (this._tvEventHandler) {
      this._tvEventHandler.disable();
      delete this._tvEventHandler;
    }
  }

  componentDidMount() {
    this._enableTVEventHandler();
  }

  componentWillUnmount() {
    this._disableTVEventHandler();
  }
  • Flipper: We do not support Flipper.

  • LogBox: The LogBox error/warning display (which replaced YellowBox in 0.63) is working as expected on TV platforms, after a few adjustments to make the controls accessible to the focus engine.

  • Dev Menu support: On the Apple TV simulator, cmd-D will bring up the developer menu, just like on iOS. To bring it up on a real Apple TV device, make a long press on the play/pause button on the remote. (Please do not shake the Apple TV device, that will not work :) ). Android TV dev menu behavior is the same as on Android phone.

  • TV remote animations on Apple TV: RCTTVView native code implements Apple-recommended parallax animations to help guide the eye as the user navigates through views. The animations can be disabled or adjusted with new optional view properties.

  • Back navigation with the TV remote menu button: The BackHandler component, originally written to support the Android back button, now also supports back navigation on the Apple TV using the menu button or '<' button on the Apple TV remote, and the back button as usual on Android TV remote.

  • TVEventControl for AppleTV: (Formerly "TVMenuControl") This module provides methods to enable and disable features on the Apple TV Siri remote:

    • enableTVMenuKey/disableTVMenuKey: Method to enable and disable the menu key gesture recognizer, in order to fix an issue with Apple's guidelines for menu key navigation (see facebook/react-native#18930). The RNTester app uses these methods to implement correct menu key behavior for back navigation.
    • enableTVPanGesture/disableTVPanGesture: Methods to enable and disable detection of finger touches that pan across the touch surface of the Siri remote. See TVEventHandlerExample in the RNTester app for a demo.
    • enableGestureHandlersCancelTouches/disableGestureHandlersCancelTouches: Methods to turn on and turn off cancellation of touches by the gesture handlers in RCTTVRemoteHandler (see #366). Cancellation of touches is turned on (enabled) by default in 0.69 and earlier releases.
  • TVFocusGuideView: This component provides support for Apple's UIFocusGuide API and is implemented in the same way for Android TV, to help ensure that focusable controls can be navigated to, even if they are not directly in line with other controls. An example is provided in RNTester that shows two different ways of using this component.

    Prop Value Description
    destinations any[]? Array of Components to register as destinations of the FocusGuideView
    autoFocus boolean? If true, TVFocusGuide will automatically manage focus for you. It will redirect the focus to the first focusable child on the first visit. It also remembers the last focused child and redirects the focus to it on the subsequent visits. destinations prop takes precedence over this prop when used together.
    focusable boolean? When set to false, this view and all its subviews will be NOT focusable.
    trapFocus* (Up, Down, Left, Right) Prevents focus escaping from the container for the given directions.

    More information on the focus handling improvements above can be found in this article.

    • Next Focus Direction: the props nextFocus* on View should work as expected on iOS too (previously android only). One caveat is that if there is no focusable in the nextFocusable* direction next to the starting view, iOS doesn't check if we want to override the destination.

    • TVTextScrollView: On Apple TV, a ScrollView will not scroll unless there are focusable items inside it or above/below it. This component wraps ScrollView and uses tvOS-specific native code to allow scrolling using swipe gestures from the remote control.

  • VirtualizedList: We extend VirtualizedList to make virtualization work well with focus management in mind. All of the improvements that we made are automatically available to all the VirtualizedList based components such as FlatList.

    • Defaults
      • VirtualizeList contents are automatically wrapped with a TVFocusGuideView with trapFocus* properties enabled depending on the orientation of the list. This default makes sure that focus doesn't leave the list accidentally due to a virtualization issue etc. until reaching the beginning or the end of the list.

    New Props:

    Prop Value Description
    additionalRenderRegions {first: number; last: number;}[]? Array of RenderRegions that allows you to define regions in the list that are not subject to virtualization, ensuring they are always rendered. This is particularly useful for preventing blank areas in critical parts of the list. These regions are rendered lazily after the initial render and are specified as an array of objects, each with first and last indices marking the beginning and end of the non-virtualized region based on index. See the feature proposal for more context.

react-native-tvos's People

Contributors

bestander avatar cipolleschi avatar cortinico avatar cpojer avatar davidaurelio avatar fkgozali avatar frantic avatar hramos avatar ide avatar janicduplessis avatar javache avatar joshuagross avatar martinbigio avatar mdvacca avatar mhorowitz avatar mkonicek avatar motiz88 avatar nickgerleman avatar nicklockwood avatar philiip avatar rickhanlonii avatar rsnara avatar rubennorte avatar sahrens avatar sammy-sc avatar shergin avatar tadeuzagallo avatar thesavior avatar vjeux avatar yungsters avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-tvos's Issues

tvOS: onFocus issue

is there any way that onFocus and onBlur works on View component on tvOS?
i have a list inside my View component and i want to catch the onfocus and onblur when user focus on that View.
i added hasTVPreferredFocus prop on View but no luck
here is my code sample :
<View hasTVPreferredFocus={true} onFocus={() => console.log('focus')} style={homeScreenStyles.sliderRowContainer}> { sliderData.map((item, index) => { return <Text>{item.title}}</Text> }) } </View>
react native : 0.59.9

Fork update and release process

@dlowder-salesforce I'm interested in knowing more about how you keep this project in sync with the upstream RN and maintain the tvOS/CTV related changes on top of that. We may end up using this in the future for work, and I'd love the ability to help keep this fork up to date with latest!

I really appreciate that this repo exists and keeps pushing forward improvements for the CTV experience!

How to programmatically select and focus a touchable opacity component in tvOS ?

Hi, I've been trying to implement a screen on tvOS that has a lot of touchable opacity elements(say movie cards, list elements, etc) and I want to programmatically focus a particular element when some action is performed, say to programmatically select a particular touchable opacity element on back navigation.
I tried to implement hasTVPreferredFocus = {true}, but this property only focuses on the nearest focusable view from the top left corner of the screen, despite the item it was set to.
Any help would be appreciated.

TextInput on focus ignores placeholderTextColor

Hi, first of all thanks for maintaining react-native-tvos I really love it! However I came across a strange issue with TextInputs. I made some primitive styling and once I tried to move around the screen I noticed that after focusing on TextInput it sets placeholder color back to black. I'm not sure if that's a bug or I just don't know how to use it.

IDEs:
Xcode: 11.1/11A1027 - /usr/bin/xcodebuild
npmPackages:
react: 16.9.0 => 16.9.0
react-native-tvos: 0.61.2-0
npmGlobalPackages:
react-native-cli: 2.0.1
react-native-git-upgrade: 0.2.7

Steps To Reproduce

<TextInput
placeholder="Some text"
placeholderTextColor="red"
style={style.AwesomeStyle}
onChangeText={ do stuff... }
/>

AwesomeStyle: {
paddingVertical: 15,
fontSize: 14,
},

tvOS: TouchableOpacity elements cannot change focus if rendered below an overlay view

The TouchableOpacity elements cannot change focus if they are rendered below an overlay view in tvOS. This issue is not present in Android TV.

I have created a issue reproducible repo here https://github.com/keshavkaul/react-native-tvos-focus-issue-example

We need to run animations on top of TouchableOpacity buttons and be able to change focus of the buttons. Any quick fix anyone might suggest will be really helpful. Thanks!

Also, If I were to start digging deeper into this issue, in which file do I start researching this?

React Native version:

System:
    OS: macOS 10.15.1
    CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
    Memory: 41.16 MB / 8.00 GB
    Shell: 5.7.1 - /usr/local/bin/zsh
  Binaries:
    Node: 10.16.3 - ~/.nvm/versions/node/v10.16.3/bin/node
    Yarn: 1.21.1 - /usr/local/bin/yarn
    npm: 6.13.4 - ~/.nvm/versions/node/v10.16.3/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
  IDEs:
    Android Studio: 3.4 AI-183.6156.11.34.5692245
    Xcode: 11.2.1/11B500 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native-tvos:  0.61.5-0 
  npmGlobalPackages:
    react-native-cli: 2.0.1

Steps To Reproduce

  1. Install and Run the linked Repo on tvOS.
  2. Try to move the focus from the middle button.
  3. Focus doesn't change from the middle button.

Describe what you expected to happen:
Expected the focus to change from the middle button

Snack, code example, screenshot, or link to a repository:

Repo link
https://github.com/keshavkaul/react-native-tvos-focus-issue-example

NOTE: This issue is not present in Android TV. We can use the linked repo to run on Android TV to see the behaviour.

Why tvOS is a fork and not a module?

updated:

Summary: see title which was updated several times, by multiple people, and is now a question.

Resolution: see below - agreed on my part

Original rationale:

I did not realize until after I merged brodybits/create-react-native-module#91 that tvOS was actually moved into its own package separate from the core react-native package. I then raised facebook/react-native-website#1250 to add this to the documents.

original idea now withdrawn on my part:

But I am now wondering if we could find a way to improve on a couple things.

It seems to me that this repo is a full-blown fork of react-native. I think it would be been nicer if react-native-tvos would use react-native as a dependency, and reuse as much as possible, in a similar fashion to react-native-windows, react-native-dom, and react-native-turbolinks.

I can think of the following reasons:

  • support combination with other platforms such as Windows, DOM, and possibly macOS more cleanly
  • applications and native modules can always use react-native from the standard place
  • enable applications and native modules to use react-native patch updates

(I would also like to see a similar idea applied for react-native-macos.)

more details withdrawn on my part

I think this would be a breaking change that should target an upcoming react-native release, perhaps 0.61.

Unfortunately I don't have so much time to look into this idea right now, hope I can take a look someday.

an old update now withdrawn on my part P.S. I now think that tvOS should be built from its own `tvos` subdirectory, see my response below.

menu button not working on Alert

when the Alert.alert() show then the menu button is not working.
i want if user wants to dismiss the alert with menu button so what is the workaround ?

tvOS: TextInput backgroundColor style prop has inconsistent UI when highlighted.

Screenshot 2019-10-18 at 2 59 37 PM

React Native version: [email protected]

Code

<TextInput style={styles.textInput} placeholder="Email Address" />
const styles = StyleSheet.create({
    textInput: {
        backgroundColor: '#D5D5D5',
        height: 72,
        textAlign: 'center',
        fontSize: 32,
        fontWeight: '300',
        marginBottom: 28,
  },
})

Describe what you expected to happen:

TextInput has default tvOS UI experience that I need to customize. Providing styling to TextInput should disable that default tvOS UI experience.

Snack, code example, screenshot, or link to a repository:

JSON value 'none' of type NSString cannot be converted to NSNumber message

Hello. I created a new project with the latest version (react-native init testApp --version=react-native@npm:react-native-tvos@latest).

After installation, i ran pod install inside the ios folder

The App is correctly build but i have 2 error messages
JSON value 'dark-content' of type NSString cannot be converted to NSNumber
JSON value 'none' of type NSString cannot be converted to NSNumber message

Capture d’écran 2019-10-17 à 09 11 36

Did i made a mistake during installation ? Thank you very much

My config

  • Binaries:
    Node: 10.16.0 - /usr/local/bin/node
    Yarn: 1.19.0 - /usr/local/bin/yarn
    npm: 6.9.0 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  • SDKs:
    iOS SDK:
    Platforms: iOS 13.0, DriverKit 19.0, macOS 10.15, tvOS 13.0, watchOS 6.0
    Android SDK:
    API Levels: 27, 28
    Build Tools: 28.0.3
  • IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5900203
    Xcode: 11.0/11A420a - /usr/bin/xcodebuild
  • npmPackages:
    react: 16.8.6 => 16.8.6
    react-native-tvos: 0.60.4-6

Unable to compile TestApp project for tvOS

  1. As per instruction given, created a react native project :
    react-native init TestApp --version=react-native@npm:[email protected]

  2. Did a pod install

  3. Open xcode workspace and select TestApp target for ios, build is successful.

  4. Whereas if we select TestApp-tvos target. Tried to compile for AppleTV, but build fails.
    ld: library not found for -lPods-TestApp-tvOS
    clang: error: linker command failed with exit code 1 (use -v to see invocation)


Build target TestApp-tvOS_2019-09-05T15-07-38.txt

Pointer events "none" not working in android

Pointer event "none" is not working in android, but working fine in tvOS. Well my issue is i have a react navigation modal which is a transparent modal. So when this navigation modal comes to focus all the touchable in the previous screen get focused when i try to make some action in current modal. I have also tried the enableScreens() from react-native-screens. So what i'm doing is i'm adding a pointer events none when the stack looses its focus. So this is working fine and perfect in tvOS, but not in android.
And i'm adding pointer events none for a Flatlist which renders touchable items.

React Native version:
react-native-tvos: 0.62.2-1

Steps To Reproduce

  1. Add pointer events "none" to a view.
  2. Try to get focus using directional pad, the touchable gets focused even if the parent is provided with pointer events none

Expected behaviour

Expected behaviour is touchable item shouldn’t focus if the parent view is provided with pointer events none

React Native Library for TV

I want to create a Native Module in React Native for TV.
The process works fine for iPhone but NOT for TV
for iOS : no tv target was created so I adjust it in Xcode to tv platform
After Embedding the library in RN project and access native module function I get errors "Cannot read property 'functionalists' of undefined"
React Native version:0.59.8 (for tv only this version works)

Steps To Reproduce

Reference : https://medium.com/wix-engineering/creating-a-native-module-in-react-native-93bab0123e46

Waiting for your answer ASAP
Thanks!

Focus system ignores disabled prop in touchables

Setting the disabled prop on touchables has no effect on the ability to focus the touchable. onPress is not triggered when the select button is pressed, as expected.

I wanted to try with RN's Pressable component but it doesn't look like we have merged 0.63 yet.

I am testing on android by the way, not sure if it happens on tvos. Decided to report here because it doesn't look like RN core wants to support TV devices anymore.

React Native version:

System:
    OS: Linux 5.4 Ubuntu 18.04.5 LTS (Bionic Beaver)
    CPU: (8) x64 Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz
    Memory: 242.80 MB / 15.52 GB
    Shell: 4.4.20 - /bin/bash
  Binaries:
    Node: 10.22.0 - /usr/bin/node
    Yarn: 1.21.1 - /usr/bin/yarn
    npm: 6.14.6 - /usr/bin/npm
    Watchman: 4.9.0 - /home/linuxbrew/.linuxbrew/bin/watchman
  SDKs:
    Android SDK: Not Found
  IDEs:
    Android Studio: Not Found
  Languages:
    Java: 11.0.8 - /usr/bin/javac
    Python: 2.7.17 - /usr/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: ^16.13.1 => 16.13.1 
    react-native: Not Found
    react-native-tvos:  0.62.2-1 
  npmGlobalPackages:
    *react-native*: Not Found

Steps To Reproduce

  1. Create an app with several touchables, some of them disabled
  2. Cycle through the touchables with directional pad actions (up down left right)

Describe what you expected to happen:
Expected the focus system to skip disabled touchables

Snack, code example, screenshot, or link to a repository:

import React from 'react'
import { View, TouchableOpacity, Text } from 'react-native'

const App = () => {
  return (
    <View>
      <TouchableOpacity hasTVPreferredFocus style={{ backgroundColor: '#000'}}>
        <Text style={{ color: '#fff'}}>Button 1</Text>
      </TouchableOpacity>
      <TouchableOpacity disabled style={{ backgroundColor: '#000'}}>
        <Text style={{ color: '#fff'}}>Button 2</Text>
      </TouchableOpacity>
    </View>
  )
}

export default App

How many active users and developers?

Survey from an outsider:

I was wondering who is using this project and not in secret?

How many developers are actively supporting this platform?

How much commercial interest is out there?

P.S. Adding a quick disclaimer that I am just an interested outsider on this project.

impossible to build/run after moving code to another folder

React Native version:
System:
OS: macOS 10.15.2
CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
Memory: 24.83 GB / 64.00 GB
Shell: 5.7.1 - /bin/zsh
Binaries:
Node: 13.4.0 - /usr/local/bin/node
Yarn: 1.19.2 - /usr/local/bin/yarn
npm: 6.13.4 - /usr/local/bin/npm
SDKs:
iOS SDK:
Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
IDEs:
Xcode: 11.2.1/11B500 - /usr/bin/xcodebuild
npmPackages:
react: 16.9.0 => 16.9.0
react-native-tvos: 0.61.5-0

Steps To Reproduce

  1. react-native init TestApp --version=react-native@npm:react-native-tvos@latest
  2. cd TestApp && react-native run-ios --simulator "Apple TV" --scheme "TestApp-tvOS"
  3. The app runs in the simulator!
  4. rename the TestApp folder
  5. using the same command, the app does not run.
error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening tv.xcworkspace. Run CLI with --verbose flag for more details.
User defaults from command line:
    IDEDerivedDataPathOverride = /Users/vgrafe/Documents/code/tvasd/ios/build/tv-tvOS

note: Using new build system
note: Planning build
note: Constructing build description
CreateBuildDirectory /Users/vgrafe/Documents/code/tvasd/ios/build/tv-tvOS/Build/Products (in target 'Folly-tvOS' from project 'Pods')
    cd /Users/vgrafe/Documents/code/tvasd/ios/Pods
    builtin-create-build-directory /Users/vgrafe/Documents/code/tvasd/ios/build/tv-tvOS/Build/Products

Describe what you expected to happen:

I'd expect it to work. I know this sounds like a silly use case, but I'll explain how I found this: I am trying to build a monorepo with yarn workspaces to share code/components between TV apps and other platforms. For some reason, I have the exact same error when initializing the project in the workspace folder! So weird. So I decided to init in an external folder and then move the files. Then I found this issue.

Thanks for any help!

iOS Dictation TextInput ends abruptly between words (0.59 and npm:[email protected])

Using dictation mode on a TextInput in iOS works partially. It only writes 1 word down then the dictation ends. (on react-native apple tv)

I am using react-native for apple tv and I tried with 0.59.9
xcode 11.3

it only grabs one word. I tried the debounce from
#18890 and it didn't help. However, when I am in debug mode it works fine so I think something is wrong with the timeline issue.

Try using iOS dictation in the TextInput. Be sure to use a long sentence...

Expected Behavior
I expect the TextInput to capture the entire dictation.

Actual Behavior
The dictation will end abruptly between words.

TVMenuControl module isn't working with React Native Navigation.

So I have been working on a project using React Native Navigation and been seeing some problems with TVMenuControl Module for disabling and enabling (it's not working) I believe it's related to how React Native Navigation basically on every screen navigation sets that screen as the RootView.

I also noticed that the bridge is working fine but the issue might be with NSNotificationCenter it's not posting the notification.

React Native version: 0.62

Steps To Reproduce

  1. Use React Native Navigation
  2. Navigate to a new screen
  3. call disableTVMenuKey it doesn't work

React Native Init doesn't work for TVOS

When creating new project with the following command the xcode project doesn't being compiled to tvOS:
react-native init TestApp --version=react-native@npm:[email protected]
The error which being thrown by xcode is library not found for -lPods-projectName-tvOS

React Native version:
System:
OS: macOS 10.14.5
CPU: (12) x64 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
Memory: 9.14 GB / 32.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 10.16.0 - /usr/local/bin/node
npm: 6.10.3 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.4, macOS 10.14, tvOS 12.4, watchOS 5.3
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: 10.3/10G8 - /usr/bin/xcodebuild
npmPackages:
react: 16.8.6 => 16.8.6
react-native: 0.60.5 => 0.60.5
npmGlobalPackages:
create-react-native-app: 2.0.2
react-native-cli: 2.0.1

Steps To Reproduce

  1. Install react-native
  2. run the command react-native init TestApp --version=react-native@npm:[email protected]
  3. cd project/ios
  4. pod install
  5. Open Xcode workspace
  6. change to tvOS and build

Error: library not found for -lPods-projectName-tvOS

Describe what you expected to happen:
The project should be compiled to tvOS

CocoaLibEvent does not contain bitcode

After fresh setup according to docs, tvOS build encounters error:

ios/Pods/CocoaLibEvent/lib_tvos/libevent.a(event.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

CocoaLibEvent is something that Flipper seems to require, and I can't find any proper info on how to enable bitcode for CocoaLibEvent pod.

If I comment out the references to everything related to Flipper in the Podfile, and comment out everything related to Flipper, the app runs.

React Native version:

info Fetching system and libraries information...
System:
OS: macOS 10.15.5
CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
Memory: 1.80 GB / 32.00 GB
Shell: 5.7.1 - /bin/zsh
Binaries:
Node: 10.17.0 - /usr/local/opt/node@10/bin/node
Yarn: 1.22.4 - ~/.yarn/bin/yarn
npm: 6.11.3 - /usr/local/opt/node@10/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.9.1 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: iOS 13.5, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
Android SDK:
API Levels: 23, 24, 26, 28, 29
Build Tools: 28.0.3, 29.0.0
System Images: android-27 | Android TV Intel x86 Atom, android-28 | Android TV Intel x86 Atom, android-29 | Google APIs Intel x86 Atom, android-Q | Android TV Intel x86 Atom
Android NDK: Not Found
IDEs:
Android Studio: 3.6 AI-192.7142.36.36.6241897
Xcode: 11.5/11E608c - /usr/bin/xcodebuild
Languages:
Java: 1.8.0_131 - /usr/bin/javac
Python: 2.7.13 - /Library/Frameworks/Python.framework/Versions/2.7/bin/python
npmPackages:
@react-native-community/cli: Not Found
react: 16.11.0 => 16.11.0
react-native: Not Found
react-native-tvos: 0.62.2-0

Steps To Reproduce

  1. npx react-native init MyApp --template=react-native-tvos@latest
  2. Open Xcode to run on connected AppleTV 4K

Describe what you expected to happen:

The thing actually runs without adjustments, or at least a mention of this gotcha in the readme :)

click remote "menu" btn doesn't go back prev screen in navigation - exits app

I've developed a RN ATV app that uses react navigation; from my main menu if

React Native version:
System:
OS: macOS Mojave 10.14.4
CPU: (12) x64 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
Memory: 3.64 GB / 16.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 12.3.0 - ~/.nvm/versions/node/v12.3.0/bin/node
Yarn: 1.21.1 - ~/.yarn/bin/yarn
npm: 6.9.0 - ~/.nvm/versions/node/v12.3.0/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
Android SDK:
API Levels: 23, 25, 26, 28
Build Tools: 27.0.3, 28.0.3
System Images: android-28 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: 11.2.1/11B53 - /usr/bin/xcodebuild npmPackages:
react: 16.9.0 => 16.9.0
react-native-tvos: 0.61.2-0 => 0.61.5-0

Steps To Reproduce

  1. Click on the main menu of my app to navigate to another screen
    => (navigation.navigate('groupsRoute');
  2. Do some action on this screen, then click the "Menu" button on the Apple Remote
  3. App is exited to Apple TV home screen.

Expected to navigate to the previous screen in the stack - NOT exit the app unless on Home screen.

Snack, code example, screenshot, or link to a repository:
The menu button click is not being captured by TVEventHandler - it just exits the app
this._tvEventHandler.enable(this, (cmp, evt) => {
if (evt.eventType === 'menu') {
setRemoteMenuButtonPressed();
}

TouchableOpacity elements in previous screens in navigation stack are still accessible in next screen

I have a simple navigation stack with 3 screens. To simplify, lets say screen 1 has 3 buttons named button1, button2, etc. Screen 2 has 3 buttons as well. Now, when I go to the second screen, if I am highlighting the first button and I go left, it will go and highlight button3 from screen1 off-screen. I have confirmed this by adding a console.log to each button on every page to identify itself ("button3 on screen one is highlighted" etc).

Is the solution to replace all the buttons with an empty array in screen 1 when I go to screen 2, or is there a more correct way?

Question: tvOS: When using tvos remote, UISearchController keyboard events are not propagated to UISearchBar's Text Input Field

I am trying to Add Search capability in my tvOS App and am facing an issue where when using the tvos remote, the keyboard events are not propagated to the SearchBar's Text Input Field.

Typing on the laptop works though.

I have created a reproducible test repo for your review. (Branch-poc/search-controller)
https://github.com/keshavkaul/react-native-tvos-poc/tree/poc/search-controller

In the repo, I have created a Native UI Component called RNSearchControllerView
The native code is present under src/search-controller/ios/Classes

Any help is most welcome!

My guess for the issue is that react is intercepting the remote's events and not correctly propagating to the target UI

Support the new tvOS13 TabBar

The following behaviour seems to be broken in the new UITabBar on tvOS13. Selecting the

In tvOS, swiping down from the tab bar moves focus into the content view; specifically, to the first focusable view that is visually below the selected tab. Swiping down behaves like a normal focus-changing gesture—that is, focus moves in the direction the user swiped. If nothing is focusable immediately below the selected tab, the closest focusable view is focused instead. In iOS, the tab bar always remains in focus at the bottom of the screen.

React Native version:

System:
    OS: macOS 10.14.6
    CPU: (12) x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
    Memory: 1.37 GB / 32.00 GB
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 10.16.3 - /usr/local/opt/node@10/bin/node
    Yarn: 1.17.3 - /usr/local/bin/yarn
    npm: 6.9.0 - /usr/local/opt/node@10/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 12.4, macOS 10.14, tvOS 12.4, watchOS 5.3
  IDEs:
    Android Studio: 3.1 AI-173.4907809
    Xcode: 10.3/10G8 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native-tvos:  0.60.4-6 
  npmGlobalPackages:
    create-react-native-app: 2.0.2
    react-native-cli: 2.0.1

ld: library not found for -lPods-TestApp-tvOS

I understand this error is mentioned under the Pitfall section of the README, but no where there or in any of the issues I've found does it say how to actually resolve the problem.

The README does mention this might happen if you have react-native or react-native-tvos installed globally, but I do not. See below:

$ npm list -g --depth=0
/usr/local/lib
├── [email protected]
├── [email protected]
└── [email protected]

React Native version:

$ react-native info
info Fetching system and libraries information...
System:
    OS: macOS 10.15.3
    CPU: (8) x64 Intel(R) Core(TM) i7-8569U CPU @ 2.80GHz
    Memory: 2.12 GB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 10.16.0 - /usr/local/bin/node
    npm: 6.9.0 - /usr/local/bin/npm
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
  IDEs:
    Android Studio: 3.6 AI-192.7142.36.36.6241897
    Xcode: 11.3/11C29 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native-tvos:  0.61.5-0 
  npmGlobalPackages:
    react-native-cli: 2.0.1

Steps To Reproduce

  1. In an empty directory, execute $ react-native init TestApp
  2. Open package.json and change the react-native dependency to "react-native": "npm:react-native-tvos@latest" (as described in the README).
  3. Run $ npm update
  4. Run $ react-native run-ios --simulator "Apple TV" --scheme "TestApp-tvOS"

Describe what you expected to happen:

I expect the Apple TV simulator to open and my app to launch. Instead I get the following:

$ react-native run-ios --simulator "Apple TV" --scheme "TestApp-tvOS"
info Found Xcode workspace "TestApp.xcworkspace"
info Building (using "xcodebuild -workspace TestApp.xcworkspace -configuration Debug -scheme TestApp-tvOS -destination id=39713538-894D-407E-83A8-F13CFF6764C0")
................................................
error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening TestApp.xcworkspace. Run CLI with --verbose flag for more details.
note: Using new build system
note: Planning build
note: Constructing build description
CreateBuildDirectory /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products (in target 'TestApp-tvOSTests' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    builtin-create-build-directory /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products

CreateBuildDirectory /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex (in target 'TestApp-tvOSTests' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    builtin-create-build-directory /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex

warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements use a placeholder team ID. To resolve this, select a development team in the TestApp-tvOS editor. (in target 'TestApp-tvOS' from project 'TestApp')
MkDir /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator/TestApp-tvOS.app (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    /bin/mkdir -p /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator/TestApp-tvOS.app

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources/Entitlements-Simulated.plist (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources/Entitlements-Simulated.plist

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources/Entitlements.plist (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources/Entitlements.plist

ProcessProductPackaging "" /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS.app-Simulated.xcent (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    

Entitlements:

{
    "application-identifier" = "FAKETEAMID.com.facebook.REACT.TestApp-tvOS";
    "keychain-access-groups" =     (
        "FAKETEAMID.com.facebook.REACT.TestApp-tvOS"
    );
}


    builtin-productPackagingUtility -entitlements -format xml -o /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS.app-Simulated.xcent

ProcessProductPackaging "" /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS.app.xcent (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    

Entitlements:

{
    "com.apple.security.get-task-allow" = 1;
}


    builtin-productPackagingUtility -entitlements -format xml -o /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS.app.xcent

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS.hmap (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS.hmap

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-project-headers.hmap (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-project-headers.hmap

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-generated-files.hmap (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-generated-files.hmap

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-own-target-headers.hmap (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-own-target-headers.hmap

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/all-product-headers.yaml (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/all-product-headers.yaml

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-all-non-framework-target-headers.hmap (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-all-non-framework-target-headers.hmap

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-all-target-headers.hmap (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-all-target-headers.hmap

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Script-6DE07919B049EAC8BC6A65B5.sh (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Script-6DE07919B049EAC8BC6A65B5.sh

PhaseScriptExecution [CP]\ Check\ Pods\ Manifest.lock /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Script-6DE07919B049EAC8BC6A65B5.sh (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    /bin/sh -c /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Script-6DE07919B049EAC8BC6A65B5.sh

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Script-FD10A7F122414F3F0027D42C.sh (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Script-FD10A7F122414F3F0027D42C.sh

PhaseScriptExecution Start\ Packager /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Script-FD10A7F122414F3F0027D42C.sh (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    /bin/sh -c /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Script-FD10A7F122414F3F0027D42C.sh
Connection to localhost port 8081 [tcp/sunproxyadmin] succeeded!

CompileC /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/AppDelegate.o /Users/xxxxx/Documents/projects/TestApp/ios/TestApp/AppDelegate.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    export LANG=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -target x86_64-apple-tvos9.2-simulator -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu99 -fobjc-arc -fmodules -gmodules -fmodules-cache-path=/Users/xxxxx/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/xxxxx/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -DDEBUG=1 -DCOCOAPODS=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator13.2.sdk -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wno-semicolon-before-method-body -fobjc-abi-version=2 -fobjc-legacy-dispatch -index-store-path /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Index/DataStore -iquote /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-generated-files.hmap -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-own-target-headers.hmap -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-all-target-headers.hmap -iquote /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-project-headers.hmap -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator/include -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/DoubleConversion -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/FBLazyVector -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/FBReactNativeSpec -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/RCTRequired -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/RCTTypeSafety -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-Core -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-RCTBlob -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-RCTText -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-cxxreact -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-jsi -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-jsiexecutor -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-jsinspector -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/ReactCommon -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/Yoga -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/glog -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources-normal/x86_64 -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources/x86_64 -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources -F/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator -MMD -MT dependencies -MF /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/AppDelegate.d --serialize-diagnostics /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/AppDelegate.dia -c /Users/xxxxx/Documents/projects/TestApp/ios/TestApp/AppDelegate.m -o /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/AppDelegate.o
In file included from /Users/xxxxx/Documents/projects/TestApp/ios/TestApp/AppDelegate.m:12:
/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-Core/React/RCTRootView.h:12:17: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified) [-Wnullability-completeness]
extern NSString *const RCTTVEnableMenuKeyNotification;
                ^
/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-Core/React/RCTRootView.h:12:17: note: insert '_Nullable' if the pointer may be null
extern NSString *const RCTTVEnableMenuKeyNotification;
                ^
                  _Nullable 
/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-Core/React/RCTRootView.h:12:17: note: insert '_Nonnull' if the pointer should never be null
extern NSString *const RCTTVEnableMenuKeyNotification;
                ^
                  _Nonnull 
1 warning generated.

WriteAuxiliaryFile /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/TestApp-tvOS.LinkFileList (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    write-file /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/TestApp-tvOS.LinkFileList

CompileC /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/main.o /Users/xxxxx/Documents/projects/TestApp/ios/TestApp/main.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    export LANG=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -target x86_64-apple-tvos9.2-simulator -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu99 -fobjc-arc -fmodules -gmodules -fmodules-cache-path=/Users/xxxxx/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/xxxxx/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -DDEBUG=1 -DCOCOAPODS=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator13.2.sdk -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wno-semicolon-before-method-body -fobjc-abi-version=2 -fobjc-legacy-dispatch -index-store-path /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Index/DataStore -iquote /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-generated-files.hmap -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-own-target-headers.hmap -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-all-target-headers.hmap -iquote /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS-project-headers.hmap -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator/include -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/DoubleConversion -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/FBLazyVector -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/FBReactNativeSpec -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/RCTRequired -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/RCTTypeSafety -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-Core -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-RCTBlob -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-RCTText -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-cxxreact -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-jsi -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-jsiexecutor -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/React-jsinspector -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/ReactCommon -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/Yoga -I/Users/xxxxx/Documents/projects/TestApp/ios/Pods/Headers/Public/glog -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources-normal/x86_64 -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources/x86_64 -I/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/DerivedSources -F/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator -MMD -MT dependencies -MF /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/main.d --serialize-diagnostics /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/main.dia -c /Users/xxxxx/Documents/projects/TestApp/ios/TestApp/main.m -o /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/main.o

Ld /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator/TestApp-tvOS.app/TestApp-tvOS normal x86_64 (in target 'TestApp-tvOS' from project 'TestApp')
    cd /Users/xxxxx/Documents/projects/TestApp/ios
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target x86_64-apple-tvos9.2-simulator -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator13.2.sdk -L/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator -F/Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator -filelist /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/TestApp-tvOS.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/TestApp-tvOS_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -ObjC -lc++ -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/TestApp-tvOS.app-Simulated.xcent -lPods-TestApp-tvOS -Xlinker -dependency_info -Xlinker /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Intermediates.noindex/TestApp.build/Debug-appletvsimulator/TestApp-tvOS.build/Objects-normal/x86_64/TestApp-tvOS_dependency_info.dat -o /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator/TestApp-tvOS.app/TestApp-tvOS
ld: library not found for -lPods-TestApp-tvOS
clang: error: linker command failed with exit code 1 (use -v to see invocation)


** BUILD FAILED **


The following build commands failed:
	Ld /Users/xxxxx/Library/Developer/Xcode/DerivedData/TestApp-addrfwvdnzvqaaddxakoauftueal/Build/Products/Debug-appletvsimulator/TestApp-tvOS.app/TestApp-tvOS normal x86_64
(1 failure)

Question: Can you call a focus event programmatically?

It's a semi-question, semi-suggestion.

I struggle to find any example with calling focus on an element programmatically.
For example, onPress event on one element to trigger onFocus event on the other element.

Is it possible to achieve such behavior? And if so, let's add an example of such functionality.

react-native init command fails to find a correct version

The init command in the README fails due to not finding a matching version.

React Native version:
System:
OS: macOS Mojave 10.14.6
CPU: (4) x64 Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz
Memory: 431.88 MB / 16.00 GB
Shell: 3.0.2 - /usr/local/bin/fish
Binaries:
Node: 10.15.1 - ~/.asdf/installs/nodejs/10.15.1/bin/node
Yarn: 1.17.3 - /usr/local/bin/yarn
npm: 6.4.1 - ~/.asdf/installs/nodejs/10.15.1/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.4, macOS 10.14, tvOS 12.4, watchOS 5.3
IDEs:
Xcode: 10.3/10G8 - /usr/bin/xcodebuild
npmGlobalPackages:
react-native-tvos: 0.60.4-6
react-native: 0.61.1

Steps To Reproduce

  1. npm i -g react-native react-native-tvos
  2. react-native init TestApp --version=react-native@npm:react-native-tvos@latest

Describe what you expected to happen:
The init command to successfully run.

The following is the output of the init command:

✖ Downloading template
error Error: Command failed: yarn add react-native@react-native@npm:react-native-tvos@latest
error Couldn't find any versions for "react-native" that matches "react-native@npm:react-native-tvos@latest"
yarn add v1.17.3
info No lockfile found.
[1/4] Resolving packages...
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

inverted FlatList focus issue

When you focus FlatList item that has inverted set to true it flips item 180 deg. It's a known issue for react-native facebook/react-native#21919 but it looks like "This issue seems to have a really low activity on it" it so I decided to write it here since react-native-tvos is focusing on Apple TV.

React Native version:
IDEs:
Xcode: 11.1/11A1027 - /usr/bin/xcodebuild
npmPackages:
react: 16.9.0 => 16.9.0
react-native-tvos: 0.61.2-0
npmGlobalPackages:
react-native-cli: 2.0.1
react-native-git-upgrade: 0.2.7

Steps To Reproduce

Just create a FlatList with prop: inverted={true}

Describe what you expected to happen:
To focus without a flip

use_frameworks! build error on .63.1-0

I am struggling to build my project after upgrading to .63.1-0 from 60.4-6.

Is it not recommended to add use_frameworks! to the podfile now?

If I add that in the RNTester project's podfile and build I will get this build error:

Undefined symbols for architecture arm64
Symbol: _RCTTVNavigationEventNotification
Referenced from: -[RCTTVRemoteHandler sendAppleTVEvent:toView:] in RCTTVRemoteHandler.o
Undefined symbol: _RCTShowDevMenuNotification

Steps To Reproduce

  1. Add use_frameworks! to RNTester/Podfile
  2. pod install
  3. Open RNTesterPods.xcworkspace
  4. Build
  5. Error occurs during build

I stumbled on this error as I am trying to resolve a different problem. I have had success building without use_frameworks! 🎉 . However I am struggling on a jenkins build and trying to determine the difference between environments. I will post a fix or comment as I work to solve it.

image

TVOS text doesn't scroll down in a ScrollView

Hii, I've been trying to make a scrollable text component for tvos like the one we see in terms and conditions box in a lot of applications. The code works fine for android tv but the text doesn't scroll down in tvos.
REACT NATIVE VERSION: 0.61.2
STEPS TO REPRODUCE
The code snippet is as follows:
<ScrollView style={
{
flex: 1,
paddingTop: getScaledValue(50)
}}
contentContainerStyle={{
alignItems: 'center',
justifyContent: 'center'
}}
removeClippedSubviews={false}
isTVScrollable={true}
< Text style={styles.textH2} >
This is the text portion that needs to be scrolled .............
< /Text >
< /ScrollView >

Any help will be appreciated!

Scaling issues between tvOS and Android TV

I understand that this repository seems to be for tvOS and may not be the right place to report issues about Android TV, although if that's the case, then I have no clue where to actually go for those issues. I'm actually a little frustrated by the TV support for RN because I thought React Native was supposed to automatically support all iOS/Android platforms without creating separate projects, but there seems to be a lot of fragmentation with TV platforms.

Description

When running an app created with this repo on Apple TV (tvOS) everything looks fine. However, when running the same app on Android TV / Fire TV nothing fits within the viewport; it looks like it's zoomed way in (see screenshots below).

I reported this issue several years ago before TV support was spun off from the core React Native project. Original issue is here: Android TV / tvOS scaling display inconsistency.

Back then, I just created a completely separate project for Android, but I'm updating the app I built back then and am trying to get both tvOS and Android TV working off of the same code, instead of having to rewrite two apps.

When running, I can tell (via Dimensions.get('window')) that the screen dimensions are different:

  • Apple TV = 1920 x 1080
  • Fire TV = ~960 x 540

If this is not a bug, then how are React Native developers supposed to handle this? It seems like the options are:

  1. Create two different apps, one for each platform.
  2. Create separate StyleSheets to change component dimensions and font sizes depending on what device it's running on.
  3. Maybe there is some way to auto scale the viewport on Android TV?

What is the recommended approach for this?

Environment

Amazon Fire TV Stick (Fire OS 5.2.6.3 / Android 5.1.1 Lollipop - 1080p @ 60Hz)
Apple TV (4th gen - tvOS 11.4 - 1080p @ 60Hz)

$ react-native info
info Fetching system and libraries information...
System:
    OS: macOS 10.15.3
    CPU: (8) x64 Intel(R) Core(TM) i7-8569U CPU @ 2.80GHz
    Memory: 1.49 GB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 10.16.0 - /usr/local/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.9.0 - /usr/local/bin/npm
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    Android SDK:
      API Levels: 23, 27, 28, 29
      Build Tools: 23.0.1, 27.0.3, 28.0.3, 29.0.2, 29.0.3
      System Images: android-23 | Android TV Intel x86 Atom
  IDEs:
    Android Studio: 3.6 AI-192.7142.36.36.6241897
    Xcode: 11.3/11C29 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native-tvos:  0.61.5-0 
  npmGlobalPackages:
    react-native-cli: 2.0.1

Packages:

  "dependencies": {
    "@react-native-community/async-storage": "^1.8.1",
    "lodash": "^4.17.15",
    "react": "16.9.0",
    "react-native": "npm:[email protected]",
    "react-redux": "^7.2.0",
    "redux": "^4.0.5",
    "redux-persist": "^6.0.0",
    "redux-thunk": "^2.3.0"
  },
  "devDependencies": {
    "@babel/core": "7.8.7",
    "@babel/runtime": "7.8.7",
    "@react-native-community/eslint-config": "0.0.5",
    "babel-jest": "24.9.0",
    "eslint": "6.8.0",
    "jest": "24.9.0",
    "metro-react-native-babel-preset": "0.56.4",
    "react-test-renderer": "16.9.0"
  },

Steps to Reproduce

Build and deploy any app to Apple TV and Fire TV Stick.

Expected Behavior

Both devices, when running at the same resolution (1080p @ 60Hz) should display the same.

Actual Behavior

On the Apple TV, everything looks perfect, but on the Fire TV Stick it looks like everything is super zoomed in and squished.

Apple TV:
Screen Shot 2020-03-18 at 4 15 32 PM

Android TV / Fire TV:
Screen Shot 2020-03-18 at 4 20 29 PM

react-native-tvos releases do not have "android" directory, breaking Android builds

I run:
react-native init TeatTv --version=react-native@npm:[email protected]
then:
react-native run-android

Task :app:compileDebugJavaWithJavac

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings
13 actionable tasks: 13 executed
D:\Program\native\TeatTv\android\app\src\main\java\com\teattv\MainApplication.java:7: ����: �����com.facebook.hermes.reactexecutor������
import com.facebook.hermes.reactexecutor.HermesExecutorFactory;
^
D:\Program\native\TeatTv\android\app\src\main\java\com\teattv\MainApplication.java:8: ����: �Ҳ�������
import com.facebook.react.bridge.JavaScriptExecutorFactory;
^
����: �� JavaScriptExecutorFactory
�: ����� com.facebook.react.bridge
D:\Program\native\TeatTv\android\app\src\main\java\com\teattv\MainApplication.java:9: ����: �Ҳ�������
import com.facebook.react.ReactApplication;

this package.js

"dependencies": {
"react": "16.8.6",
"react-native": "npm:[email protected]"
},

any support for asyncStorage?

when i installed react native asyncStorage and stored some data and then on debugger it shows me warning that tvOS not supporting storage it will be removed any point.
any other way to persist state ? i tried redux-persist same error

a project set up with yarn workspaces won't resolve local imports

Hi! Sorry if this is not the right place to ask this.
I am trying to set up a POC with yarn workspaces in order to reuse components and logic across webapps, RN, and TV. The webapp (created with CRA) resolves the test component (from a package within the monorepo) and renders it without a cough. On the other hand, the RN-TV app crashes: the tv apps renders the following error message in the simulator:

Screen Shot 2020-01-05 at 9 12 27 PM
alt: "bundling failed: Error: Unable to resolve module components/App from index.js: components/App could not be found within the project."

I think my nohoist config is appropriate since the "components" symlink is here in the native's project node_modules folder. I think what is missing is some config on Metro's end, but I don't have much experience there, and could not find proper documentation on this topic (or missed it).

React Native version:

    OS: macOS 10.15.2
    CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
    Memory: 28.88 GB / 64.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 13.4.0 - /usr/local/bin/node
    Yarn: 1.19.2 - /usr/local/bin/yarn
    npm: 6.13.4 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
  IDEs:
    Xcode: 11.2.1/11B500 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0
    react-native-tvos:  0.61.5-0

Steps To Reproduce

  1. clone my repo
  2. cd packages/native
  3. follow those instructions to clean the xcode project
  4. cd in the root folder, then yarn workspace native ios
  5. the simulator will open. You might have to hit cmd+R to see the component rendered.
  6. open the native index.js file, coment line 9, uncomment line 14
  7. see the error message. The component should be rendered but seems to not even be detected in the node_modules. Does react-native have restrictions about symlinks?

This might be a bit cumbersome to get through, but you have no idea how grateful I'd be about any help on this.... It's been days 😅

Custom Fonts are not added to the Info.plist in the tvOS target

This issue was previously reported in the core React Native repository here: Custom fonts won't load on tvOS apps - Unrecognized font family #18025.

Took me hours and hours to figure out what was going on, but a comment in that issue thread led me to figure out that the Info.plist for my -tvos target did not get the fonts added to it after adding them to my assets and running react-native link.

React Native version:

% react-native info
info Fetching system and libraries information...
System:
    OS: macOS 10.15.3
    CPU: (8) x64 Intel(R) Core(TM) i7-8569U CPU @ 2.80GHz
    Memory: 706.13 MB / 16.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 10.16.0 - /usr/local/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.9.0 - /usr/local/bin/npm
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    Android SDK:
      API Levels: 23, 27, 28, 29
      Build Tools: 23.0.1, 27.0.3, 28.0.3, 29.0.2, 29.0.3
      System Images: android-23 | Android TV Intel x86 Atom
  IDEs:
    Android Studio: 3.6 AI-192.7142.36.36.6241897
    Xcode: 11.3/11C29 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native-tvos:  0.61.5-0 
  npmGlobalPackages:
    react-native-cli: 2.0.1

Steps To Reproduce

  1. Follow the instructions in Adding custom fonts in react native 60+
  2. Reference your custom font anywhere in your app and run the tvOS target. You will receive an Unrecognized font family error message.
  3. Run the NON-tvos target and it will work fine.
  4. Compare Info.plist from ios/TestApp with the Info.plist in ios/TestApp-tvOS. You'll notice your fonts are missing.

integration with react-native-video, missing React headers

Hi, I'd like to implement video playback in my TVOS app. I used react-native-tvos to init a project then runs in the apple TV simulator. I npm installed react-native-video which requires manually linking RCTVideo.a in Xcode. However, after adding it, the build fails with missing React headers. For example React/RCTViewManager.h file not found in RCTVideoManager.m.

I don't think it's necessarily an issue with this repo, just wondering if anybody has had similar issues or knows how to fix. Maybe this repo needs to be synced with newest react-native?

I have added custom header search paths, unchecked paralellize build and added React in custom build order, tried editing podfile, different versions ,etc.

Any help or even another good video playback solution appreciated.

Attempted to set a non-object key in a WeakMap with redux in a tvOS 13 project

Hello, i've this error when i include redux in my tvOS project
Attempted to set a non-object key in a WeakMap
I've a blank screen after

React Native version:

System:
OS: macOS Mojave 10.14.6
CPU: (4) x64 Intel(R) Core(TM) i5-4260U CPU @ 1.40GHz
Memory: 20.27 MB / 8.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 10.16.0 - /usr/local/bin/node
Yarn: 1.19.0 - /usr/local/bin/yarn
npm: 6.9.0 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 13.1, DriverKit 19.0, macOS 10.15, tvOS 13.0, watchOS 6.0
Android SDK:
API Levels: 27, 28
Build Tools: 28.0.3
IDEs:
Android Studio: 3.5 AI-191.8026.42.35.5900203
Xcode: 11.1/11A1027 - /usr/bin/xcodebuild
npmPackages:
react: 16.8.6 => 16.8.6
react-native-tvos: 0.60.4-6

Code to reproduce

import { createStore, combineReducers } from 'redux';

//Reducers
import testReducer from 'store/reducers/test';

const rootReducer = combineReducers({
  test:        testReducer,
});

export default function configureStore(initialState) {
  return createStore(
      rootReducer,
      initialState,
  );
}

In the app.js file

import configureStore from 'store/configureStore';
const store = createStore(SettingsReducer);

Thank you in advance

improve documentation of how to install this or other fork of React Native

I think I finally understand it today, while working on something else, how installing from this fork works.

@dlowder-salesforce already described it in brodybits/create-react-native-module#95 (comment) for a custom native module but I think something similar is needed for an existing or new React Native app for tvOS. I think it should be this in case of Yarn (highly recommended):

yarn add react-native@npm:react-native-tvos

or for a specific version or tag name (I am showing for inexact version number, which should work in theory at least):

yarn add react-native@npm:[email protected]

At this point the README.md shows how to do this by editing package.json, which I would generally not recommend when using frameworks like this one.

related to:

  • #11 - why tvOS is a fork (...)
  • #32 - fork update process

I would love to contribute sometime, unfortunately cannot promise due to some other priorities right now.

Error to publish

I can't publish my osTv application, I have the following error:

This bundle is invalid. The key UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions.

Can solve

Noob setup problem

The instructions dont make sense to me. It says "do not install react native globally", which I didnt (I use npx react-native), byut then says to run:
"react-native init TestApp --version=react-native@npm:react-native-tvos@latest"
which would only work if react native is installed globally.

Using npx, how do I create a tvos react native project?

Clean `react-native init TestApp` produces errors for RCTView

There's an error in console, if dismissed it seems to work fine:

[error][tid:com.facebook.react.JavaScript] RCTView generated view config for validAttributes does not match native, missing: tvParallaxProperties isTVSelectable

Seems like just a few validAttributes need to be added.

React Native version:

System:
    OS: macOS 10.15.2
    CPU: (8) x64 Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz
    Memory: 235.97 MB / 32.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 12.10.0 - /nodejs/12.10.0/bin/node
    npm: 6.10.3 - /nodejs/12.10.0/bin/npm
    Watchman: 4.9.0 - /watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
  IDEs:
    Android Studio: 3.4
    Xcode: 11.3/11C29 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0
    react-native-tvos:  0.61.5-0

Steps To Reproduce

  1. react-native init TestApp --version=react-native@npm:react-native-tvos@latest
  2. Build
  3. Run in Simulator

Typescript support

I'm using Typescript in my project and was wondering if Typescript support is planned in the near future? I would like to help in this aspect.

A good first step would be to document all the different TV-related API definitions and then work on adding Typescript support for each API. Thoughts?

No way to use npm package if it uses Native lib supported in iOS but not tvOS

Version: "react-native": "npm:[email protected]",

When I want to use some library that is supported by iOS but not tvOS, for example react-native-webview, I am unable to build tvOS anymore.

Steps To Reproduce

  1. yarn add react-native-webview
  2. cd ios && pod install

Expected:
pod installs for iOS but not for tvOS

Actual
pod install attempts to install for tvOS and throws fatal error, blocker

[!] The platform of the target `MyApp-tvOS` (tvOS 9.2) is not compatible with `react-native-webview (7.2.5)`, which does not support `tvos`.
error Command failed with exit code 1.

Attempted workarounds:

  1. tried editing the .podspec from the library to support the tvOS target:
    s.platforms = { :ios => "9.0" } --> s.platforms = { :ios => "9.0", :tvos => "9.2" }

this allowed me to install the pod. but then i encountered fatal errors, because this lib uses webkit and webkit/webviews is not supported by tvOS

Desired solution:
Is there a way to change the Podfile so that the tvOS target section can "exclude" an autolinked pod form node_modules?

If we can't do this, then we would be forced to only use libraries which are supported by both iOS and tvOS, which is not great.

Snapshot of my Podfile

require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

target 'MyApp' do
  platform :ios, '9.0'
  # Pods for MyApp
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/React'
  pod 'React-DevSupport', :path => '../node_modules/react-native/React'
  pod 'React-fishhook', :path => '../node_modules/react-native/Libraries/fishhook'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
  pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'


  use_native_modules!

  target 'MyAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

target 'MyApp-tvOS' do
  platform :tvos, '9.2'

  # Pods for MyApp-tvOS
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/React'
  pod 'React-DevSupport', :path => '../node_modules/react-native/React'
  pod 'React-fishhook', :path => '../node_modules/react-native/Libraries/fishhook'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  use_native_modules!

  target 'MyApp-tvOSTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

tvOS: Already focused Touchable Components keeps increasing in size when TVFocusGuide destinations points to it

Reference View Layout ->
https://developer.apple.com/documentation/uikit/focus-based_navigation/creating_custom_navigation_interactions

Please see the above reference to understand the view layout and will help in reproducing the issue:

If focus is on button 4, and we move right where the focus guide is present, the focus loops through the already focused button 4 and the size of button 4 keeps increasing the more we swipe right towards the focus guide.

BackHandler doesn't work for tvos

When using the BackHandler as described in RNTester, the handler doesn't work and menu button press causes to exit the app.

React Native version:

System:
OS: macOS 10.14.6
CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
Memory: 21.04 MB / 16.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 8.16.1 - /usr/local/bin/node
npm: 6.4.1 - ~/n/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.4, macOS 10.14, tvOS 12.4, watchOS 5.3
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: 10.3/10G8 - /usr/bin/xcodebuild
npmPackages:
react: 16.8.6 => 16.8.6
react-native: npm:[email protected] => 0.60.4-6
npmGlobalPackages:
react-native-cli: 2.0.1

Steps To Reproduce

  1. Use the following code in any component
  componentDidMount() {
    BackHandler.addEventListener("hardwareBackPress", this.handleBack);
  }
  handleBack = () => {
    Alert.alert("It's a me, Mario");
  };
  1. Press "menu" button on tvos
  2. App exits, instead of showing alert

Describe what you expected to happen:
Cause alert to open and don't exit the app.

Snack, code example, screenshot, or link to a repository:
https://snack.expo.io/HkmBbUkOH

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.