mirror of
https://github.com/immich-app/immich.git
synced 2026-02-05 00:30:57 +03:00
[BUG] iOS background sync does not work #707
Closed
opened 2026-02-04 22:03:56 +03:00 by OVERLORD
·
27 comments
No Branch/Tag Specified
main
feat/asset-file-apis
chore/translations
fix/web-switch-label-clickable
fix/web-people-hidden-state
renovate/typescript-projects
release/next
fix/timezones
fix/time-zone-upserts
midzelis/wip
push-zpwsovysllvn
push-nwxlpmyzkyrl
push-nvnkszuqwppm
renovate/github-actions
push-smstsuupsowp
refactor/adaptive_image
push-olwpzvrxnomt
push-lmxsupnmxspl
renovate/machine-learning
feat/web-chromecast-video-looping
feat/use-native-clients
renovate/flutter
fix/create-face-edited
fix/mobile-ios-mtls
docs/contributing
docs/mise-mobile
renovate/grafana-monorepo
feature/bottom-buttons-order
feat/immich-mobile-ui-showcase
refactor/consolidate-image-requests
renovate/connectivity_plus-7.x
renovate/major-vitest-monorepo
renovate/pypi-python-multipart-vulnerability
fix/mobile-people-query
sqlite_thumbs
feat/html-text
chore/no-macro-validation
refactor/purchase-store
uhthomas/mobile-fix-app-bar-fade
uhthomas/mobile-fix-asset-jump
feat/pano-ocr
feat/shared-link-login
fix/database-backup-db-names
fix-keep-correct-ios-shared-album-asset
fix-memory-generation-and-display
feat/verify-permissions
refactor/album-service-small-tests
fix/ml-rocm-build
fix/flipped-dimensions-mobile
push-vpxwmwwxwnvw
fix-migration-width-height
refactor/more-queries
revert/prettier-translations
refactor/asset-service-queries
fix/locale-settings-desc
chore/add-debug-log
feat/edit-filters
shared-deep-link-handler
feat/mobile-editing
feat/thumbnail-native-clients
feat/platform-clients
feat/integrity-checks-izzy
fix/foreground-cloud-sync
feat/dynamic-layout
filter-by-person
feat/csp
refactor/sidebar
fix/disable-editing
fix/view-timeline-deeplink
image-zoom-on-slow-connection
fix-consider-dar-for-video-dimension
fix/merged-edited-assets
perf/optimize-album-sort
open-api-fix
feat/create-job-with-dto
use-toast-primary
feat/vitest-4
feat/ios-fastlane-match
match-signing
fix-update-time-update-timeline
chore/translation-keys
feat/modal-routes
feat/panorama-tiles
feature/mobile-view-asset-owner
feat/system-settings
feature/show-activity-count
better-info-in-asset-viewer
fix/all-people-count
feat/location-favorites
feature/rearrange-buttons-2
fix/download-storage-template
feat/kb-shortcuts-mobile
fix/people-count
push-qolzzzzxrvvn
chore/originals-in-asset-files
feat/asset-size-columns
ben/tree-a11y
new-search-filter-ui
refactor/expectSelectedReadonly
refactor/mobile-grdb
push-qvuktpxmkknu
feat/mobile-native-local-sync
refactor/timeline_ops
fix/scrubber_end
feat/version.txt
feat/context-menus
feat/server-chunked-uploads
refactor/virtualsegment
refactor/rename_daymonth_groups
fix/restrict-android-bg-worker
feat/android-periodic-worker
fix-remote-sync-clean-up
refactor/timeline_move_ops
renovate/mapbox-mapbox-gl-rtl-text-0.x
fix/timeline_split_selectable
feat/keyboard_actions_help_modal
feat/static_frontend
feat/notification-warnign-android
feat/plugins2
feat/plugins
test/create-workflow-token-action
fix/docs-force
debug/search-result-similarity
debug/cf-chunked-uploads
feat/eslint_rule
feat/search-filter-album/web
refactor/timeline_photostream
refactor/timelineasset_asset
feat/session-permissions
feat/timeline_photostream_assetnav
feat/timeline_minor_optimize
feat/timeline_perf_nocomp
feat/timeline_search_results_actions
feat/timeline_search_results_page
fix/timeline_padding
fix/timeline_search_reactivity_warnings
feat/timeline_scrollbar
feat/timeline_stream_withviewer
fix/timeline_back_forth_nav
refactor/timeline_photostream_component
fix/generated-files-checks
fix/locate-button-local
chore/base-image-mimalloc
refactor/timeline_assetlayout
refactor/timeline_selectable
refactor/timeline_aware_actions
refactor/timeline_monthsegment
feat/remove-old-pages
chore/deps-gradle
tmp_photostream
tmp/lcms
feat/mobile-dynamic-thumbnails
fix/mobile-finer-thumbnail-concurrency
refactor/timeline1
refactor/extract_photostream
refactor/rename_load_api
refactor/timeline2
refactor/timeline3
feat/multi-select-asset-viewer
feat-no-thumbhash-cache
refactor/asset_grid
feat/faster-access-checks
fix/18991
fix/19543
chore/temp-remove
fix/21419
feat/mobile-hdr-images
chore/update-mise-lockfile
feat/mise-server-checks
feat/mise-ci
feat/windows-2025
feat/dev_cli
refactor/mobile-migrate-clients
fix/map-theme
fix/require-checkbox
chore/use_swc
feat/efficient-thumbnail-decoding
refactor/mobile-thumbhash
refactor/mobile-thumbhash-new
fix/mobile-uncached-zoom
feat/beta-background-upload
fix/beta-timeline-memories-setting
fix/failed-uploads-not-removed
feat/mobile-shared-album
feat/groups
drift-map-page
drift-auth-user-sync
fix/disable-memory
feat/add-to-album-action
edit-date-time-action
drift-people-page
sqlite-remove-isIn
feat/inline-storage-columns
chore/required-reviewers
refact/asset-manager
fix/folder-sort
pnpm
feat/widget-multiple-server-urls
chore/medium-tests-dbname
fix/web-no-iterator-find
fix/map-pan-interruption
track-livephotos
timeline_events
chore/oxlint-migration
feat/maintenance-worker
feat/dav
chore/demo-snapshot
refactor/server-side-dedupe
feat/integrity-checks
dev/recognition-eval
lighter_buckets_test
perf/postgres-queue
postgres-queue
focus_rings
refactor/web-stores-1
refactor/add-to-taken
feat/sort-places
feat/sidecar-asset-file
vet
tmp/demo-snapshot-preview
fix/server-migration-file-extension
refactor/mobile-v2
fix/asset-update-race-condition
rknn-toolkit-lite2
refactor/mobile-split-up-search-page
feature/Add-rocm-support-for-machine-learning
feat/rocm
chore/async-hash-file
feat/shared-link-view-count
feat/rotation
feat/graphql
feat/job-ids
feat/ignore-library-permission-error
feat/docker-compose-builder
feat/kysely-typeorm
mobile/onboarding
no-video-player
fix/server-qsv-output-format
chore/server-geodata-tweaks
mobile/native-video-player-no-hero
feat/xxhash
fix/docs-concurrency
feat/preload-ml-textual-model
feat/local-tileserver
refactor/exif-orientation
original-path-infix
refactor/mobile/login-form-1
feat/server-editor-endpoints
fix/server-qsv-vbr
fix-mobile-db-problems
feat/ml-armnn-conversion
feat/mobile/backup-with-album-info
feat/fast-initial-sync-1
chore/handle-output_dims
feat/server-more-robust-generation
feat/unassign-faces
feat/shortcuts-on-asset-grid
feat/background-upload
feat/capacitor-mobile-app-poc
feat/server-nvenc-hw-decoding
release/v1.105
fix/mobile-fetch-non-archive
feat/fine-grained-access-controls
web/automation-ui
feat/mobile-server-endpoint-save-dropdown
feat/blurhash-thumbnail
object-storage
feat/memories-animations
dev/metrics
ml/tflite
feat/ml-export-cli
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.1
v2.4.0
v2.3.1
v2.3.0
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.0
v2.0.1
v2.0.0
v1.144.1
v1.144.0
v1.143.1
v1.143.0
v1.142.1
v1.142.0
v1.141.1
v1.141.0
v1.140.1
v1.140.0
v1.139.4
v1.139.3
v1.139.2
v1.139.1
v1.139.0
v1.138.1
v1.138.0
v1.137.3
v1.137.2
v1.137.1
v1.137.0
v1.136.0
v1.135.3
v1.135.2
v1.135.1
v1.135.0
v1.134.0
v1.133.1
v1.133.0
v1.132.3
v1.132.2
v1.132.1
v1.132.0
v1.131.3
v1.131.2
v1.131.1
v1.131.0
v1.130.3
v1.130.2
v1.130.1
v1.130.0
v1.129.0
v1.128.0
v1.127.0
v1.126.1
v1.126.0
v1.125.7
v1.125.6
v1.125.5
v1.125.4
v1.125.3
v1.125.2
v1.125.1
v1.125.0
v1.124.2
v1.124.1
v1.124.0
v1.123.0
v1.122.3
v1.122.2
v1.122.1
v1.122.0
v1.121.0
v1.120.2
v1.120.1
v1.120.0
v1.119.1
v1.119.0
v1.118.2
v1.118.1
v1.118.0
v1.117.0
v1.116.2
v1.116.1
v1.116.0
v1.115.0
v1.114.0
v1.113.1
v1.113.0
v1.112.1
v1.112.0
v1.111.0
v1.110.0
v1.109.2
v1.109.1
v1.109.0
v1.108.0
v1.107.2
v1.107.1
v1.107.0
v1.106.4
v1.106.3
v1.106.2
v1.106.1
v1.106.0
v1.105.1
v1.105.0
v1.104.0
v1.103.1
v1.103.0
v1.102.3
v1.102.2
v1.102.1
v1.102.0
v1.101.0
v1.100.0
v1.99.0
v1.98.2
v1.98.1
v1.98.0
v1.97.0
v1.96.0
v1.95.1
v1.95.0
v1.94.1
v1.94.0
v1.93.3
v1.93.2
v1.93.1
v1.93.0
v1.92.1
v1.92.0
v1.91.4
v1.91.3
v1.91.2
v1.91.1
v1.91.0
v1.90.2
v1.90.1
v1.90.0
v1.89.0
v1.88.2
v1.88.1
v1.88.0
v1.87.0
v1.86.0
v1.85.0
v1.84.0
v1.83.0
v1.82.1
v1.82.0
v1.81.1
v1.81.0
v1.80.0
v1.79.1
v1.79.0
v1.78.1
v1.78.0
v1.77.0
v1.76.1
v1.76.0
v1.75.2
v1.75.1
v1.75.0
v1.74.0
v1.73.0
v1.72.2
v1.72.1
v1.72.0
v1.71.0
v1.70.0
v1.69.0
v1.68.0
v1.67.2
v1.67.1
v1.67.0
v1.66.1
v1.66.0
v1.65.0
v1.64.0
v1.63.2
v1.63.1
v1.63.0
v1.62.1
v1.62.0
v1.61.0
v1.60.0
v1.59.1
v1.59.0
v1.58.0
v1.57.1
v1.57.0
v1.56.2
v1.56.1
v1.56.0
v1.55.1
v1.55.0
v1.54.1
v1.54.0
v1.53.0
v1.52.1
v1.52.0
v1.51.2
v1.51.1
v1.51.0
v1.50.1
v1.50.0
v1.49.0
v1.48.1
v1.48.0
v1.47.3
v1.47.2
v1.47.1
v1.47.0
v1.46.1
v1.46.0
v1.45.0
v1.44.0
v1.43.1
v1.43.0
v1.42.0_65-dev
v1.41.1_64-dev
v1.41.0_64-dev
v1.40.1_63-dev
v1.40.0_63-dev
v1.39.0_61-dev
v1.38.2_60-dev
v1.38.1_60-dev
v1.38.0_60-dev
v1.37.0_58-dev
v1.36.2_56-dev
v1.36.1_55-dev
v1.36.0_55-dev
v1.35.0_54-dev
v1.34.0_53-dev
v1.33.1_52-dev
v1.33.0_52-dev
v1.32.1_51-dev
v1.32.0_50-dev
v1.31.1_49-dev
v1.31.0_49-dev
v1.30.2_48-dev
v1.30.0_46-dev
v1.29.6_45-dev
v1.29.6_44-dev
v1.29.5_44-dev
v1.29.4_44-dev
v1.29.3_43-dev
v1.29.2_43-dev
v1.29.1_43-dev
v1.29.0_42-dev
v1.28.4_41-dev
v1.28.4_42-dev
v1.28.3_41-dev
v1.28.2_40-dev
v1.28.1_39-dev
v1.28.0_38-dev
v1.27.0_37-dev
v1.26.0_36-dev
v1.25.0_35-dev
v1.24.0_34-dev
v1.23.0_33-dev
v1.22.0_32-dev
v1.21.1_31-dev
v1.21.0_31-dev
v1.20.3_30-dev
v1.20.2_30-dev
v1.20.1_30-dev
v1.20.0_30-dev
v1.19.1_29-dev
v1.19.0_29-dev
v1.18.0_27-dev
v1.17.0_25-dev
v1.16.0_23-dev
v1.15.1_21-dev
v1.15.0_21-dev
v1.14.0_21-dev
v1.13.0_20-dev
v1.12.0_18-dev
v1.11.0_17-dev
v1.10.0_15-dev
v1.9.1_14-dev
v1.9.0_13-dev
v1.8.0_12-dev
v1.7.0_11-dev
v1.6.0_10-dev
v1.5.1+9-dev
v1.5.0+8-dev
v1.4.0+7-dev
v1.4.0+6-dev
v1.4.0-dev
v1.3.0-dev
v1.3.1-dev
v0.6-dev
v0.5-dev
v0.4-dev
v0.3-dev
v0.2-dev
first-android-release
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: immich-app/immich#707
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @easez88 on GitHub (Feb 24, 2023).
The bug
Enabling background sync on iOS doesn't upload any pictures. Enabled both background processes and out the app in the background. Took new photos to test, connected phone to Wi-Fi and charger. Also, tried disabling foreground upload as well. No matter how long I wait, no new photos are uploaded.
The OS that Immich Server is running on
Fedora 37
Version of Immich Server
v1.49.0
Version of Immich Mobile App
v1.48..0 build.87
Platform with the issue
Your docker-compose.yml content
Your .env content
Reproduction steps
Additional information
No response
@alextran1502 commented on GitHub (Feb 24, 2023):
Can you read this info section https://immich.app/docs/features/automatic-backup#ios
And let me know if you have it enabled and if you have everything enabled in that screen
@easez88 commented on GitHub (Feb 24, 2023):
Yes, I can confirm. Here are some screenshots



@alextran1502 commented on GitHub (Feb 24, 2023):
How many apps do you have with background refresh enabled? The more you have, the more it will compete for the timeslot to run in the background. Maybe try to disable the apps that you don't need background refresh to run and see if it changes the behavior
@easez88 commented on GitHub (Feb 24, 2023):
Ive turned off as many as I can. Reset background check and will report back.
@easez88 commented on GitHub (Feb 24, 2023):
I followed these instructions and also turned background sync off and on again. Also have background sync turned off for most apps. I can see that the under background sync last sync does update. Right now the last sync was about 1 hour ago. However, no new assets have been uploaded to the server.
@alextran1502 commented on GitHub (Feb 24, 2023):
What method have you been using to identify if there is no new asset uploaded yet?
@lxtzfr commented on GitHub (Feb 25, 2023):
Hello,
I have the similar issue with iPhone 13 running iOS 16.3.
I enabled "automatic background backup" and "background app refresh".
In my case, I still have items to send to the server.
When I quit the application and there is a transfer in progress, the transfer in progress stops.
If I immediately reopen the app or wait longer the transfer starts over from the beginning.
@alextran1502 commented on GitHub (Feb 25, 2023):
This is the intended behavior, the background and foreground backup are two different mechanisms. So whenever a mechanism start, it has to re-calculate which files have not been backup and pickup from there
@lxtzfr commented on GitHub (Feb 25, 2023):
I see, when the application is open, it is the foreground backup that is in action.
And when the app is closed, background backup takes over.
However, when the app is closed, nothing happens. No files are sent to the server, the number of files remaining to be sent does not change.
@easez88 commented on GitHub (Feb 25, 2023):
I think this worked for me. I also had to repulo the containers. Now it works exactly as explained above. I get the notification of upload. However even after 24 hours with background notifications and not opening the app, the server stays in the web ui have not increased. I still have the same number of photos, videos, and storage.
@alextran1502 commented on GitHub (Feb 25, 2023):
@alexandrewurtzfr the background backup runs based on the user's usage behavior of Immich and other apps. It depends on the native OS's background scheduler to specify when the background task can run. It might take 10 minutes or 30 minutes, or a few hours. The goal is to improve this aspect, to let the scheduler somehow grant the app better background run time.
@easez88 How do you connect to your server, DNS or local IP?
@lxtzfr commented on GitHub (Feb 25, 2023):
OK I understand. I'll keep an eye on it.
We can perhaps add a note in the application to inform that the background scheduler is executed according to the behavior of the OS.
@easez88 commented on GitHub (Feb 26, 2023):
I have Immich behind nginx and let’s encrypt.
@easez88 commented on GitHub (Feb 26, 2023):
I think a note about the background scheduler would help. Understanding what you said I’ve been opening the app every couple of hours and kept background turned off for apps that don’t need it. The result is that now the scheduler runs several times a day.
My other issue where the scheduler was running but nothing was making it to the server was because nginx was missing the client_max_body_size directive. Without it the pictures were getting rejected due to size. Must have some kind of default.
@lxtzfr commented on GitHub (Feb 27, 2023):
@alextran1502 I waited a whole day and no files were transferred in the background.
I have less than 10 apps that use "Background App Refresh".
About the file upload size limitation, you have to be careful when you go through a service such as Cloudflare for example.
You can send a maximum file size of 100mb when proxy mode is enabled.
An article explains that: https://gridpane.com/kb/cloudflares-cdn-and-upload-limitations/
@alextran1502 commented on GitHub (Feb 27, 2023):
@alexandrewurtzfr hello, do you see anything change in the back up screen regarding the time it was last synced?
@lxtzfr commented on GitHub (Feb 27, 2023):
@alextran1502
I hadn't taken the first reference time, but it seems to have been updated. The last synchronization time was at the end of the day.
I can do a test again on it.
Does that mean the app should be visible in the list of recent apps? Shouldn't the app be killed by swiping up?
@alextran1502 commented on GitHub (Feb 27, 2023):
@alexandrewurtzfr The app should be visible in the recent apps, you shouldn't kill the app since that would terminate everything
@lxtzfr commented on GitHub (Feb 27, 2023):
I think it's good, it works. My mistake is to have killed the application. I should have paid attention to this detail.
However, I think I found another bug. Some files are not uploaded to the server. I will investigate and if necessary create a new topic.
@alextran1502 commented on GitHub (Feb 28, 2023):
Closing this issue as the reported problems are resolved by waiting for the iOS's background scheduler to run. The future improvement is to get the scheduler favors Immich more
@twitsforbrains commented on GitHub (Mar 18, 2023):
I believe I'm experiencing this issue.
I initially used foreground upload to some selected photos and then decided I wanted to test background upload so I disabled foreground upload right when there were 12 photos outstanding. I then selected background upload and minimized the app. I'm on ios and my immich server is behind traefik. I also disabled background app refresh for all apps outside of immich to test this, so there really is only 1 app that has background app refresh enabled. I'm on my home wifi with 1Gb upload right now as well.
What I noticed is that when I open the immich app, my immich-server logs immediately say "web socket connected" and "websocket disconnected". This corresponds with a screen popup in the UI that says "do you want to select more photos". I select no, then another websocket connected log is created. When I minimize the immich app, I then see the websocket is disconnected log.
So in short, once my app is minimized, there are no websocket connections to immich. I don't see how background app refresh is able to upload if there is no connection. My traefik access logs suggest there are no additional PUT, POST, etc requests to immich so I suspect the upload happens through this websocket api?
How might I better be able to debug this?
@alextran1502 commented on GitHub (Mar 18, 2023):
@twitsforbrains Can you show the permission page that you have for Immich? From what you describe, it seems like you only allow Immich to access to a few photos, correct?
@twitsforbrains commented on GitHub (Mar 18, 2023):
Yes, I've given it access to basically the last 3-4 months of photos. My bulk upload was from 2020 to Nov 2023. After which I selected all photos after Nov 2023. By permission page, which page are you referring to? Are you referring to my IOS Privacy & Security -> Photos -> Immich page?
@alextran1502 commented on GitHub (Mar 18, 2023):
@twitsforbrains I suggest you to allow the app the access to the whole gallery. The app is not designed to work well with a group of selected assets so it might be the cause for background backup not working for you.
When did you start enabling the background backup on iOS?
To answer your question earlier about websocket, it doesn't related to background function of the app. Websocket is for updating the timeline when a new asset is finished processing on the server
@twitsforbrains commented on GitHub (Mar 18, 2023):
I just tested this on my partners phone with entire gallery access and still don't see any uploads. Is the endpoint that should be called the POST /asset/upload? I don't see that in my traefik access logs. I think that suggests the issue is with the ios app?
@alextran1502 commented on GitHub (Mar 18, 2023):
@twitsforbrains do you have background app refresh enabled on your partner's phone?
@twitsforbrains commented on GitHub (Mar 19, 2023):
Yes, but hold this thought, I noticed the microservices container is failing restarting every few seconds. Looks like I am suffering a partial download of the reverse geocode data again. Not sure if that's related to this. I'm creating a fix in the upstream library and when that is merged will revisit if this is still an issue