📄️ Sharing Global State
Some UI state needs to be visible across multiple components on a screen — for example, a cart item count that appears in both the app bar and a floating checkout button. In RUF, this presents a challenge: the client cannot mutate SessionMeta directly, so how can the UI reflect optimistic changes before the server responds?
📄️ Unique Error Codes
When an Action fails, the server returns an ActionResult with a code field. Using unique, stable error codes is strongly recommended — though the protocol does not mandate any specific format.
📄️ Force Update
Versioning lets the server maintain backwards compatibility with older client builds. But backwards compatibility has limits. Some changes — security patches, deprecated payment flows, breaking API redesigns — simply cannot be served correctly to very old clients. The FORCE_UPDATE screen is the escape hatch.
📄️ Optimistic Navigation
Optimistic navigation is a pattern where the client speculatively applies a navigation directive before the server responds, then either confirms or rolls it back once the response arrives. It reduces perceived latency on actions that are very likely to succeed.