nextcloud / nextcloud/ios

Videos (MP4, MOV...) don't start playing through the App

Open
#3,979 11 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
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 affected by the same issue.
  • 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.

Steps to reproduce
  1. Install Nextcloud (7.2.3 (7)) on iOS 26.2.1
  2. Upload any Video to your cloud, for lightweight testing purposes an mp4
  3. Click on the video through the files tab
Expected behaviour

What I expect is that the Video starts playing and I could use the app like normal.

Actual behaviour

When I try to watch a video (in this example mp4) the video doesn't load or either tries to load endlessly (unless cached/downloaded locally). Another note: when trying to the same video via web it does work and play without any interruption, so it is not a issue with the file. Other formats such as .mov behave the same.

Logs
2026-02-09 02:53:37 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794578&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=ea7ec3ab3687d24cb1a4897d72a805a1
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:37 GMT, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-request-id"): rACNRcn1lDRgvDd6lqlZ, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none']
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 success(2022 bytes)
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("Vary"): Brief,Prefer, AnyHashable("Server"): openresty, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:37 GMT, AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Content-Encoding"): gzip, AnyHashable("dav"): 1, 3, extended-mkcol, access-control, calendarserver-principal-property-search, nc-paginate, nextcloud-checksum-update, nc-calendar-search, nc-enable-birthday-calendar, AnyHashable("x-request-id"): nXbYjpSCFN0nPoZfmr8x, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Type"): application/xml; charset=utf-8, AnyHashable("Content-Length"): 861, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-debug-token"): nXbYjpSCFN0nPoZfmr8x, AnyHashable("content-security-policy"): default-src 'none';]
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794565&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=cc8d278f797f6265e85a389346785117
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/remote.php/dav/files/Test/3EFF6633-035C-4B29-B46C-273FAB9AB1F3.MP4
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Request started: PROPFIND https://nextcloud/remote.php/dav/files/Test/3EFF6633-035C-4B29-B46C-273FAB9AB1F3.MP4
2026-02-09 02:53:38 [DEBUG] Body: <?xml version="1.0" encoding="UTF-8"?>
<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">
    <d:prop><d:displayname /><nc:share-download-limits /><d:getlastmodified /><d:getetag /><d:getcontenttype /><d:resourcetype /><d:quota-available-bytes /><d:quota-used-bytes /><d:getcontentlength /><permissions xmlns="http://owncloud.org/ns"/><id xmlns="http://owncloud.org/ns"/><fileid xmlns="http://owncloud.org/ns"/><size xmlns="http://owncloud.org/ns"/><favorite xmlns="http://owncloud.org/ns"/><share-types xmlns="http://owncloud.org/ns"/><owner-id xmlns="http://owncloud.org/ns"/><owner-display-name xmlns="http://owncloud.org/ns"/><comments-unread xmlns="http://owncloud.org/ns"/><checksums xmlns="http://owncloud.org/ns"/><downloadURL xmlns="http://owncloud.org/ns"/><data-fingerprint xmlns="http://owncloud.org/ns"/><creation_time xmlns="http://nextcloud.org/ns"/><upload_time xmlns="http://nextcloud.org/ns"/><is-encrypted xmlns="http://nextcloud.org/ns"/><has-preview xmlns="http://nextcloud.org/ns"/><mount-type xmlns="http://nextcloud.org/ns"/><rich-workspace xmlns="http://nextcloud.org/ns"/><note xmlns="http://nextcloud.org/ns"/><lock xmlns="http://nextcloud.org/ns"/><lock-owner xmlns="http://nextcloud.org/ns"/><lock-owner-editor xmlns="http://nextcloud.org/ns"/><lock-owner-displayname xmlns="http://nextcloud.org/ns"/><lock-owner-type xmlns="http://nextcloud.org/ns"/><lock-time xmlns="http://nextcloud.org/ns"/><lock-timeout xmlns="http://nextcloud.org/ns"/><system-tags xmlns="http://nextcloud.org/ns"/><file-metadata-size xmlns="http://nextcloud.org/ns"/><file-metadata-gps xmlns="http://nextcloud.org/ns"/><metadata-photos-exif xmlns="http://nextcloud.org/ns"/><metadata-photos-gps xmlns="http://nextcloud.org/ns"/><metadata-photos-original_date_time xmlns="http://nextcloud.org/ns"/><metadata-photos-place xmlns="http://nextcloud.org/ns"/><metadata-photos-size xmlns="http://nextcloud.org/ns"/><metadata-files-live-photo xmlns="http://nextcloud.org/ns"/><hidden xmlns="http://nextcloud.org/ns"/><share-permissions xmlns="http://open-collaboration-services.org/ns"/><share-permissions xmlns="http://open-cloud-mesh.org/ns"/>    </d:prop>
</d:propfind>
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:38 GMT, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-request-id"): dRXB5ZfKgyMfUQDeVZQh, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none']
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794174&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=8a1a5242b16ce1306e1f007cf3dce250
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:38 GMT, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-request-id"): nGe2AtxYSF1xnRmbtHnZ, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none']
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 success(2123 bytes)
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("Vary"): Brief,Prefer, AnyHashable("Server"): openresty, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:38 GMT, AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Content-Encoding"): gzip, AnyHashable("dav"): 1, 3, extended-mkcol, access-control, calendarserver-principal-property-search, nc-paginate, nextcloud-checksum-update, nc-calendar-search, nc-enable-birthday-calendar, AnyHashable("x-request-id"): w5WK88rHbw9mch65MnBF, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Type"): application/xml; charset=utf-8, AnyHashable("Content-Length"): 896, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-debug-token"): w5WK88rHbw9mch65MnBF, AnyHashable("content-security-policy"): default-src 'none';]
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/remote.php/dav/files/Test/AC68C68F-18FC-407C-84F9-C3CA1FCCD33B.MP4
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Request started: PROPFIND https://nextcloud/remote.php/dav/files/Test/AC68C68F-18FC-407C-84F9-C3CA1FCCD33B.MP4
2026-02-09 02:53:38 [DEBUG] Headers: ["Accept": "application/xml", "Depth": "0", "X-NC-Account": "Test https://nextcloud", "X-NC-CheckInterceptor": "true", "OCS-APIRequest": "true", "Content-Type": "application/xml", "User-Agent": "Mozilla/5.0 (iOS) Nextcloud-iOS/7.2.3", "Authorization": "Basic TWF4aW06NlljNHo3MkxwMWZQVjZCSjY1dHBFMkVlQndsSmlDbEw1UEJGTDZ4MjU0bDNSekRkeW04RzNjSjliNERtanVRWm8xMzZBZ2JN"]
2026-02-09 02:53:38 [DEBUG] Body: <?xml version="1.0" encoding="UTF-8"?>
<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">
    <d:prop><d:displayname /><nc:share-download-limits /><d:getlastmodified /><d:getetag /><d:getcontenttype /><d:resourcetype /><d:quota-available-bytes /><d:quota-used-bytes /><d:getcontentlength /><permissions xmlns="http://owncloud.org/ns"/><id xmlns="http://owncloud.org/ns"/><fileid xmlns="http://owncloud.org/ns"/><size xmlns="http://owncloud.org/ns"/><favorite xmlns="http://owncloud.org/ns"/><share-types xmlns="http://owncloud.org/ns"/><owner-id xmlns="http://owncloud.org/ns"/><owner-display-name xmlns="http://owncloud.org/ns"/><comments-unread xmlns="http://owncloud.org/ns"/><checksums xmlns="http://owncloud.org/ns"/><downloadURL xmlns="http://owncloud.org/ns"/><data-fingerprint xmlns="http://owncloud.org/ns"/><creation_time xmlns="http://nextcloud.org/ns"/><upload_time xmlns="http://nextcloud.org/ns"/><is-encrypted xmlns="http://nextcloud.org/ns"/><has-preview xmlns="http://nextcloud.org/ns"/><mount-type xmlns="http://nextcloud.org/ns"/><rich-workspace xmlns="http://nextcloud.org/ns"/><note xmlns="http://nextcloud.org/ns"/><lock xmlns="http://nextcloud.org/ns"/><lock-owner xmlns="http://nextcloud.org/ns"/><lock-owner-editor xmlns="http://nextcloud.org/ns"/><lock-owner-displayname xmlns="http://nextcloud.org/ns"/><lock-owner-type xmlns="http://nextcloud.org/ns"/><lock-time xmlns="http://nextcloud.org/ns"/><lock-timeout xmlns="http://nextcloud.org/ns"/><system-tags xmlns="http://nextcloud.org/ns"/><file-metadata-size xmlns="http://nextcloud.org/ns"/><file-metadata-gps xmlns="http://nextcloud.org/ns"/><metadata-photos-exif xmlns="http://nextcloud.org/ns"/><metadata-photos-gps xmlns="http://nextcloud.org/ns"/><metadata-photos-original_date_time xmlns="http://nextcloud.org/ns"/><metadata-photos-place xmlns="http://nextcloud.org/ns"/><metadata-photos-size xmlns="http://nextcloud.org/ns"/><metadata-files-live-photo xmlns="http://nextcloud.org/ns"/><hidden xmlns="http://nextcloud.org/ns"/><share-permissions xmlns="http://open-collaboration-services.org/ns"/><share-permissions xmlns="http://open-cloud-mesh.org/ns"/>    </d:prop>
</d:propfind>
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
01:53:38 [AnyHashable("Vary"): Brief,Prefer, AnyHashable("Server"): openresty, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:38 GMT, AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Content-Encoding"): gzip, AnyHashable("dav"): 1, 3, extended-mkcol, access-control, calendarserver-principal-property-search, nc-paginate, nextcloud-checksum-update, nc-calendar-search, nc-enable-birthday-calendar, AnyHashable("x-request-id"): i2E7tlH2YzxDwL31WOi9, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Type"): application/xml; charset=utf-8, AnyHashable("Content-Length"): 891, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-debug-token"): i2E7tlH2YzxDwL31WOi9, AnyHashable("content-security-policy"): default-src 'none';]
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794355&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=f7ba77883febd84114c46722919f6771
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794572&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=a545f14bc4375bc0b514c2c8a9b90447
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Request started: GET https://nextcloud/index.php/core/preview?fileId=794572&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=a545f14bc4375bc0b514c2c8a9b90447
2026-02-09 02:53:38 [DEBUG] Headers: ["Accept": "application/json", "User-Agent": "Mozilla/5.0 (iOS) Nextcloud-iOS/7.2.3", "X-NC-CheckInterceptor": "true", "OCS-APIRequest": "true", "X-NC-Account": "Test https://nextcloud", "Authorization": "Basic TWF4aW06NlljNHo3MkxwMWZQVjZCSjY1dHBFMkVlQndsSmlDbEw1UEJGTDZ4MjU0bDNSekRkeW04RzNjSjliNERtanVRWm8xMzZBZ2JN"]
2026-02-09 02:53:38 [DEBUG] Body: None
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794578&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=ea7ec3ab3687d24cb1a4897d72a805a1
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Request started: GET https://nextcloud/index.php/core/preview?fileId=794578&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=ea7ec3ab3687d24cb1a4897d72a805a1
2026-02-09 02:53:38 [DEBUG] Headers: ["X-NC-Account": "Test https://nextcloud", "X-NC-CheckInterceptor": "true", "Accept": "application/json", "OCS-APIRequest": "true", "Authorization": "Basic TWF4aW06NlljNHo3MkxwMWZQVjZCSjY1dHBFMkVlQndsSmlDbEw1UEJGTDZ4MjU0bDNSekRkeW04RzNjSjliNERtanVRWm8xMzZBZ2JN", "User-Agent": "Mozilla/5.0 (iOS) Nextcloud-iOS/7.2.3"]
2026-02-09 02:53:38 [DEBUG] Body: None
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794565&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=cc8d278f797f6265e85a389346785117
2026-02-09 02:53:38 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794174&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=8a1a5242b16ce1306e1f007cf3dce250
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:38 GMT, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-request-id"): 4xEfraCN4SUVpfqrDne9, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none']
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:38 GMT, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-request-id"): PKmllyQws6nfnYlRIpIl, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none']
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:38 GMT, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-request-id"): SsrpjVzQfhzZh08qZg6e, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none']
2026-02-09 02:53:38 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:38 [DEBUG] Network response result: 2026-02-09 01:53:38 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:38 [DEBUG] Network response all headers: 2026-02-09 01:53:38 [AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:38 GMT, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-request-id"): OCBrpCNAkRsbpt1G1moD, AnyHashable("referrer-policy"): no-referrer, AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-content-type-options"): nosniff, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none']
2026-02-09 02:53:39 [DEBUG] Interceptor request url: https://nextcloud/ocs/v2.php/apps/dav/api/v1/direct
2026-02-09 02:53:41 [DEBUG] Network response result: 2026-02-09 01:53:41 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:41 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:41 [DEBUG] Network response all headers: 2026-02-09 01:53:41 [AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("x-request-id"): 0XJUDrsGGncIURnJm0QO, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:41 GMT, AnyHashable("referrer-policy"): no-referrer, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none', AnyHashable("x-content-type-options"): nosniff]
2026-02-09 02:53:41 [DEBUG] User: Test https://nextcloud
2026-02-09 02:53:41 [DEBUG] Network response result: 2026-02-09 01:53:41 failure(Alamofire.AFError.responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 404)))
2026-02-09 02:53:41 [DEBUG] Network response all headers: 2026-02-09 01:53:41 [AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("x-request-id"): HWT5xy1BzlivYVI1Zuyt, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:41 GMT, AnyHashable("referrer-policy"): no-referrer, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("Content-Length"): 2, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none', AnyHashable("x-content-type-options"): nosniff]
2026-02-09 02:53:48 [DEBUG] Network response result: 2026-02-09 01:53:48 success(194 bytes)
2026-02-09 02:53:48 [DEBUG] Network response all headers: 2026-02-09 01:53:48 [AnyHashable("x-frame-options"): SAMEORIGIN, AnyHashable("x-permitted-cross-domain-policies"): none, AnyHashable("x-request-id"): eG4zPMBe5p5Cbiw3UjJL, AnyHashable("x-user-id"): Test, AnyHashable("feature-policy"): autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none', AnyHashable("Content-Type"): application/json; charset=utf-8, AnyHashable("Server"): openresty, AnyHashable("Cache-Control"): no-cache, no-store, must-revalidate, AnyHashable("x-robots-tag"): noindex, nofollow, AnyHashable("Date"): Mon, 09 Feb 2026 01:53:48 GMT, AnyHashable("Content-Length"): 188, AnyHashable("Strict-Transport-Security"): max-age=63072000; preload, AnyHashable("x-served-by"): nextcloud, AnyHashable("Content-Encoding"): gzip, AnyHashable("referrer-policy"): no-referrer, AnyHashable("content-security-policy"): default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none', AnyHashable("x-content-type-options"): nosniff]
2026-02-09 02:54:17 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794355&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=f7ba77883febd84114c46722919f6771
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794572&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=a545f14bc4375bc0b514c2c8a9b90447
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794578&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=ea7ec3ab3687d24cb1a4897d72a805a1
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794565&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=cc8d278f797f6265e85a389346785117
2026-02-09 02:54:18 [DEBUG] User: Test https://nextcloud
2026-02-09 02:54:18 [DEBUG] Request started: GET https://nextcloud/index.php/core/preview?fileId=794565&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=cc8d278f797f6265e85a389346785117
2026-02-09 02:54:18 [DEBUG] Headers: ["Accept": "application/json", "Authorization": "Basic TWF4aW06NlljNHo3MkxwMWZQVjZCSjY1dHBFMkVlQndsSmlDbEw1UEJGTDZ4MjU0bDNSekRkeW04RzNjSjliNERtanVRWm8xMzZBZ2JN", "X-NC-Account": "Test https://nextcloud", "X-NC-CheckInterceptor": "true", "User-Agent": "Mozilla/5.0 (iOS) Nextcloud-iOS/7.2.3", "OCS-APIRequest": "true"]
2026-02-09 02:54:18 [DEBUG] Body: None
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794174&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=8a1a5242b16ce1306e1f007cf3dce250
2026-02-09 02:54:18 [INFO] Inside metadata folder .__NC_ROOT__ with permissions: GDNVCK
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/ocs/v2.php/apps/recommendations/api/v1/recommendations
2026-02-09 02:54:18 [DEBUG] User: Test https://nextcloud
2026-02-09 02:54:18 [DEBUG] Request started: GET https://nextcloud/ocs/v2.php/apps/recommendations/api/v1/recommendations
2026-02-09 02:54:18 [DEBUG] Body: None
2026-02-09 02:54:18 [DEBUG] Headers: ["X-NC-CheckInterceptor": "true", "X-NC-Account": "Test https://nextcloud", "Accept": "application/xml", "Authorization": "Basic TWF4aW06NlljNHo3MkxwMWZQVjZCSjY1dHBFMkVlQndsSmlDbEw1UEJGTDZ4MjU0bDNSekRkeW04RzNjSjliNERtanVRWm8xMzZBZ2JN", "OCS-APIRequest": "true", "User-Agent": "Mozilla/5.0 (iOS) Nextcloud-iOS/7.2.3"]
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794355&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=f7ba77883febd84114c46722919f6771
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794572&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=a545f14bc4375bc0b514c2c8a9b90447
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794578&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=ea7ec3ab3687d24cb1a4897d72a805a1
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794565&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=cc8d278f797f6265e85a389346785117
2026-02-09 02:54:18 [DEBUG] Request started: GET https://nextcloud/index.php/core/preview?fileId=794565&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=cc8d278f797f6265e85a389346785117
2026-02-09 02:54:18 [DEBUG] Headers: ["User-Agent": "Mozilla/5.0 (iOS) Nextcloud-iOS/7.2.3", "OCS-APIRequest": "true", "Authorization": "Basic TWF4aW06NlljNHo3MkxwMWZQVjZCSjY1dHBFMkVlQndsSmlDbEw1UEJGTDZ4MjU0bDNSekRkeW04RzNjSjliNERtanVRWm8xMzZBZ2JN", "X-NC-Account": "Test https://nextcloud", "X-NC-CheckInterceptor": "true", "Accept": "application/json"]
2026-02-09 02:54:18 [DEBUG] Body: None
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/index.php/core/preview?fileId=794174&x=1024&y=1024&a=1&mode=cover&forceIcon=0&mimeFallback=0&etag=8a1a5242b16ce1306e1f007cf3dce250
2026-02-09 02:54:18 [DEBUG] Interceptor request url: https://nextcloud/remote.php/dav/files/Test
2026-02-09 02:54:18 [DEBUG] Request started: PROPFIND https://nextcloud/remote.php/dav/files/Test
2026-02-09 02:54:18 [DEBUG] Headers: ["Authorization": "Basic TWF4aW06NlljNHo3MkxwMWZQVjZCSjY1dHBFMkVlQndsSmlDbEw1UEJGTDZ4MjU0bDNSekRkeW04RzNjSjliNERtanVRWm8xMzZBZ2JN", "Accept": "application/xml", "X-NC-CheckInterceptor": "true", "Content-Type": "application/xml", "User-Agent": "Mozilla/5.0 (iOS) Nextcloud-iOS/7.2.3", "OCS-APIRequest": "true", "X-NC-Account": "Test https://nextcloud", "Depth": "0"]
2026-02-09 02:54:18 [DEBUG] User: Test https://nextcloud
2026-02-09 02:54:18 [DEBUG] Body: <?xml version="1.0" encoding="UTF-8"?>
<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">
    <d:prop><d:displayname /><nc:share-download-limits /><d:getlastmodified /><d:getetag /><d:getcontenttype /><d:resourcetype /><d:quota-available-bytes /><d:quota-used-bytes /><d:getcontentlength /><permissions xmlns="http://owncloud.org/ns"/><id xmlns="http://owncloud.org/ns"/><fileid xmlns="http://owncloud.org/ns"/><size xmlns="http://owncloud.org/ns"/><favorite xmlns="http://owncloud.org/ns"/><share-types xmlns="http://owncloud.org/ns"/><owner-id xmlns="http://owncloud.org/ns"/><owner-display-name xmlns="http://owncloud.org/ns"/><comments-unread xmlns="http://owncloud.org/ns"/><checksums xmlns="http://owncloud.org/ns"/><downloadURL xmlns="http://owncloud.org/ns"/><data-fingerprint xmlns="http://owncloud.org/ns"/><creation_time xmlns="http://nextcloud.org/ns"/><upload_time xmlns="http://nextcloud.org/ns"/><is-encrypted xmlns="http://nextcloud.org/ns"/><has-preview xmlns="http://nextcloud.org/ns"/><mount-type xmlns="http://nextcloud.org/ns"/><rich-workspace xmlns="http://nextcloud.org/ns"/><note xmlns="http://nextcloud.org/ns"/><lock xmlns="http://nextcloud.org/ns"/><lock-owner xmlns="http://nextcloud.org/ns"/><lock-owner-editor xmlns="http://nextcloud.org/ns"/><lock-owner-displayname xmlns="http://nextcloud.org/ns"/><lock-owner-type xmlns="http://nextcloud.org/ns"/><lock-time xmlns="http://nextcloud.org/ns"/><lock-timeout xmlns="http://nextcloud.org/ns"/><system-tags xmlns="http://nextcloud.org/ns"/><file-metadata-size xmlns="http://nextcloud.org/ns"/><file-metadata-gps xmlns="http://nextcloud.org/ns"/
Environment data

iOS version: e.g. iOS 17.6.1
iOS 26.2.1

Nextcloud iOS app version: see More > Settings
7.2.3 (7)

Server operating system:
Debian 1:6.12.34-1+rpt1~bookworm aarch64

Web server:
Apache

Database:
MariaDB

PHP version:
8.2

Nextcloud version: see Nextcloud admin page
(32.0.5)

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

Start by reproducing playback from the app's Files tab on iOS 26.2.1, then trace the logged core/preview and remote.php/dav/files requests. Compare the app's handling of MP4 and MOV files with the working web behavior; done means supported videos start playing without requiring a local cache.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, swift
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.