diff --git a/apps/mana/apps/web/src/lib/data/sync.ts b/apps/mana/apps/web/src/lib/data/sync.ts index ef65a6c2b..cf672eb1c 100644 --- a/apps/mana/apps/web/src/lib/data/sync.ts +++ b/apps/mana/apps/web/src/lib/data/sync.ts @@ -459,6 +459,13 @@ export type SyncStatus = 'idle' | 'syncing' | 'error' | 'offline'; // ─── Config ─────────────────────────────────────────────────── const PUSH_DEBOUNCE = 1000; +/** + * Maximum number of pending changes to include in a single push request. + * Prevents multi-MB payloads when a user was offline for weeks and + * accumulated thousands of changes. The push loop re-schedules itself + * after each batch so all changes eventually drain. + */ +const PUSH_BATCH_SIZE = 200; const PULL_INTERVAL = 30_000; const WS_RECONNECT_DELAY = 5000; @@ -662,14 +669,19 @@ export function createUnifiedSync(serverUrl: string, getToken: () => Promise PUSH_BATCH_SIZE; setStatus('syncing'); const startedAt = Date.now();