Skip to content

Mobile apps: offline session cache with instant cold open (iOS + Android) #100194

Description

@steipete

Problem

Both mobile apps keep chat history purely in memory. On a cold open the transcript area is blank until the gateway responds, and when the gateway is unreachable (server asleep, network change, tunnel down) the apps show nothing at all — even for conversations the user was reading minutes earlier.

Proposal

Add a read-only local cache of sessions and recent messages on both platforms:

  • Cache-first cold open: render the cached transcript immediately, fetch fresh history over it, and reconcile without a visible scroll jump.
  • Offline read-only mode: when the gateway is unreachable, sessions and transcripts stay browsable with composing/actions disabled and a clear offline indicator.
  • Cache is per-gateway, bounded (recent sessions + last N messages), and safe to drop/rebuild at any time — it is a cache, not a second source of truth. No offline send queue in scope.

Platform sketch: iOS/shared chat UI backed by SwiftData or SQLite; Android backed by Room. Read path stays gateway-first whenever connected.

Impact

Instant transcripts on launch and graceful behavior on flaky connections — the two most visible rough edges of the current foreground-first experience.

Metadata

Metadata

Assignees

Labels

P2Normal backlog priority with limited blast radius.app: androidApp: androidapp: iosApp: iosclawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.enhancementNew feature or requestimpact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.maintainerMaintainer-authored PRmaturity:stableIssue affects a taxonomy feature currently scored M4/M5.

Type

No type

Fields

Priority

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions