nextcloud / nextcloud/ios

iOS cannot reliably verify photo/video uploads — add local upload log

Open
#3,947 0 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Swift
Stars
2.5k
Forks
1k
Avg merge
2d 18h
Merged PRs (30d)
13

Description

How to use GitHub
  • Please use the 👍 reaction to show that you are interested into the same feature.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Feature request

Is your feature request related to a problem? Please describe.

On iOS, background uploads (especially photos and videos) may fail, pause, or be retried silently due to iOS background execution limits.

Users cannot easily verify:

  • whether a photo or video was successfully uploaded,
  • if an upload failed or never started,
  • when the last verification of an upload occurred.

This lack of visibility reduces confidence and makes troubleshooting difficult, especially with automatic uploads.


Describe the solution you'd like

Add an optional, local-only upload activity log in the Nextcloud iOS app with support for debugging fields.

The log would:

  • be stored locally on the device only, opt-in (disabled by default),
  • record basic upload lifecycle events:
    • queued
    • uploading
    • completed
    • failed
  • include metadata:
    • localFilename → actual iOS file
    • uploadFilename → expected name on Nextcloud
    • fileType → photo / video / document / audio
    • fileSize → file size in bytes
    • lastModified → timestamp of creation
    • status → pending / uploaded / missing
    • lastCheck → timestamp of last verification on Nextcloud
    • retryCount → number of times verification or upload has been retried

Note: To verify whether a file was successfully uploaded, the app may need to perform a WebDAV or REST API request to the Nextcloud server. This check would be optional and triggered only when the user wants to confirm the upload status, ensuring the log remains mostly local and lightweight.

Optionally, the user could view this log in the app and export it for debugging or support purposes.

The goal is to improve transparency, reliability, and debugging capability, without sending data to the server.

This feature would allow iOS users to independently verify uploads, improve reliability, and assist in debugging without impacting server performance or privacy.

Clarification on scope:

This feature is intended to track all uploads, including both instant uploads (triggered immediately when a new photo or video is added) and background uploads (uploads that continue or start while the app is in the background or after being paused). This ensures that users can reliably verify every file upload, regardless of iOS background execution limitations.


Example JSON entry for a single file
{
  "localFilename": "IMG_1234.JPG",
  "uploadFilename": "2026-01-15_IMG_1234.JPG",
  "fileType": "photo",
  "fileSize": 3456789,
  "lastModified": "2026-01-15T14:23:10Z",
  "status": "pending",
  "lastCheck": "2026-01-15T16:00:00Z",
  "retryCount": 1
}

Describe alternatives you've considered
  • Server-side logging: not suitable, as this does not help users understand what happened locally on iOS before or during background uploads.
  • External scripts or server checks: not user-friendly and not accessible to most users.
  • iOS Shortcuts or companion apps: possible, but limited and not well integrated compared to a native solution.

Additional context
  • The log would be local-only, with no analytics and no data sent to the server.
  • Retention could be limited (e.g. last N entries or last X days).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or code entry points are named. Start by mapping the iOS instant-upload and background-upload flows, then determine how local opt-in storage and optional verification fit both paths. Done means the scope, retention, privacy behavior, and user-facing log or export requirements are defined and covered by tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, swift
Domain
mobile
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.