Finding (from the #1189 RN/Metro async review of PR #1346)
Scope note rather than defect: #1189's design listed a "WS/message-bus client" among the sdk's contents, and v1 ships without one. The sdk covers REST (tower-client) and SSE decoding (sse), but subscribing to /ws/messages (MessageFrame stream) still requires each consumer to hand-roll a WebSocket client, reconnect policy wiring, and frame parsing.
Consumers that will need it: the mobile chat + feed (first RN spike consumer), the web dashboard's eventual migration onto the sdk, and every consumer of #1194's typed gate-event frames (which ride the message bus as BusEventMeta).
Ask
Confirm this was a deliberate v1 cut (likely: no consumer exists yet, matching the extract-on-evidence principle), and keep this issue as the tracking point for adding it when the first consumer lands. Shape suggestion when it happens, mirroring the existing seams: injected WebSocket constructor (RN provides a global WebSocket; Node consumers inject ws), reconnect-policy for backoff, typed MessageFrame from codev-types, and lifecycle hooks compatible with RN AppState foreground reconnects (verified necessary on-device in the LAN spike, codev/research/mobile/spikes/expo-lan-reachability-2026-07.md).
Finding (from the #1189 RN/Metro async review of PR #1346)
Scope note rather than defect: #1189's design listed a "WS/message-bus client" among the sdk's contents, and v1 ships without one. The sdk covers REST (
tower-client) and SSE decoding (sse), but subscribing to/ws/messages(MessageFrame stream) still requires each consumer to hand-roll a WebSocket client, reconnect policy wiring, and frame parsing.Consumers that will need it: the mobile chat + feed (first RN spike consumer), the web dashboard's eventual migration onto the sdk, and every consumer of #1194's typed
gate-eventframes (which ride the message bus asBusEventMeta).Ask
Confirm this was a deliberate v1 cut (likely: no consumer exists yet, matching the extract-on-evidence principle), and keep this issue as the tracking point for adding it when the first consumer lands. Shape suggestion when it happens, mirroring the existing seams: injected WebSocket constructor (RN provides a global
WebSocket; Node consumers injectws),reconnect-policyfor backoff, typedMessageFramefromcodev-types, and lifecycle hooks compatible with RNAppStateforeground reconnects (verified necessary on-device in the LAN spike,codev/research/mobile/spikes/expo-lan-reachability-2026-07.md).