What to build
Extend shared persistence contracts through Board and settings save/read/delete callers on Android and iOS. Replace ordinary handwritten iOS writes with GRDB records; keep Room entity writes and preserve Board tombstones and settings semantics.
Part 3 of the approved cross-platform persistence reliability plan. Android and iOS remain separate native implementations with shared observable contracts. Local planning document: docs/persistence-reliability-plan.md; this issue is self-contained. Type: AFK.
Likely files
modules/vescape-core/ios/telemetry/AppDataRepository.swift - production behavior or caller to inspect
modules/vescape-core/ios/telemetry/AppDataRepositorySettingsTests.swift - existing verification seam
modules/vescape-core/ios/telemetry/AppDataRepositoryBoardLinkTests.swift - existing verification seam
modules/vescape-core/android/src/main/java/expo/modules/vescapecore/telemetry/AppDataRepository.kt - production behavior or caller to inspect
modules/vescape-core/src/index.ts - native bridge contract
Implementation hints
Keep Room on Android and GRDB on iOS. Native owns durable truth; JS renders state and sends intents. Follow bidirectional @parity links and preserve bridge payloads. Custom SQL is allowed for migrations and aggregate updates with real DB tests. Use existing error UI and avoid a generic persistence/recovery framework. Diagnostics transport follows ADR 0031; Sentry handles errors independently of local event persistence. Use bun commands and appropriate scoped verification.
Acceptance criteria
Blocked by
Related
What to build
Extend shared persistence contracts through Board and settings save/read/delete callers on Android and iOS. Replace ordinary handwritten iOS writes with GRDB records; keep Room entity writes and preserve Board tombstones and settings semantics.
Part 3 of the approved cross-platform persistence reliability plan. Android and iOS remain separate native implementations with shared observable contracts. Local planning document: docs/persistence-reliability-plan.md; this issue is self-contained. Type: AFK.
Likely files
modules/vescape-core/ios/telemetry/AppDataRepository.swift- production behavior or caller to inspectmodules/vescape-core/ios/telemetry/AppDataRepositorySettingsTests.swift- existing verification seammodules/vescape-core/ios/telemetry/AppDataRepositoryBoardLinkTests.swift- existing verification seammodules/vescape-core/android/src/main/java/expo/modules/vescapecore/telemetry/AppDataRepository.kt- production behavior or caller to inspectmodules/vescape-core/src/index.ts- native bridge contractImplementation hints
Keep Room on Android and GRDB on iOS. Native owns durable truth; JS renders state and sends intents. Follow bidirectional @parity links and preserve bridge payloads. Custom SQL is allowed for migrations and aggregate updates with real DB tests. Use existing error UI and avoid a generic persistence/recovery framework. Diagnostics transport follows ADR 0031; Sentry handles errors independently of local event persistence. Use bun commands and appropriate scoped verification.
Acceptance criteria
Blocked by
Related