Rows
Convergent working state
Use rows for structured facts the app reads and changes locally: status, titles, notes, relationships, and file references.
- Local reads and writes
- Queued changes can travel later
- Every opened mesh is a full row replica
Architecture decision 02 · Data scope
Rows are complete local working state that converges. Durable files are exact remote objects fetched on demand. Separate meshes bound replication, trust, and failure together. Model those distinctions before choosing tables or adapters.
Three placement decisions
The most important topology choice is not the table shape. It is deciding which data must be available and convergent together, which bytes remain directly remote, and which readers may receive a complete local copy.
Rows
Use rows for structured facts the app reads and changes locally: status, titles, notes, relationships, and file references.
Files
Use durable files for documents, media, and other objects whose bytes should not enter row merge or snapshots.
Meshes
Split databases when groups of endpoints should receive different row sets, keys, lifecycles, or practical size limits.
Availability map
A local reference to a file can remain available in a row while the bytes still require the remote. Durable local row storage is also required if queued work must survive a process or browser restart.
The local store owns current rows, receipts, cursors, and the outbox.
Row changes can remain pending until transport is available.
Trusted endpoints pull the same changes and apply the same merge rules.
File upload, download, metadata, and deletion call storage directly.
Long-offline devices
After the configured finite offline-retention window, a device rebuilds row state from the latest snapshot and quarantines its stale queued operations instead of publishing them automatically. Design review or reapplication for valuable disconnected work.
Practical scale
Every endpoint stores the complete row mesh, and compaction creates and uploads a complete snapshot. Device storage, memory, transfer time, provider limits, and snapshot size can all become the limiting factor.
Canonical detail
Size a representative mesh, confirm which values belong in rows or durable files, then check compaction and Worker limits against the chosen deployment.