Fuaranfuaran

The source for generative UI

Identity that survives the conversation

Last reviewed: July 2026.

When a model regenerates a UI fragment – "change the metric count to four" – what happens to the components it didn't mean to change? In text-emission systems, the regenerated fragment carries no guarantee of preserving the identity of unchanged children. Framework affordances like React's key prop can mitigate this when the author remembers, but the language doesn't require it and the model holds no contract to maintain it. The consequences land on the user: lost scroll positions and local state, restarted animations, effects re-fired on nodes that never changed.

Fuaran makes identity a typed, permanent property. Every node carries a NodeId whose lifetime is the node itself: not the render, not the session. The contract is blunt: if trees at turn N and turn N+1 share a NodeId, the runtime must treat them as the same logical node, preserving its local state and continuity. The id is written into human-authored source, carried in the wire format on every emission, and – for nodes an agent adds mid-session – persisted in the edit history, so the guarantee spans sessions rather than only surviving one.

Three mechanisms hold it up:

  • The validator enforces uniqueness at build time – two colliding ids in one scope fail the build, with both occurrences named.
  • The wire format requires id on every node, and the model always sees the current tree's ids, so addressing an existing node is a lookup, not a guess.
  • Edits address nodes by id, not by index. "Edit revenue-kpi" is the same operation wherever that node currently sits in the child order. This choice is deliberate: index-addressed edits – what generic structural-editing machinery would suggest – are fragile under sibling reordering, which is one of the most common things an AI does to a tree. Id-addressed edits are stable under it.

The payoff compounds with conversation length. At turn two, identity barely matters. At turn twelve – after inserts, moves, and reorders – it is the difference between an interface that accumulated history and one that accumulated drift. And because ids are permanent, everything downstream can key off them: the edit history addresses them, the layout and style observers report facts against them, and a rendered element can be traced back to the exact node an agent emitted, however long ago.

A rule of thumb falls out: any system that lets an AI edit a UI iteratively needs an identity contract; if the language doesn't provide one, the users are it.