[Bug] Maximum compatibility mode removes HDR information from JPEG photos in some cases
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 2.5k
- Forks
- 1k
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 13
Description
Steps to reproduce
- iOS camera settings set to "maximum compatibility" (saves photos as JPEG)
- Nextcloud Settings -> Additional settings -> maximum compatibility enabled ("saves images as jpeg if possible")
- Take a photo (e.g. a photo of lightbulb (to maximize the HDR effect))
- Go to the Nextcloud app and upload the photo to your Nextcloud (or let it upload via auto upload function) => file 1
- Switch to the iOS Photos app, select the photo and share it to Nextcloud (and upload it) => file 2
- Compare both files in your nextcloud => different file size, HDR is missing in file 1
- Now turn off Nextcloud maximum compatibility feature and repeat step 2-4. Both files are equal now
Expected behaviour
Both files should be the same size. Nextcloud's maximum compatibility should leave JPEG files unchanged.
Actual behaviour
1 photo, 2 files, 2 sizes and the auto-uploaded one is missing HDR information.
Environment data
iOS version: iOS 26.2
Nextcloud iOS app version: 33.0.2.1 (c) 2026
Server operating system:
Web server: Apache, nginx
Database: PostgreSQL 15.16
PHP version: 8.3.30
Nextcloud version: 31.0.14
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the issue in the Nextcloud iOS app with Maximum compatibility enabled, comparing an auto-uploaded JPEG with the same photo shared from the iOS Photos app. Trace the maximum-compatibility JPEG handling used by the upload flow and verify that an existing JPEG retains its HDR information and matches the shared file in size and contents.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100