Skip to main content

Introduction

Hosanna UI is a TypeScript framework for building one product layer across Browser, Samsung Tizen, LG webOS, Roku, iOS, Apple TV, Android, Android TV, CarPlay, Android Auto, Apple Watch, and Wear OS. A Hosanna project shares state, configuration, data, behavior, and—where appropriate—views, while each target keeps its own renderer, packaging, and native integrations. Car and watch targets use typed semantic system surfaces rather than projecting an arbitrary TV or phone view tree.

Hosanna is class-based. It does not use React or JSX. A view extends BaseView, declares reactive fields with @state, and returns a tree of view structs from getViews(). The generator creates the typed factory and state interfaces used by the rest of the app.

Start Here​

Follow this path for a first successful run:

  1. Getting Started installs the locked dependencies and licensed SDK.
  2. Setup explains generation, validation, and target discovery.
  3. Hosanna Fundamentals introduces @view, @state, BaseView, and getViews().
  4. Platform Support explains Browser and TV desktop previews, native/vendor simulators, and physical devices.
  5. Running On Device provides the current hst run commands.

Use the Browser target for the shortest feedback loop, then run each release on the target-specific simulator, emulator, or representative hardware that applies. Platform-shaped Browser previews cover shared behavior; target-device runs cover model-specific release checks.

Core Ideas​

  • Declarative views: getViews() returns view structs such as Label(...), Button(...), VGroup(...), and app-defined generated factories.
  • Reactive state: assigning an @state field invalidates the owning view and schedules reconciliation.
  • Generated contracts: hst generate:all creates typed state, factory, and command-map files. Generated output is not hand-edited.
  • Shared configuration: AppConfig supplies styles, fragments, translations, and other presentation data.
  • Input and focus: remote, keyboard, pointer, and touch input enter shared framework pipelines, with platform-specific transports underneath.
  • Target-specific boundaries: native services stay behind typed adapters or platform modules instead of leaking into shared screens.

Prerequisites​

  • Familiarity with TypeScript or modern JavaScript.
  • Node.js and npm versions required by the application repository.
  • A Hosanna license with access to the SDK/compiler needed by the project.
  • The vendor toolchain for any native target you intend to build.

The current hosanna-ui-samples project requires Node.js 24.17.0 and uses the project-local @tantawowa/hosanna-tools package. Other applications should follow their checked-in .nvmrc, package.json, package-lock.json, and hosanna.json.

Talk to us