Skip to content

[photos][iOS] Backup silently and slowly fails when no local storage left on device during backup #10031

@yborunov

Description

@yborunov

Description

When iOS device storage is full (or too low), Ente can fail during backup while fetching/caching originals from iCloud Photos or writing temporary encrypted upload files.
Today this appears to fail as generic upload/file errors and retries, but without a clear user-facing reason like “Device storage is full”.
This makes backup look stuck/indefinitely retrying and users don’t know they must free local space.


Steps to reproduce

  1. Use Ente Photos on iOS with iCloud Photos enabled.
  2. Keep device local storage nearly full.
  3. Start/continue backup of iCloud-backed assets.
  4. Observe backup progress (looping through assets fast) and no error surfacing other than retry / contact support button.

Actual behavior

  • Individual uploads fail and are retried.
  • Backup may remain in retry/error-ish state without clear diagnosis.
  • No explicit notification/banner indicating local device storage is full.

Expected behavior

When backup fails due to local storage exhaustion (e.g. inability to materialize source file/cache or write temp encrypted files), Ente should:

  1. Detect and classify this as a local-disk-space error.
  2. Surface a clear message in backup status (and optionally push/local notification), e.g.:
    • “Backup paused: device storage is full. Free up space and retry.”
  3. Avoid noisy blind retries until storage recovers (or retry with backoff + clear UX state).
  4. Optionally provide quick action/link to storage guidance.

Why this matters

For iOS + iCloud Photos flows, temporary local storage is required for backup. Without explicit handling, users cannot distinguish:

  • network issues,
  • cloud quota issues,
  • local device storage exhaustion.
    This increases support load and causes confusion about backup reliability.

Platform / product

  • Product: Ente Photos
  • Platform: iOS
  • Area: Backup / Sync

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions