Skip to content
Flow-UILive

Widget envelope

The uniform wrapper around every widget's payload.

json
{
  "type": "image_text_card",
  "id": "product_1",
  "layout": {},
  "data": {},
  "actions": { "tap": {}, "long_press": {}, "change": {} },
  "tracking": {}
}
FieldTypeDefaultDescription
typereqStringSelects the registered component. Unknown types become placeholders.
idStringStable identity for state and mutations. Generated when absent.
layoutWidgetLayoutBackend controlled chrome. See the layout reference.
dataobjectThe payload owned by the widget type. The framework never reads inside it.
actions{event: Action}Event name to action. tap and long_press are wired automatically.
trackingJSONOpaque analytics payload forwarded to the host.

Decoding guarantees#

A widget whose type is unregistered, or whose data fails its model, is contained: the page renders without it, debug builds show a labelled placeholder, and the problem lands in diagnostics with its exact key path. See Resilience.