Raxx · internal docs

internal · gated ↑ index

ADR 0006 — iOS Offline Posture: Read-Only Cached State

Status: Accepted Date: 2026-04-22 Deciders: software-architect Scope: Raxx iOS app behavior when the device has no network connectivity

Context

Options trading requires real-time market data and a live connection to the broker API. The iOS app must have a defined posture when the user is offline: does it queue actions, show stale data without labeling it, show a hard error screen, or display a read-only snapshot with clear staleness labeling?

Decision

Read-only cached state with explicit staleness disclosure. On network loss, the app:

  1. Displays the last successfully fetched portfolio snapshot, positions list, and fill history.
  2. Shows a persistent banner: "No connection — data last updated at [timestamp]."
  3. Disables all write controls: order entry, settings changes, credential management. Tapping a disabled control shows an explanatory prompt ("Connect to the internet to place orders").
  4. Does not queue orders for deferred submission. Any pending order is cancelled and the user is informed.
  5. On network recovery, the app refreshes immediately before re-enabling write controls.

Consequences

Positive

Negative / risks

Neutral

Alternatives considered

Hard error screen on network loss

Rejected. Too disruptive for brief connectivity interruptions (subway, elevator). Showing the last known state with clear labeling is more useful.

Offline order queue with submission on reconnect

Rejected. Options prices change fast. A queued order submitted minutes or seconds late could result in significant financial harm. The paper-first gating invariant does not protect against this — it only gates live execution, not bad fill prices on paper trades. Queueing is not appropriate for this domain.

Optimistic local writes with server sync

Rejected for v1. Introduces conflict resolution complexity and a local write store that becomes PII-bearing (order intent is financial data). Out of scope for a companion app.

Compliance checklist

Revisit when