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
| Platform | Primary runtime | Main validation path |
|---|---|---|
| Roku | BrightScript and SceneGraph | VS Code launch target, device sideload, Roku debugger, MCP debugger |
| Apple TV | Native Apple target | Platform package, device run, focus/input validation |
| Android TV | Native Android target | Android Studio, TV emulator, device run |
| Samsung TV | Web-based TV target | Samsung package, browser/web simulator, device validation |
| iOS | Native mobile target | Xcode project, simulator, device run |
| Android | Native mobile target | Android Studio, emulator, device run |
| Web | Browser runtime | Vite 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
AppConfigfor styles, fragments, callbacks, and shared app metadata. - Route remote, keyboard, pointer, and touch input through
onInputEventand the focus system. - Use the active
expression(tv,web,phone, ortablet) 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.