Skip to content
HotLayout Docs

HotLayout — integrator documentation

HotLayout is server-driven UI: your team assembles a screen in a visual builder and publishes it as JSON, and your app draws it with a renderer package — so a screen changes without an app release.

This documentation is for the people who connect the two: the developer of the mobile or web app, the backend developer, and whoever reviews the integration for security.

Start here#

If you are Read
deciding whether this fits your product Why
a Flutter developer Quickstart for Flutter
a React or Next.js developer Quickstart for React
an iOS developer (Swift, SwiftUI) Quickstart for iOS
an Android developer (Kotlin, Jetpack Compose) Quickstart for Android
a backend developer Backend guide, then Delivery options
putting the builder into your own back-office Embedding the builder
reviewing security Delivery options for who can read what and how a webhook is verified; then The document is untrusted input for the web and The action catalog for mobile
writing a renderer for another platform Widget reference and Compatibility policy

Videos#

How the pieces fit#

 builder ──publish──▶ document (JSON) + theme (JSON)
                          │
          webhook to your backend, or a direct address
                          │
                          ▼
 your app:  renderer( document, theme, data from your backend ) ──▶ screen
Piece What it is Who provides it
Builder the editor in a browser where screens are assembled and published used by your managers and designers
Document one JSON file with a set of screens published by the builder
Theme one JSON file with the values of colors, spacing and text styles published by the builder
Data dictionary the list of data paths a screen may be bound to agreed with your backend team
Data the values at those paths for the current user your backend, passed in by your app
Renderer a package in your app that draws the document hotlayout_flutter, @hotlayout/react, the native readers for iOS and Android

The words mean the same on every page: a document is what is published, a renderer is the package that draws it, the host is your app around the renderer.

The packages#

Platform Install Source
Flutter flutter pub add hotlayout_flutter pub.dev · github.com/hotlayout/hotlayout-flutter
React npm install @hotlayout/react npm · github.com/hotlayout/hotlayout-react

Both are open source and draw the same JSON.

There are also native readers, which draw the same JSON too:

Platform Reader Access
iOS a Swift package, SwiftUI, iOS 16+ on request, with a licence or a trial · Quickstart for iOS
Android a Kotlin library, Jetpack Compose, API 26+ on request, with a licence or a trial · Quickstart for Android

The native readers are not open source and are not in a public registry; write to contact@hotlayout.com to ask for access.

All pages#

Decide

  • Why — what the product does and what it deliberately does not do.

Integrate

Understand

  • Data dictionary — the fields and lists your backend promises to every screen.
  • Theme — tokens, values and how a rebrand ships without a release.
  • Localization and RTL — languages inside a document and right-to-left scripts.

Look up

The contracts#

Everything here rests on versioned artifacts. Each has its own version, because a rebrand does not add widgets and a new widget does not change a palette.

Contract Says File Current version
Screen schema which widgets exist and what shape a node's style has screen-schema.json 9.19.0
Theme which tokens exist and what they mean theme.json 4.0.1
Data dictionary which data a screen may ask for, and in what shape data-contract.json 1.5.0
Icon set the drawing behind every icon name icons.json 1.0.0
Version rule how a renderer decides whether it understands a document described in Compatibility policy —

The builder cannot produce a document that breaks the screen schema, and it checks every data binding against the dictionary before a publication leaves.

Where the files are. The four JSON files, and the shared tables of cases (fixtures/…) that other pages refer to, are in the repository of the Flutter package, in assets/contract — in the repository, not in the package you install from pub.dev or npm. A file name on these pages — screen-schema.json, fixtures/locale/locale-cases.json — is a path inside that folder. Your project's own data dictionary is downloaded from the admin; see Data dictionary.

Questions#

Write to contact@hotlayout.com.