Skip to content
Ooidget

Docs

Ooidget for developers

Ooidget is an open format for interactive user interface, from a single control to an application’s whole window, written once as JSON and rendered alike on Windows, macOS, Linux, the web, iOS, Android, watches and, later, spatial devices.

A component is data: its state, layers drawn from that state, the children it contains and how they are laid out, and a behaviour that turns input into new state. Nothing in a component is specific to a platform, so the same file is the button in a desktop app, on a phone and on a web page.

The pieces

PieceWhat it isLicence
SpecificationThe normative definition of the format: its objects, processing model and conformance.CC BY 4.0
JSON Schema and conformance testsValidation for documents; the test suite runtimes are measured against.MIT
Reference core (ooidget)Rust, with a C ABI: loads documents, keeps state, evaluates expressions, lays out and produces a draw list.AGPL-3.0 or commercial
Web runtimeThe core in WebAssembly, rendering to SVG: the reference rendering.AGPL-3.0 or commercial
BindingsC++, Swift, Kotlin, Go and Node packages over the C ABI or WebAssembly.AGPL-3.0 or commercial
Ooidget StudioThe commercial IDE for authoring components and applications.proprietary

Built on standards

Ooidget specifies only its component model. Expressions and behaviours are ECMAScript; layout is CSS flexbox and CSS positioning; drawing is SVG and CSS painting; colours are CSS colours; design tokens are the W3C DTCG format; accessibility is WAI-ARIA. If you know the web platform, you already know most of Ooidget.

Where to start