Back to Overview
CORE CONCEPTSAvailable

Stable Addresses

Deterministic dot-separated identifiers for screens, states, actions, relations, and slices.


Definition & Purpose

Stable Addresses are the core mechanism that makes UXDL machine-verifiable. By giving every screen node, state variant, interactive trigger, transition outcome, and requirement slice a deterministic dot-separated address, teams ensure that PRDs, designs, code, and automated tests refer to the exact same product element.

Complete Address Hierarchy

UXDL 0.1 establishes a strict dot-separated address hierarchy:

YAML
# Screen Address:
screen_id
# State Address:
screen_id.states.state_id
# Action Address:
screen_id.actions.action_id
# Relation Address:
screen_id.actions.action_id.relations.relation_id
# Slice Address:
slices.slice_id

Domain Address Examples

Here is how a complete e-commerce billing flow translates into address notation:

  • Screen: billing
  • State: billing.states.past_due
  • Action: billing.actions.retry_payment
  • Relation: billing.actions.retry_payment.relations.success
  • Slice: slices.payment_recovery

AI Agent & Tooling Usage

When coding agents (such as Claude, Cursor, Antigravity, or Gemini) analyze codebase changes or generate tests, they use stable addresses as exact reference targets. This eliminates guesswork and prevents agents from hallucinating non-existent screens or states.

Complete Mapping Example

Here is how YAML elements map directly to their stable address strings:

YAML
screens:
billing: # Address: billing
states:
past_due: Payment past due # Address: billing.states.past_due
actions:
retry_payment: # Address: billing.actions.retry_payment
relations:
success: # Address: billing.actions.retry_payment.relations.success
to: billing
state: active