iOS Safari kills fetch requests when the app goes to background or the connection drops during large uploads, producing 'load failed'. The sync engine was burning through all 5 retries instantly with no delay, so a transient failure became permanent. Changes: - Add AbortController timeout (120s) on upload fetch - Add exponential backoff between retries (2s, 5s, 10s...60s) - Increase max retries from 5 to 15 for flaky mobile networks - Remove 10MB resize step that was re-compressing photos already sized at capture time, avoiding extra memory pressure on iOS - Log photo size with each upload attempt for easier debugging Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9.6 KiB
9.6 KiB