Skip to main content

Platform Support

Hosanna targets Roku, Apple TV, Android TV, Samsung TV, iOS, Android, and Web from one TypeScript codebase. The framework keeps application code focused on views, state, focus, input, AppConfig, networking, and tooling while each platform target handles its own renderer, packaging, and device integration.

Supported Targets

PlatformPrimary runtimeMain validation path
RokuBrightScript and SceneGraphVS Code launch target, device sideload, Roku debugger, MCP debugger
Apple TVNative Apple targetPlatform package, device run, focus/input validation
Android TVNative Android targetAndroid Studio, TV emulator, device run
Samsung TVWeb-based TV targetSamsung package, browser/web simulator, device validation
iOSNative mobile targetXcode project, simulator, device run
AndroidNative mobile targetAndroid Studio, emulator, device run
WebBrowser runtimeVite dev server, web simulator, DevTools, MCP debugger

Shared App Model

Most product code should stay platform-neutral:

  • Define screens with Hosanna views and view state.
  • Use AppConfig for styles, fragments, callbacks, and shared app metadata.
  • Route remote, keyboard, pointer, and touch input through onInputEvent and the focus system.
  • Use the active expression (tv, web, phone, or tablet) for layout intent, and use platform capabilities for feature availability.
  • Read design size, DPI, safe areas, and host viewport values from the device facade instead of direct browser or native checks.
  • Keep platform-specific code behind launch targets, aliases, build flags, native adapters, and packaging scripts.
  • Validate common behavior in Web first, then finish each release on the target devices.

For the shared runtime vocabulary, config variant selection, device metrics, orientation callbacks, and capability groups, see Cross-Platform Runtime Model.

Platform-Specific Work

Each platform page documents the parts that differ: setup, packaging, store requirements, native services, input behavior, media playback, and debugging. Keep shared UX behavior in the core docs and use platform pages for target-specific decisions.

Start with Platform-Specific Code, Running On Device, and the page for your release target.