---
name: buoy-install-tv
description: Install Buoy in a React Native TV app (Apple TV and Android TV), configure account access, and verify the result.
---

# Install Buoy in a React Native TV app

Buoy on TV is the ordinary React Native install with one prop changed. Follow https://buoy.gg/install.md for its rules, package selection, version matching and tool wiring, and use this page for what is different on TV. The full manual setup is https://buoy.gg/buoy/latest/docs/tv/installation.md (raw markdown).

Check that this guide fits the repo. If it does not, use the right guide. React Native or Expo: https://buoy.gg/install.md. React Native TV: https://buoy.gg/install-tv.md. Flutter: https://buoy.gg/install-flutter.md. Native iOS: https://buoy.gg/install-swift.md. .NET MAUI: https://buoy.gg/install-maui.md. React web: https://buoy.gg/install-web.md. Angular: https://buoy.gg/install-angular.md. React with Capacitor or Ionic: https://buoy.gg/install-capacitor.md.

## What is different on TV

- The app runs on `react-native-tvos` with the New Architecture, as an Expo TV app (`@react-native-tvos/config-tv`) or a bare React Native TV app. Expo Go cannot run a TV app.
- Buoy adds no native dependencies on TV: no podspecs, no gradle changes, no prebuild.
- Always install `@buoy-gg/core` and `@buoy-gg/external-sync`. The TV tools are `@buoy-gg/tv-remote` and `@buoy-gg/focus-inspector`; install them too. Other tools install exactly as on a phone.
- Mount `FloatingDevTools` with `headless`. Without it the floating bubble renders, and on Android TV its views join the app's D-pad focus order. Give the device a clear `deviceName` so it is easy to pick out in Buoy Desktop:

```tsx
<FloatingDevTools
  headless
  licenseKey={process.env.EXPO_PUBLIC_BUOY_KEY}
  externalSync={{ deviceName: "Living Room Apple TV" }}
/>
```

- Headless has no screen to type a key into, so the key must reach the app through `licenseKey`. Expo uses `EXPO_PUBLIC_BUOY_KEY`, which `npx --package=@buoy-gg/core buoy login` writes. A React Native CLI app passes it through its own environment configuration; if it has none, say so in the report and do not add one.
- The tools are read in Buoy Desktop, not on the TV. Desktop is free. Free includes the basic MCP; Pro adds more MCP tools.

## Connecting to Desktop

| Device | What it needs |
|---|---|
| Apple TV simulator | Nothing. It connects on its own. |
| Android TV emulator | `adb -s <serial> reverse tcp:42831 tcp:42831`, once per boot. |
| Physical TV device | A `socketURL` pointing at the computer's LAN address. |

Remote replay needs `adb` for Android TV and `idb` for the Apple TV simulator. Do not install them; tell the user if they are missing. Recording needs neither.

## Verify

Static, which you do: run the project's existing typecheck. Add no tooling.

Device, which the user does: sign in, start the TV app, open Buoy Desktop, pick the TV by its `deviceName`, make the app send a request, and inspect it in Network.

## Report the result

List the target app, installed versions, skipped tools and reasons, changed files, account-setup status, checks performed, and any exact blocking errors. Give the user the remaining steps. Do not print keys or claim that compiling proves capture.
