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