Knowledge from the fieldRedM

Custom RDR3 HUD widgets: request UIFLOWBLOCK → poll UiflowblockIsLoaded → databind → UiflowblockEnter (strict ordering)

learning:56

Custom RDR3 HUD widgets: request UIFLOWBLOCK → poll UiflowblockIsLoaded → databind → UiflowblockEnter (strict ordering)

Context

Building a native HUD element (timer, rank bar) uses the UIFLOWBLOCK + DATABINDING + UISTATEMACHINE native families. These are bare p0/Any stubs with no descriptions, so the purpose and ordering are unknown from the docs. Purpose below is inferred from jo_libs usage (treat as medium-confidence).

The flow

_UIFLOWBLOCK_REQUEST(flowblockId)            -- 0xC0081B34E395CE48 ; id e.g. -119209833
while not UiflowblockIsLoaded(fb) do Wait(0) end   -- 0x10A93C057B6BD944 ; MUST poll before use
DatabindingAddDataContainerFromPath(...)
DatabindingAddDataString/Int/Bool(...)       -- typed entries
UiflowblockEnter(fb, `cTimer`)
UiStateMachineCreate(...)

The trap

Writing databinding entries before the flowblock reports loaded silently no-ops. On teardown, guard each removal with DatabindingIsEntryValid before DatabindingRemoveDataEntry, and destroy the state machine.

Verified

ui/client.lua:31-58 (request/load/databind), :93-105 (cleanup), rank bar ui/client.lua:8-14.

Linked natives

  • _UIFLOWBLOCK_IS_LOADED (0x10A93C057B6BD944)
  • _UIFLOWBLOCK_REQUEST (0xC0081B34E395CE48)

Tags: uiflowblock, databinding, uistatemachine, hud, ordering, rdr3
Category: natives
Source: jo_libs-fleet
Created: 2026-05-31T09:40:38.609Z

Back to documentation