UI Builder : Dynamic data binding for a list component fixed query inside a repeater not working

Ruthra1
Tera Contributor

An issue with UI Builder where a Record List component inside a Repeater does not correctly apply a dynamically bound value in its fixed filter. This results in incorrect data being shown for each repeated item.

Key points

  • Use case: Display child relationships of a Business Application across n-1 levels
  • Setup: Repeater iterating over immediate children from a custom data broker
  • Problem: The Record List’s fixed filter inside the Repeater does not receive the child’s bound value per item, leading to wrong records being displayed
  • Impact: Cannot reliably render hierarchical child data; incorrect lists at each level

Context

  • We built a custom data broker to fetch immediate children for a selected Business Application.
  • A Repeater is bound to the broker’s output to iterate over each child.
  • Inside the Repeater, a Record List is configured to show the next level of children.
  • The Record List uses a fixed filter that is intended to be dynamically bound to the current Repeater item’s identifier (e.g., sys_id).

Issue details

  • The dynamic binding for the child value in the Record List’s fixed filter does not resolve per Repeater item.
  • The list displays either unfiltered data or data filtered by the wrong/stale value, so multiple repeated lists show the same or incorrect records.

Steps to reproduce

  1. Create a custom data broker to return the immediate children of a selected Business Application.
  2. Add a Repeater in UI Builder and bind it to the broker’s children result.
  3. Inside the Repeater, place a Record List component targeting the CMDB Relationship.
  4. In the Record List, configure a fixed filter that should be bound to the current Repeater item’s value (e.g., parent/relationship field = {{item.value.sys_id}}).
  5. Preview the page and observe the lists rendered within each Repeater item.

Expected result

  • Each Record List instance applies the bound child value unique to that Repeater item, showing only that item’s direct children.

Actual result

  • The fixed filter does not properly bind per item. Multiple Record Lists show incorrect or identical data, as if the filter value is missing or taken from another item.

Observations and troubleshooting

  • Binding preview shows the correct value at the component level, but the actual list query does not reflect it.
  • If we hardcode the filter value, the Record List works as expected.
  • When the Record List is placed outside the Repeater, the filter behaves correctly.
  • Behavior suggests the fixed filter is not re-evaluated per Repeater item or is evaluated before the item context is available.
  • Tried reordering data loading and adding explicit refresh; results unchanged.
1 REPLY 1

Naveen20
ServiceNow Employee
Looks like a UI Builder limitation: the Record List's data context (including its fixed filter) is established at mount and does not reliably re-evaluate @item.value. bindings per Repeater iteration. This matches your observation that hardcoded values work but per-item bindings don't, and that placing the list outside the Repeater works.

Most reliable fix — push the work to data broker. Return the full hierarchy as a nested structure where each object carries its own children array down N-1 levels, then use nested Repeaters and render rows with stylized text/link components. You already have the records, so Record List is unnecessary.

Alternative — inside the outer Repeater, add a Look up multiple records data resource on cmdb_rel_ci with parent bound to @item.value.sys_id, then render results with an inner Repeater.