EXPLORE HOSANNA UI

FROM FOUNDATIONS TO FINISHING TOUCHES

See what you can build with Hosanna UI.

Explore the architecture, workflows and native capabilities available for building and evolving products across platforms.

GROUP 01

One application architecture, expressed in modern TypeScript.

The foundations that keep product intent readable, testable and portable as the application grows.

TypeScript-first application code

Write screens, state, services and product logic in TypeScript, with types and language tooling available throughout the application layer.

TypeScriptCore

Declarative view builders

Describe a view tree in code and let Hosanna create, update and dispose the target-specific rendering objects behind it.

ViewsDeclarative UI

State-driven rendering

Connect typed state to view output so a product change is expressed as an application-state change rather than a trail of manual node mutations.

StateRendering

Dynamic view reconciliation

Add, remove, reorder and reuse children as state changes while Hosanna reconciles the live target view tree and preserves clean lifecycle boundaries.

Dynamic UIRendering

Predictable view lifecycle

Compose screens from maintainable view classes with explicit mount, unmount, focus, observation and disposal hooks that run in a defined order.

ArchitectureLifecycle

IoC and dependency injection

Register and resolve shared services through the IoC container, keeping platform facilities and product code behind clear interfaces.

IoCServices

Observable shared objects

Model shared state with observable objects so screens and services can respond to typed changes without tightly coupling their implementations.

ObservablesState

Notifications and user-intent actions

Use typed publish/subscribe notifications and a central action manager to coordinate navigation, playback, analytics and state changes.

EventsActions

Shared core with explicit target seams

Keep the product model shared while placing genuinely platform-specific behaviour in named adapters, extensions and target files.

Cross-platformArchitecture
GROUP 02

Async work stays off the render thread—and out of your architecture.

Commands, task pools and function pointers make background execution a first-class part of the product model instead of a platform-specific afterthought.

Decorator-defined background commands

Turn an exported class method into background work by adding command category and command annotations, while Hosanna generates the handler map and command contract around it.

CommandsDecorators

Generated typed command contracts

Dispatch named work through generated command constants and typed payloads instead of hand-wired strings or platform-specific worker messages.

Type safetyCode generation

Configurable task pools

Declare named worker pools and their concurrency in build configuration, including dedicated lanes for analytics, storage or other workloads that must not compete.

Task poolsConfiguration

Explicit workload routing

Route a command to a chosen task category or task instance when ordering, isolation or predictable use of a background thread matters.

SchedulingBackground threads

Promise-first async composition

Use HsPromise with then, catch, finally, all, race and allSettled, plus parallel and sequential helpers, across Hosanna's supported runtimes.

HsPromiseComposition

TypeScript async/await on Roku

Write supported async functions with await in application code while the Hosanna compiler lowers them to promise-backed BrightScript state machines, including branching and try/catch.

Async/awaitRoku

Complete command lifecycle

Observe progress and completion, cancel work that is no longer relevant, and pause or resume commands whose handlers support it.

CancellationProgress

Functions across task boundaries

Pass exported function pointers into background work and resolve them safely inside task-local execution contexts without capturing a UI closure or its this binding.

Function pointersTask context
GROUP 03

Every request is typed, cancellable and ready for background execution.

The shared HTTP layer covers ordinary API calls, response processing, tests, diagnostics and durable file transfer without blocking the render path.

Typed cross-platform HTTP

Make GET, POST, PUT, PATCH, DELETE and HEAD requests through one command contract with consistent behaviour across supported targets.

NetworkingHTTP

Render-thread-free requests

Dispatch network work through Hosanna's async command system so request and response handling do not stall focus, animation or rendering.

Background workPerformance

Complete request control

Set headers, bodies, credentials and timeouts, retain error bodies when needed, and cancel an in-flight request when its result is no longer useful.

Request optionsCancellation

Normalised typed responses

Receive one response shape for status, headers, JSON, text, success state, resolved IP address and caller-supplied context data.

ResponsesType safety

Response callbacks with context

Pass an exported postProcessFunction and contextData with a request so response-specific work can run safely on the background task before control returns to the caller.

postProcessFunctionFunction pointers

Mockable network paths

Register responses by HTTP method and URL, then exercise the same command and post-processing path without a live service.

HTTP mocksTesting

Safe downloads and reproducible diagnostics

Download through a temporary partial file that is renamed only after success, clean up failures, and inspect a reproducible curl form of each request when debugging.

DownloadsDiagnostics
GROUP 04

A JSON-driven product layer that can change without unravelling the app.

AppConfig carries presentation, reusable view fragments and target variations separately from the stable application core.

JSON AppConfig

Keep design tokens, control variants, fragments, CollectionView settings, translations and device-specific presentation in a declarative product file.

JSONAppConfig

Themes and design tokens

Centralise colours, fonts, shapes, sizes and other product values in one style system shared by every target.

ThemesDesign system

Reusable style keys and inheritance

Resolve named styles, extend shared definitions and apply local overrides instead of repeating presentation objects throughout screen code.

StylesReuse

JSON fragment view trees

Define reusable fragments as configured view trees, then mount them through FragmentView or use them as CollectionView cells.

FragmentsView DSL

Fragment data maps and callbacks

Bind item data into fragment fields and use explicit providers or callbacks when a configured component needs derived behaviour.

Data bindingFragments

Declarative layout constraints

Pin, fill, inset and size fragment children and CollectionView cells from inline constraints that can respond to cell size, screen metrics and safe areas.

LayoutConstraints

Computed configuration values

Derive fragment fields and constraint arguments from declarative inputs while keeping the resolved result visible to tooling and the runtime.

Computed valuesDSL

Layered AppConfig variants

Start with a base AppConfig, then inherit focused phone, tablet, TV, web or platform variants without copying the whole product configuration.

VariantsOffline config

Layered configurations and named profiles

Resolve base, environment, platform and named developer-profile overlays into one runtime build configuration with a traceable merge order.

Build configProfiles

Config-time secrets

Merge company and developer secret overlays at build or dev-server time while keeping source secret files out of the packaged application.

SecretsBuild config

Environment and product flavours

Maintain explicit development, QA and production configurations, with platform-specific overlays and opt-in developer profiles for local work.

FlavoursConfiguration
GROUP 05

Complete lean-back pages built from data, settings and focus rules.

CollectionView handles the scale and behaviour of rails, grids and mixed content without turning each screen into a bespoke renderer.

CollectionView page construction

Build rails, grids and mixed collection screens from an ordered data source and reusable row and cell definitions.

CollectionViewLean-back UI

Rows, grids and mixed layouts

Combine row types, cell sizes, spacing, headers and per-row settings in the same scrolling experience.

RowsGrids

Customisable row headers and footers

Compose each CollectionView row with configurable header and footer fragments, data mapping and layout constraints instead of limiting row chrome to a fixed label.

Row componentsCollectionView

CollectionViewDataSource

Own ordered rows, stable row IDs, versions, loading state and pending change notifications in a dedicated runtime model.

Data sourceState

Virtualised rows and cells

Create and retain only the visible working set needed for the current viewport rather than mounting an entire catalogue at once.

VirtualisationPerformance

Node pooling with pristine defaults

Reuse rendered nodes and replay configured default field values so recycled cells do not leak visual state between items.

PoolingMemory

Incremental and batched updates

Apply row and item changes without rebuilding the entire page, and batch related work to reduce layout and render churn.

UpdatesPerformance

Declarative remote loading

Configure request parameters, headers, bodies, loading state and dynamic row behaviour for collections backed by remote data.

NetworkingCollection DSL

HTTP and function-backed data sources

Load collection rows from HTTP or a func:// callback, pass parameters and context, choose eager or lazy paging, cancel stale work and post-process results through the same data-source model.

Data sourcesFunction pointers

Collection events, triggers and navigation

Respond to focus, selection and lifecycle events, then jump or scroll to known rows and items through explicit APIs.

EventsFocus

Custom CollectionView rows

Use a complete Hosanna view as a custom row when standard horizontal, list and grid rows are not enough for the product experience.

Custom rowsCollectionView

Extensible CollectionView DSL

Register product-owned row types, loaders, triggers, post-processors and callbacks while retaining the same JSON-driven collection model.

Collection DSLExtensibility

Row lifecycle callbacks

Run named or TypeScript callbacks on row mount, content readiness and variable-width layout to add behaviour without forking CollectionView.

RowsCallbacks

Fine-grained fragment callbacks

React to mount, unmount, data changes and normal, focused, selected or disabled status inside configured cells and fragments.

FragmentsCallbacks

Lightweight list and grid repeaters

Render modest lists, grids and nested repeated content without adopting a full CollectionView, with constant or variable item sizes and scroll-aware virtualisation when needed.

RepeatersVirtualisation

Electronic programme guide layouts

Build two-dimensional schedules with channel rows, variable-duration programme cells, time headers and synchronised channel and timeline overlays.

EPGCollections

Fixed, floating and hybrid focus strategies

Choose how content moves around the focused item in each direction, including fixed, floating, hybrid and closest-item behaviours for deliberate television navigation.

Focus strategiesCollectionView

Sticky and variable-width rows

Keep navigation or header rows anchored while content scrolls, and lay out rails whose cells derive their width from the item rather than a single fixed template.

Sticky rowsVariable cells
GROUP 06

The common interface building blocks are already part of the system.

Primitive views, composed controls, text entry and motion share the same state, style and focus model.

Core visual primitives

Create labels, multi-style and vertical text, rectangles, images, video players, loading skeletons and native keyboard surfaces from typed view builders.

PrimitivesViews

Horizontal, vertical and grid groups

Lay out children with HGroup, VGroup and GridGroup while retaining direct control over spacing, sizing and translation.

LayoutGroups

Images and loading states

Resolve packaged, downloaded and remote image sources through the platform layer and represent pending content with reusable skeleton rectangles and circles.

ImagesLoading

Flexible image presentation

Choose image display modes, dimensions and tinting from shared view state, with resolution-aware assets and nine-patch scaling for stretchable product artwork.

ImagesNine-patch

Resilient image delivery

Cache remote artwork, expose load status, supply loading and failure images, and retry failed or stalled requests with configurable delays and timeouts.

Image cacheReliability

Buttons, groups and selection controls

Use buttons, button groups, checkboxes, comboboxes, label lists and tags without rebuilding basic interaction semantics.

ControlsSelection

Text inputs and keyboards

Choose text boxes, mini keyboards, native keyboards and platform-appropriate text entry while keeping the form model shared.

Text entryKeyboard

ScrollView and ScrollContainer

Scroll smaller raw view trees directly when a full virtualised CollectionView would be unnecessary.

ScrollingControls

Popups, dialogs and PIN entry

Present modal product moments with popup, dialog, keyboard-dialog and PIN-pad building blocks that participate in navigation and focus.

DialogsModal UI

Animations and screen transitions

Animate view properties and configure push, pop, replace and tab transitions through Hosanna and ViewJSON animation systems.

AnimationTransitions

Cross-platform shapes

Define reusable vector shape styles in JSON or create them from typed builders, then render the same shape intent across supported targets.

ShapesAppConfig

Flexible shape delivery

Generate shape assets just in time, embed them in the application package or deliver precompiled shapes through asset bundles to match the product's startup and deployment needs.

ShapesAsset bundles

Masks and clipped compositions

Clip images, video and composed view trees with reusable masks, including shape-backed masks in configured CollectionView fragments.

MasksComposition

Rich and scrollable text

Present structured rich text, long-form scrollable copy and ordinary labels through the same view, font and focus systems.

Rich textScrolling

Declarative animation system

Drive individual renderer fields or coordinated view-tree states from typed code and JSON-friendly animation definitions.

AnimationDeclarative UI

Rive animation runtime

Load and control Rive files as Hosanna views, including state-driven playback and animation progress linked to CollectionView focus.

RiveMotion

Embedded web content where it belongs

Host an allow-listed web page or inline HTML on web and supported touch devices, exchange messages with the app and fall back explicitly on television targets.

WebViewNative UI
GROUP 08

Language, inclusion and downloadable presentation belong to the product model.

Localised copy, audio guidance and versioned assets are configured capabilities rather than late platform patches.

AppConfig translation dictionaries

Store i18n keys in AppConfig and resolve them from views, JSON data maps and application settings instead of hardcoding copy into screen logic.

i18nTranslations

Runtime locale switching

Change the active locale at runtime and resolve language-specific copy and @locale asset paths from the same configuration.

LocaleRuntime

RTL-aware product configuration

Declare reading direction by locale and use target-aware layout configuration for right-to-left product variants.

RTLLocalisation

Text-to-speech audio guide

Queue and prioritise spoken guidance through the text-to-speech manager, with flushing and debugger controls for the Roku audio-guide path.

TTSAccessibility

Voice-assisted text entry

Use voice text buttons and native voice text editing controls where a target makes speech input available.

VoiceText entry

Cross-platform font management

Register theme fonts once, resolve font keys in configured views and map them to web or native target resources.

FontsThemes

Logical asset resolution

Resolve packaged, locale-specific and downloaded resources through stable asset references instead of scattering target paths through code.

AssetsResolution

Versioned asset bundles and offline cache

Download bounded asset bundles with concurrency control, gate rendering on required files, invalidate by version and start from packaged or cached configuration when offline.

Asset bundlesOffline

One style language across targets

Keep colours, fonts, shapes, spacing and component variants in shared AppConfig styles while renderers resolve the target-specific details.

StylesCross-platform
GROUP 09

One product system, resolved into the runtime each screen expects.

Hosanna shares application structure without pretending every target has the same renderer, input hardware or native services.

Web runtime and simulator

Run the product in a fast browser loop with selectable television, phone and tablet device profiles.

WebSimulator

Native Roku SceneGraph output

Compile the Hosanna application into BrightScript and SceneGraph structures that run as a native Roku channel rather than a web view.

RokuSceneGraph

Native iOS shell

Run shared Hosanna JavaScript through the Apple platform shell on iPhone and iPad, with explicit bridges to iOS facilities.

iOSNative

Native Apple TV shell

Target tvOS with television input, playback and native extension points while preserving the shared application model.

Apple TVtvOS

Native Android shell

Build and launch the product for Android phones and tablets using the shared runtime and Kotlin or Java bridge boundary.

AndroidNative

Native Android TV shell

Use the Android television path with remote input, television layouts and target-specific native services.

Android TVTV

Samsung TV target

Keep Samsung-specific runtime and packaging concerns behind the platform target while sharing the application and configuration layers.

Samsung TVTV

Capability-aware platform adapters

Query target capabilities and route input, media, sharing, storage and other services through typed per-platform implementations.

CapabilitiesAdapters

Safe-area-aware layouts

Read live safe-area insets and content bounds through the shared device model so phone cutouts and television overscan do not require scattered platform checks.

Safe areasResponsive

Full Roku SceneGraph access

Create and operate SceneGraph nodes directly when a Roku experience needs a native surface beyond Hosanna's higher-level views.

SceneGraphNative access
GROUP 10

Use the framework boundary without giving up the device beneath it.

Shared TypeScript can call explicit platform services, and unusual requirements can still reach native APIs directly.

Typed native command bridge

Define command payloads and results at the shared boundary, then implement them in Swift, Kotlin, JavaScript or Roku target code.

Native APIsTyped bridge

Native playback and media sessions

Connect shared product controls to platform video, native media-session state and target-specific playback integrations.

PlaybackMedia

HLS, DASH and protected streaming

Drive HLS and DASH playback through the shared video model, including DRM headers and target-specific protected-stream implementations where the device supports them.

StreamingDRM

Tracks, thumbnails and playlists

Expose audio and subtitle tracks, scrub-preview thumbnails, playback speed and playlist position through observable shared player state.

VideoTracks

Cross-platform audio and sound effects

Use shared Audio and SoundEffect contracts for long-form playback and short product sounds while each runtime selects its native audio implementation.

AudioNative media

AirPlay support path

Expose WebKit AirPlay and Apple-native media capabilities through the platform video service where the target supports them.

AirPlayApple

Chromecast and native casting

Use the Chromecast Web Sender or a native cast bridge while keeping cast availability and session state in the shared service contract.

CastingChromecast

Native share sheets

Open the platform sharing surface from shared product code and receive a typed completion result.

SharingNative UI

Platform stores and purchases

Integrate Roku ChannelStore and native billing or in-app-purchase SDKs behind a product-owned store boundary.

StoresPurchases

Analytics, authentication and storage adapters

Connect the SDKs your product already uses without moving analytics, identity or persistence concerns into screen code.

AnalyticsAuth

Deep-link support, notifications and lifecycle

Handle launch data, network status, notification registration and foreground or background transitions through shared interfaces and target event listeners.

Deep linksLifecycle

High-level device service wrappers

Use shared APIs for purchases, notifications, action sheets, sharing, casting, storage and other common device features while keeping direct native access available.

Device APIsCross-platform

Files, registry and transfers

Read, write, rename and remove local files, persist typed key-value state, and download or upload files through shared service contracts with target implementations.

StorageFile transfer

Managed offline downloads

Start, observe, pause, resume, list and delete native downloads on supported mobile targets, with progress snapshots and a playback URL when the platform can play before completion.

DownloadsOffline media

Shared cryptography utilities

Use base64 and URL-safe encoding, SHA-256 hashing, symmetric encryption and device-bound encryption from TypeScript without hiding platform-specific security constraints.

CryptographySecurity
GROUP 11

Build, launch and inspect targets through one modern toolchain.

The development loop is designed around TypeScript, local project tooling and commands that remain scriptable in CI and by agents.

Project-local hst CLI

Use the versioned Hosanna tools package declared by the app instead of depending on an untracked global installation.

CLITooling

Fast browser development loop

Launch the web runtime quickly for ordinary UI work before moving the same product scenario to the hardware that matters.

BrowserIteration

Fast refresh and native hot reload

Use the supported refresh path on web and hot-reload launch modes on Apple and Android targets during active development.

Hot reloadWorkflow

Unified build, run and package commands

Validate, build, launch, test and package web, Roku, Apple and Android targets through consistent hst commands and project scripts.

BuildRun

Target inventory and device presets

List available browsers, profiles, simulators, emulators and physical devices, then select an explicit target for a run.

DevicesCLI

TypeScript-to-Roku transpilation

Translate supported TypeScript application code into BrightScript while generating the Roku structures the target runtime needs.

TranspilerBrightScript

Target-aware code and bundle linting

Lint application code, AppConfig and bundle files with Hosanna-aware rules, catch unsupported or expensive target patterns early, and map generated failures back to the source engineers own.

LintingBundles

VS Code navigation for TypeScript and JSON

Navigate style links and configuration references from the editor while keeping AppConfig and application code connected.

VS CodeDeveloper tools

Conditional compilation flags

Use readable build flags such as development, production and target flags to remove inactive branches while compiling each product variant.

Build flagsCompiler

Build-time logging control

Choose the emitted log level, remove remote logging and timing calls, or strip console output entirely for leaner release builds.

LoggingProduction builds

End-to-end release toolchain

Run generation, diagnostics, linting, unit and integration tests, target builds, metadata stamping and final packaging locally or in CI.

ToolchainDelivery
GROUP 12

See the product model, the focus path and the runtime evidence.

Hosanna debugging joins application state with target output so investigation does not stop at a console message.

Hosanna DevTools

Connect the browser extension to a running Hosanna application for remote control, inspection, recording and diagnostics.

DevToolsDebugger

Hosanna view hierarchy

Inspect the framework view tree, IDs, state and ownership on web and Roku without reconstructing the screen from source alone.

View treeState

Target-aware native hierarchy context

Inspect both Hosanna and SceneGraph-style hierarchy context on web; on Roku use the serialisable Hosanna hierarchy with device logs, focus and runtime state.

SceneGraphPlatform

Focus graph inspection

Read the focused view, focus ancestry and directional graph to diagnose navigation that feels wrong on a remote.

FocusInspector

CollectionView inspection

Inspect visible rows, virtual positions, focused items, translations and data-source state while a collection is running.

CollectionViewInspector

Remote control and screenshots

Drive the current target with directional input, capture its visible result and retain the exact frame involved in a bug.

Remote controlScreenshots

Logs, watched views and runtime state

Collect searchable application and device logs, monitor chosen views and inspect registry, service or pooled-renderer state relevant to an investigation.

LogsWatch

Navigation, handler and render recordings

Record focus, collection, handler, render and watched-view changes as a searchable timeline, then export JSON or a reviewable HTML report.

RecorderEvidence

Injectable debugging flags and profiles

Inject remote debugging, MCP, test mode, logging and product-specific diagnostic switches from explicit debug profiles rather than shipping them accidentally.

Debug profilesBuild config

Shared debugger protocol across targets

Connect web and device builds to the same proxy so DevTools and MCP can work from a consistent state, input, screenshot and log contract.

Cross-platformDebugger

Extensible debugger and MCP surface

Route product-specific debug commands through the application boundary and add focused MCP tools as new runtime capabilities need to become operable.

MCPExtensibility
GROUP 13

A result is not finished until another person can reproduce it.

The same toolchain supports fast logic tests, deterministic UI scenarios and target build matrices suitable for CI.

TypeScript unit testing

Test product logic, state transitions and isolated view behaviour in the normal JavaScript or TypeScript development environment.

Unit testsTypeScript

Integration testing

Exercise complete journeys through a running application instead of limiting validation to isolated functions.

IntegrationJourneys

Deterministic UI regression scenarios

Replay known input sequences and assert visible or inspectable product state with stable scenario definitions.

RegressionDeterministic

Browser and real-Roku validation

Use the browser for speed, then run the important journey on Roku hardware rather than treating the simulator as final proof.

RokuBrowser

Native target build matrix

Validate iOS, Apple TV, Android and Android TV builds through non-interactive simulator or emulator commands.

NativeBuild matrix

Retained screenshots, logs and state

Keep the evidence attached to a run so reviewers can understand what changed without repeating the entire investigation.

ArtifactsReview

Performance baselines

Track representative collection and runtime workloads against measurable baselines rather than relying on subjective smoothness alone.

PerformanceRegression

CI, packaging and versioning workflows

Run lint, build, tests and target packaging in automation with explicit SDK versions and release-oriented project commands.

CIReleases

Video evidence from real targets

Record Apple simulators, Roku capture cards and macOS windows from the CLI, tests or MCP, then attach the MP4 and capture metadata to reports, tickets or pull requests.

Video captureEvidence

Mockable service responses

Replace selected HTTP and service responses in development and tests so empty, error, delayed and recovery paths can be exercised without changing production code.

MocksTesting
GROUP 14

Agents can operate the product—and still have to prove the result.

Hosanna exposes a bounded application operating surface while deterministic checks and retained evidence remain the acceptance layer.

First-class MCP debugger server

Expose the running Hosanna application through documented Model Context Protocol tools rather than asking an agent to infer runtime behaviour from files.

MCPAI tooling

Compact application-state reads

Use get_state to obtain focus, route and CollectionView context in one bounded response before taking an action.

StateAgents

Agent-operated navigation and input

Let an authorised agent reproduce a journey with remote keys, focus changes and application navigation on the active target.

AutomationInput

Runtime inspection for agents

Give agents access to the same bounded hierarchy, focus, collection, log, screenshot and trace evidence used by engineers.

InspectionEvidence

Deep-link and accessibility controls

Allow test workflows to send deep links, read text-to-speech state and toggle the TTS path when validating a scenario.

Deep linksTTS

Reproduce → inspect → edit → rerun → prove

Support the complete engineering loop around a well-scoped ticket instead of ending the agent workflow at code generation.

Agent loopVerification

Target-aware conformance checks

Use compiler rules, lint diagnostics, tests and target builds as machine-readable constraints on generated changes.

ConformanceDiagnostics

Human-reviewable AI evidence

Keep code, screenshots, logs, state and deterministic regression results available for an engineer to accept or reject.

ReviewTrust
GROUP 15

Optimise the work behind the frame, then measure the result.

Hosanna combines native target output, bounded rendering work and diagnostics that make performance behaviour visible.

Native Roku rendering path

Produce BrightScript and SceneGraph output for Roku so the final channel uses the platform renderer and lifecycle directly.

RokuNative output

Virtualised collection workloads

Limit row and cell creation to the useful viewport and preload window even when the underlying catalogue is much larger.

VirtualisationCollections

Pooled renderer reuse

Reuse compatible nodes and cells to reduce allocation pressure during repeated television scrolling.

PoolingAllocation

Lazy and batched rendering work

Delay work until content is needed and combine related updates to reduce unnecessary render passes.

LazyBatching

Memory-oriented collection controls

Tune list behaviour, pool defaults and retained data with documented memory and collection optimisation guidance.

MemoryTuning

Offline device-quality performance tiers

Configure low, medium and high device tiers in AppConfig for pool sizes, graphics, animation and aggregate-view hibernation, then select the appropriate experience at runtime.

Device classesOffline config

Render and handler traces

Record state mutations, rebuilds, handler consumption and selected property writes around an interaction.

TracingDiagnostics

Measured animation workloads

Use renderer, view-tree and Rive animation paths with traceable state changes and performance evidence when motion becomes demanding.

AnimationDiagnostics

Game-scale performance proof

Run racing, action, puzzle and multiplayer samples as demanding evidence of headroom beyond ordinary menu screens.

GamesHeadroom
GROUP 16

A game runtime that turns performance claims into working software.

The standalone game samples exercise deterministic simulation, input, sprites, audio and persistence across web and Roku.

Shared web and Roku game runtime

Run the same Hosanna game architecture in the browser development loop and the native Roku package path.

GamesCross-platform

Deterministic simulation core

Keep gameplay rules in a pure, tick-driven model that can produce repeatable snapshots independently from the renderer.

SimulationDeterministic

Sprites, atlases and tile maps

Build real-time scenes from reusable sprite resources, atlas mappings and tile-based world data.

SpritesTile maps

Game input adapters

Translate remote, keyboard and supported controller input into a stable game input state consumed by the simulation.

InputControllers

Game audio integration

Package and trigger named game audio resources alongside deterministic gameplay and rendered scenes.

AudioAssets

Progress, economy and store fulfilment

Persist progression and connect entitlements or consumable fulfilment to the platform store model where a game needs it.

ProgressionStore

Multiplayer and split-screen workloads

Exercise multiple simultaneous players and views in real-time samples that put meaningful pressure on input and rendering.

MultiplayerSplit screen

Broad playable sample catalogue

Explore racing, mini-golf, tennis, shooters, dungeon, puzzle and platform game examples with tests and standalone launchers.

SamplesProof

Efficient 30/60 FPS throttling

Choose a 30 or 60 FPS runtime target and let the game loop accumulate frame time cleanly instead of wasting work between useful updates.

CPUFrame rate

QR-paired phone controllers

Host a controller page from the game, show a pairing QR code and turn a phone or other viable browser device into a local game controller.

QR codeControllers

Custom second-screen controllers

Give each game its own controller layout, button labels, motion mapping and live state display while the transport stays game-agnostic.

Second screenCustom controls

Roku-ready game abstractions

Build gameplay, scenes, sprites, input and performance settings in TypeScript while the runtime handles the specialised Roku rendering path.

RokuGame engine
GROUP 17

A foundation your team can inspect, extend and maintain.

The framework provides leverage without hiding the source context or closing off the platform-specific work real products eventually need.

Full framework source visibility

Licensed client projects can include the framework TypeScript sources, giving engineers the context required to inspect and debug the application.

SourceOwnership

Direct platform access

Drop below the shared abstraction when the product needs a native API, SDK or SceneGraph capability that is not yet generalised.

Native accessNo dead end

Product-owned native adapters

Add a small typed adapter for a new service without restructuring every screen or waiting for a monolithic framework release.

ExtensibilityAdapters

Custom Roku SceneGraph nodes and tasks

Author reusable Roku nodes, tasks and native component libraries from the TypeScript toolchain, with generated wrappers for the target package.

RokuSceneGraph

Browser mocks for native libraries

Provide web, Apple or Android stubs for a SceneGraph or native extension so shared screens and automated journeys can continue on other targets.

MocksNative libraries

Reusable components and services

Package TypeScript controls, player inlays, analytics, domain services and component libraries for reuse across products, including Roku consumers.

PackagesReuse

Documentation, samples and API reference

Hand engineers task-focused guides, runnable application samples and generated API material alongside the framework source.

DocsSamples

Maintainable product handover

Keep application code in a modern language with explicit service seams, repeatable tooling and regression evidence another team can continue to own.

HandoverMaintainability

TypeScript libraries delivered to Roku

Build shared code and component libraries for Roku consumers through the normal TypeScript toolchain without maintaining a separate specialist implementation.

Roku librariesTypeScript

Human-in-the-loop bug resolution

Submit compiler or framework issues through a focused support form and bring a Hosanna engineer into the loop, with an under-one-hour resolution target.

Human supportBug resolution

Build your next product with Hosanna UI.

See how Hosanna UI brings shared architecture, native performance and modern tooling together across every screen.