Dependencies flow downward. @stratasync/core has zero runtime dependencies on any framework, storage engine, or transport: you can test sync logic in pure Node.js without a browser.
Storage, transport, and reactivity adapters implement interfaces from @stratasync/core and are injected at runtime via SyncClientOptions. Swap adapters without changing the dependency graph.
The ModelRegistry stores field metadata, relation metadata, load strategies, and a deterministic schema hash for cache-busting and migrations.
A durable local replica in IndexedDB storing model rows, sync metadata, the persistent outbox, and partial-index coverage. The StorageAdapter interface is transport-agnostic.
Handles bootstrapping, delta streaming over WebSockets (with HTTP fallback), outbox management with retry and idempotency keys, and field-level LWW rebase on conflicts.
Moves data between client and server using NDJSON streaming for bootstrap, GraphQL mutations with batch support, and WebSocket subscriptions for real-time deltas.