Skip to content

docs(deploy): add a guide for Apple TV through NativeScript - #65

Merged
chiefcll merged 1 commit into
mainfrom
docs/apple-tv-nativescript
Sep 18, 2026
Merged

chiefcll merged 1 commit into
mainfrom
docs/apple-tv-nativescript

Conversation

@chiefcll

Copy link
Copy Markdown
Contributor

What

Adds Deploying to Apple TV (tvOS) at docs/deploy/appletv.md, linked under Build & Deploy in the sidebar next to Android TV.

Why

tvOS gives third-party apps no browser and no WebView, so the hosted/bundled web app models in the Tizen, webOS and Android TV guides do not apply. SolidTV runs there through NativeScript and @solidtv/nativescript, and the demo app now does so from its own src/, unchanged (solid-demo-app#7). This writes that setup down, following the demo's nativescript/ project.

What the page covers

  • How the stack fits together, and why the tvOS bundle uses webpack rather than Vite
  • Prerequisites (Xcode 26.4 + tvOS platform, pnpm 10, the xcodeproj gem, the LC_ALL gotcha)
  • The project beside src/, file by file: package.json, pnpm-workspace.yaml (hoisted linker, canvas overrides, the canvas-svg stand-in), nativescript.config.ts, webpack.config.js with chainSolidTV, tsconfig.json, App_Resources
  • The boot file — the demo's app/app.ts without its measurement code
  • Siri Remote key mapping, and the Menu contract behind Config.preventDefaultOnHandledKeys: onBack must return false on the root screen so Menu can leave the app (the one change the demo's src/ needed)
  • App lifecycle, simulator and physical-device builds, console-only debugging with mirrorConsole
  • Limitations: video, SVG, compressed textures, image workers, pointer input

For the reviewer

  • The setup does not work from npm yet. It needs the releases after @solidtv/solid 1.6.3 (Config.preventDefaultOnHandledKeys, merged in feat(focus): preventDefault for a consumed key, behind a config flag #64 but unreleased), @solidtv/renderer 1.9.3 (setDefaultPlatform, Platform.resolveSettings) and @solidtv/nativescript 0.1.1 (bindCanvas, the full shims, mirrorConsole). The page says so in a Version requirements note and shows the link: sibling checkouts the demo uses. Once those ship, the note should go and the link: entries become version pins.
  • Not build-tested from the page. The commands and configs are taken from the demo's project and the host repo's docs; I did not run a tvOS build while writing it.
  • DEVELOPMENT_TEAM is a <YOUR_TEAM_ID> placeholder — the demo's xcconfig files carry a real team id, which is deliberately not copied here.
  • Play/Pause arrives as MediaPlayPause (179), which is not in SolidTV's default key map; the page tells readers to map it.
  • Docs only: no source or test changes. prettier --check passes on both files.

🤖 Generated with Claude Code

tvOS gives third-party apps no browser and no WebView, so the hosted and
bundled web app models the other deploy guides describe do not apply.
SolidTV runs there through NativeScript and @solidtv/nativescript, and the
demo app now does so from its own `src/`, unchanged. This writes that
setup down: the project beside `src/`, each config file, the boot file,
the Siri Remote key mapping, the Menu contract behind
`Config.preventDefaultOnHandledKeys` and the one `onBack` rule an app
needs for it, the lifecycle, simulator and device builds, console
debugging and the limits (video, SVG, compressed textures).

The page says which releases the setup waits on, after
@solidtv/solid 1.6.3, @solidtv/renderer 1.9.3 and @solidtv/nativescript
0.1.1, and shows the sibling-checkout links the demo uses until then.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@chiefcll
chiefcll merged commit c37ba94 into main Sep 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant