mirror of
https://github.com/immich-app/immich.git
synced 2026-03-02 22:57:45 -05:00
[META] App performance #5851
Closed
opened 2026-02-20 04:05:29 -05:00 by deekerman
·
80 comments
No Branch/Tag specified
main
renovate/typescript-projects
release/next
renovate/github-actions
chore/translations
push-nwxlpmyzkyrl
push-wzwotsylzylq
push-zpwsovysllvn
push-zunuwtznrlpm
renovate/opentofu-1.x
renovate/node
push-rsywxvptwxuv
renovate/prom-prometheus
renovate/docker.io-valkey-valkey-9
push-suusrsrnmzrp
push-xyozownmuwqp
csp-policy
uhthomas/fix-mobile-video-state
uhthomas/fix-mobile-hero-height
feat/use-native-clients
uhthomas/chore-mobile-simplify-scroll
feat/mobile-edit-3-mobile-sync-handling
feat/panorama-tiles
refactor/zod-migration
fix/maintenance-reload
refactor/restores-file-interceptor
uhthomas/fix-mobile-inconsistent-asset-detials-background
postgres-socketio
claude/auto-screenshot-web-changes-Y7efI
visual-review/pr-26535
push-lvyturrtwkrq
feat/notification
feat/library-offline-stats
feat/checksum-algorithm-indicator
feat/library-offline-count
uhthomas/feat-mobile-search-results
fix/bring-back-globalkeys
fix/map-webgl-error
feat/mobile-ocr
feat/custom-date-range
fix/mobile-video-aspect-ratio
fix/ml-ocr-batch-size
fix/timeline-rtl
feat/integrity-checks-izzy
uhthomas/fix-mobile-search-results
renovate/flutter
uhthomas/feat-sort-smart-search
renovate/github-cqlabs-homebrew-dcm-1.x
feat/video-player
feat/mobile-editing
refactor/remove-replace-with-upload
uhthomas/chore-mobile-maplibre
uhthomas/mobile-fix-asset-details-album-pop
feat/crawl-wrapper
feat/open-in-browser
push-skvzqoozqkpl
feat/edit-filters
fix/locale-settings-desc
feat/pg-queue
refactor/asset-upload
renovate/connectivity_plus-7.x
better-project-structure
uhthomas/mobile-feat-asset-viewer-details
fix/ml-rocm-build
fix/25803
feat/asset-file-apis
midzelis/wip
feature/bottom-buttons-order
sqlite_thumbs
fix-keep-correct-ios-shared-album-asset
fix-memory-generation-and-display
push-vpxwmwwxwnvw
fix-migration-width-height
revert/prettier-translations
shared-deep-link-handler
feat/thumbnail-native-clients
feat/platform-clients
fix/foreground-cloud-sync
filter-by-person
feat/csp
refactor/sidebar
fix/disable-editing
fix/view-timeline-deeplink
image-zoom-on-slow-connection
fix/merged-edited-assets
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
feat/modal-routes
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
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
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
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
vet
tmp/demo-snapshot-preview
fix/server-migration-file-extension
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/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/unassign-faces
feat/shortcuts-on-asset-grid
feat/capacitor-mobile-app-poc
feat/server-nvenc-hw-decoding
fix/mobile-fetch-non-archive
web/automation-ui
feat/mobile-server-endpoint-save-dropdown
object-storage
feat/memories-animations
dev/metrics
ml/tflite
feat/ml-export-cli
v2.5.6
v2.5.5
v2.5.4
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
Labels
Clear labels
accessibility
changelog:enhancement
changelog:security
changelog:skip
changelog:translation
cli
date-time
dependencies
documentation
external-library
format
good first issue
mobile-beta
mobile-beta
mobile-beta
needs-answer
nice to have
sharing
tech-debt
📱mobile
🖥️web
🗄️server
🧠machine-learning
No labels
accessibility
changelog:enhancement
changelog:security
changelog:skip
changelog:translation
cli
date-time
dependencies
documentation
external-library
format
good first issue
mobile-beta
mobile-beta
mobile-beta
needs-answer
nice to have
sharing
tech-debt
📱mobile
🖥️web
🗄️server
🧠machine-learning
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
starred/immich#5851
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
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 @alextran1502 on GitHub (Jun 20, 2025).
Originally assigned to: @alextran1502 on GitHub.
I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.
The bug
I am creating this issue to consolidate app performance issues, discussions, and updates. We are working on it as the last major task before the stable release.
The Issues
As the app transitions from remote-only to support local sync and offline-first, the foundation data model has been adapted over time, creating technical debt that degrades app performance. The issues below are the result of such.
The Reasons
Primarily because the sync mechanism runs on the UI thread, competing with the process of updating the frames. The current sync logic is expensive in terms of CPU operations, so the more assets and albums you have in your instance, the longer it will run. 50_000 feet view of the current syncs process is as follows
The Solutions
The Progress
June 30th
June 20th
Preliminary testing indicates that the timeline runs smoothly during the remote sync process without any jankiness. Local sync is so fast that it's challenging to benchmark its behavior, but since it runs in the background as well, there should be no issue.
The OS that Immich Server is running on
iOS/Android
Version of Immich Server
Less than v2.0.0
Version of Immich Mobile App
Less than v2.0.0
Platform with the issue
Your docker-compose.yml content
Your .env content
Reproduction steps
N/A
Relevant log output
Additional information
No response
@Snufkin-8 commented on GitHub (Jun 25, 2025):
I have around 1.5M photos and 100K video, everytime I use mobile it take so long time (5-10mins) to load but in web it can load instantly. Would the fix also cosidering to solve the case for great amount of media files?
@alextran1502 commented on GitHub (Jun 25, 2025):
@sshubhm the initial sync might take a while but it shouldn't slow down the app during that process anymore
@Snufkin-8 commented on GitHub (Jun 25, 2025):
Do u mean this? It takes around 5-10mins to load for my case
Screenshot

@alextran1502 commented on GitHub (Jun 25, 2025):
@Snufkin-8 we will be reworking the timeline with the new this new improvement so it will incrementally show the assets in the database, not letting you waiting on a blank screen like this
@Snufkin-8 commented on GitHub (Jun 26, 2025):
@alextran1502 Happy to hear that. Can't wait to see the new style and thanks for all the support on this app. Loving it too!
@janat-t commented on GitHub (Jun 26, 2025):
Does this mean we're not moving toward client-side hashing yet? Am I right? Is it planned for the future?
@alextran1502 commented on GitHub (Jun 26, 2025):
@janat-t if you are thinking about using the hash to detect which has been uploaded, then yes, it will be included in this improvement
@Kidplayer666 commented on GitHub (Jun 26, 2025):
is this expected to also fix mobile sync to the server on iOS?
@alextran1502 commented on GitHub (Jun 26, 2025):
@Kidplayer666 what issue are you facing?
@Kidplayer666 commented on GitHub (Jun 27, 2025):
@alextran1502 In over a week of having the app in the background, I've seen 1, maybe two photos getting synced from my iPhone to the server
@alextran1502 commented on GitHub (Jun 27, 2025):
@Kidplayer666 I see, we will have some work around that background sync. I encourage to check out this FAQ to help making the background sync run better
https://immich.app/docs/FAQ#why-is-background-backup-on-ios-not-working
@Kidplayer666 commented on GitHub (Jun 27, 2025):
For better or for worse, I've tried all of these, and it still doesn't work well enough. I'll have to stick to the self hosted ente for now
@alextran1502 commented on GitHub (Jun 27, 2025):
@Kidplayer666 No worries, iOS background job is always finicky. I believe we understand the issue and have a plan to resolve it. Feel free to come back and try Immich when we reach stable release!
@FawenYo commented on GitHub (Jun 30, 2025):
Hi, first of all, thanks for your hard work! Immich's active development pace is what I find most attractive about it.
Currently, the only thing preventing me from completely abandoning Google Photos and migrating to Immich is the performance issues with the Immich app (when there are a large number of photos/videos on the device, the app becomes completely unresponsive and unusable at startup).
Seeing this issue opened and continuously updated with progress makes me very excited about the stable release. I was wondering if there might be an ETA for these refactor/fix PRs? Thank you so much!
@alextran1502 commented on GitHub (Jul 1, 2025):
@FawenYo we don't usually give out ETA but hopefully within the next few months, still a lot of work left to do to do since the foundation data structure has changed
@akostadinov commented on GitHub (Jul 3, 2025):
Probably you have tohught about it, but saying FWIW. I think it is a good idea to check image name and size first and see if these exist. Only then perform hashing on client. Otherwise it might be hashing a lot of files that have no chance of differing.
@loveyu commented on GitHub (Jul 5, 2025):
Let me share my example. I use an Android client, and on the timeline, there are 100,000 photos and 1,500 videos, spanning from 15 years ago to now. I feel that it's unnecessary to display all the data from over a decade on the timeline. In fact, I mostly view data from just the past two years. Would it be possible to limit the default time range of the timeline? I believe this would greatly help with performance. If users want to see more data, the timeline could load additional years when scrolling to the end — I think showing one timeline per year would also work well. This way, there’s no need to write metadata for 100,000 images into SQLite all at once. I feel that the data loading process is already a bit overwhelming.
Currently, due to the large amount of data, automatic background sync is no longer working — I'm not sure of the exact reason. Also, because of the data size, the UI frequently crashes. I often need to force kill the app and restart it before data loads normally.
@mingqlin commented on GitHub (Jul 7, 2025):
I have Photos: 800,000+, Video 55,000+ Size: 35TB
My performance issue with Immich
Love Immich, hope above info helps
@mingqlin commented on GitHub (Jul 9, 2025):
Should we rethink build native IOS and Android Immich Client App, instead of using Flutter cross platform framework? Flutter has always have jank issue. I am no expert with latest version of Flutter, I did tried Flutter for few monthes in the past, had a lot of issue for building high performance app with smooth UI
@alextran1502 commented on GitHub (Jul 9, 2025):
@mingqlin
Jank issue is not because of the framework but the way the code is structured to run. The new implementation we are working on, there is no jank while syncing 😉
@Andersama commented on GitHub (Jul 10, 2025):
Bit disconcerting that the app hung when I attempted to upload ~100 images. There's some definite need to improve the mobile apps. I'd also recommend not displaying and/or previewing only a couple of the images being sent when the shared/upload list is large (or allowing to scroll through only a couple at a time). I'm fairly confident my phone's attempting to render the full list of them every frame at full resolution, otherwise I've no idea why it'd stall that way.
Also the "uploading" notification says "Downloading media", also a bit confusing.
@Chuckame commented on GitHub (Jul 15, 2025):
The app on both my wife and me has the app freezing each second when launching the app since a long enough moment to have the loading icon next to the album menu icon. Seems like loading data on the UI thread.
@mingqlin commented on GitHub (Jul 16, 2025):
Also, Review Duplicates always failed to open with following error
Internal server error (500)
Stacktrace
Error: Error: 500
at Object.st [as ok] (https://photo..com/_app/immutable/chunks/I4ASpmdk.js:1:5945)
at async bt (https://photo..com/_app/immutable/nodes/29.Bpx4vzP4.js:2:1629)
at async $e (https://photo.***.com/_app/immutable/chunks/BpN-hVxZ.js:1:15858)
@popy2k14 commented on GitHub (Jul 19, 2025):
Hope this gets released soon.
My app froze on splash screen very often. After closing and reopening it, it loads instantly.
@alextran1502 commented on GitHub (Jul 24, 2025):
Most issue are addressed in
v1.136.0release https://github.com/immich-app/immich/releases/tag/v1.136.0@dstapp commented on GitHub (Jul 24, 2025):
This is a huge milestone. Thanks so much for your efforts, guys <3 Currently updating and am very excited.
@philnagel commented on GitHub (Jul 24, 2025):
Just updated both Android app and server and it seems like a huge improvement already! Thank you!
@cfelicio commented on GitHub (Jul 24, 2025):
First of all, great work, pretty excited to test the new features, and the timeline is working great!
I'm a little confused by the new backup option vs the old foreground / background backup options. If I enable the new backup option, how does it affect the old foreground / background options? Are they dependent on each other or different mechanisms?
Also, the old app would let you specify to only upload when on wifi, but that option is now gone. How can I make sure Immich does not upload when running without Wifi, to avoid potentially consuming all cell phone data?
@mescanne commented on GitHub (Jul 24, 2025):
Carlos -- in the release notes it mentions "Background queuing of newly
taken photos is not yet implemented. We will start working on this next."
So it might not be working at all at the moment. But it's a beta.
On Thu, 24 Jul 2025 at 21:15, Carlos Felicio @.***>
wrote:
@mingqlin commented on GitHub (Jul 25, 2025):
First amazing job team.
Issues:
Server Stats:



Server Stats doesn't seem to match what show up on Android Sync Stats, as you can see it is still spinning
Android: VERY slow loading thumbnail image, could take mins for thumbnail to show up

Web: bottom half timeline scroll still not working, show here: https://youtube.com/shorts/HKUQ9Xv1Vzc?si=0qPUxlbKQxwipVXi
@lerra commented on GitHub (Jul 25, 2025):
I just wanted to say, big thank you, the app went from unusable to awesome, high five!
@alextran1502 commented on GitHub (Jul 26, 2025):
@mingqlin can you grab me the mobile app log?
@mingqlin commented on GitHub (Jul 26, 2025):
Thanks Alex, log attached. After couple days, sync status still spinning
Also, everytine immch Android app starts(kill then restart), it take 9 second to load the app (color Immich logo spin for 9 second, then timeline show up
Immich_log_2025-07-26T16_57_30.636732.log
@alextran1502 commented on GitHub (Jul 26, 2025):
@mingqlin I suspect with your case, the amount of data transfer over from the server will need longer timeout value of your reverse proxy. Can you please increase it or try local IP?
Cc @shenlong-tanwen I think the 9s it takes is for Dart to build out the timeline skeleton. No need to optimize now but something to keep in mind
@benkyd commented on GitHub (Jul 26, 2025):
Fantastic work everyone, the app is now usable at LAST!
I am having one issue though. Hashing has been going on for a two days now, i’ve had the app open in the foreground for a few hours in case it was a job that required that. as a result all of my images have duplicates
Mobile logs also attached
Immich_log_2025-07-26T11_13_29.053195.log
@Bruceforce commented on GitHub (Jul 26, 2025):
@mingqlin: You are using Cloudflare (probably the free version). If you try to upload anything larger than 100 MB it will will be blocked. So your upload will never finish - no matter how long you wait. I had the same issue (unrelated to the new released version) https://github.com/immich-app/immich/issues/19594#issuecomment-3064023847. So you should definitely try local IP as @alextran1502 suggested.
@mingqlin commented on GitHub (Jul 28, 2025):
@alextran1502 Thank you for your help
I have Uninstall/reinstall Immich app, connect it with my local ip, it has been 2 days, last two days , I have start and using immich for at least 10 times, at this moment, the Sync Remote is still spinning. attach is log
Immich_log_2025-07-28T07_57_23.702212.log
@Kidplayer666 commented on GitHub (Jul 28, 2025):
While the improvements are clear, on the beta timeline and backup, i still haven't been able to trigger the background backup (on iOS)
Edit: yes, i did check background app refresh, yes i did let the app queue everything in foreground, and i checked that i am not in low power consumption mode, and that the phone is charging
@alextran1502 commented on GitHub (Jul 28, 2025):
Background upload isn't explicitly triggered anymore. Now we create a queue and push item into it. The OS will handle upload them automatically.
You can read a bit more here https://developer.apple.com/documentation/foundation/urlsession
In the future, we will use background task trigger to wake the app up and then push newly taken photos to the queue but not handling the upload directly from the app. It will give the app a better "standing" with the OS so the task will be triggered more often
@superboo07 commented on GitHub (Jul 28, 2025):
the IOS app taking several minutes just to become usable when you have a big image library is insane no matter how you look at it. the app is great on android so I have to wonder, what happened here? no matter how many photos I have the android app just gets to it, even immeditetly being able to start back up. meanwhile on IOS if I open the app I have to wait a solid 4 minutes just for it to become usable, add even more minutes if I want to back up. the latter isn't that much of an issue since I'm accessing more often then I'm backing up (and the background backups work), but the former issue is quite the pain in the reer since if I background the app just to do anything else, the task will just be killed and the cycle begins again.
@shenlong-tanwen commented on GitHub (Jul 29, 2025):
Is this with the new beta timeline? If so, I'd like to take a look at the app logs. Can you export and share it?
@jaimetur commented on GitHub (Jul 29, 2025):
For sure this is not with the new beta Timeline which is quite fast.
@superboo07 commented on GitHub (Jul 29, 2025):
how would I enable the beta timeline?
@sadorowo commented on GitHub (Jul 30, 2025):
Then the migrations will run and new beta features will be enabled.
@icez commented on GitHub (Jul 30, 2025):
I'm using both android and ipad. my android has this option show up but not on my ipad. checked the app version and it's already 1.136.
@sadorowo commented on GitHub (Jul 30, 2025):
Alex has mentioned in some issue that he forgot to add this option to tablet view. This was fixed in #20187. For now you can force the layout to be like in mobile (i don't know how can it be done in Apple devices, maybe split 2 apps next to each other?)
@nielseulink commented on GitHub (Jul 30, 2025):
Great update. Seems to work way faster!
I have one thing thats kinda strange after the update:
The back-up function seems to start the back-up process of my files over and over.
Anyone else who have noticed the same?
@s-martin commented on GitHub (Jul 30, 2025):
Yes, see #20254
@nielseulink commented on GitHub (Jul 30, 2025):
Ah yep, having the same. Thank for pointing me to there!
@mingqlin commented on GitHub (Aug 1, 2025):
Thanks team for the hard work
Issues
1 Android: Thumbnail take few mins to load: https://youtu.be/FOwYvWgJ4sA?si=oC3z3WQD2xkytCVb
2. Web: timeline still have problems move pass certain date, it always jump back: https://youtube.com/shorts/HKUQ9Xv1Vzc?si=2Tdhx0c02Qp3Taam
Watch above youtube on pc browser, watch on the phone get.cropped
@the-real-naxgo commented on GitHub (Aug 8, 2025):
Great update! For my wife's S21 Ultra, it made the app usable. Me, on my S20, did not have performance issue. But after switching to the beta timeline, for both of us, the Camera album does not get updated with the latest photos. The photos get uploaded (semi-manually) just not added to the album. I switched back to the old timeline and new photos get added to the album. Am I missing something?
Thanks
@alextran1502 commented on GitHub (Aug 12, 2025):
@the-real-naxgo those features haven't made to the new timeline yet
@Fjetland commented on GitHub (Aug 12, 2025):
Im with the others here, great update. However, two weeks in i have still only been able to process 10.000 of my 40000 images. So while it seems to do work when i open the app and for some time after, it will not continuously do a background sync, so i will leave it at my desk open, but it seems to stop with my screen lock timer. im running Server: v.1.137.3 - App version: 1.137.2 build 213, on iPhone 14 Pro iOS version 18.5
@kevincox commented on GitHub (Aug 12, 2025):
I also think I am having issues with background sync. I think it was working fairly well on the first beta on Android, but now I'm running 1.137.2 on both Android and iOS and things aren't syncing in the background. Additionally on Android most if not all local photos are showing a "no cloud" icon despite being backed up to the server. (IDK about iOS, I don't use it as much).
@popy2k14 commented on GitHub (Aug 12, 2025):
Same issue here, not background syn with new timeline feature on android.
@melpomene commented on GitHub (Aug 19, 2025):
Using 1.138.1 on iPhone (same server version) I am no longer able to sync my photos from my phone to immich. This has been ongoing for some time so at least one or two version back.
When I switch to the Backup page it says 0 asset takes a few moments and then the UI freezes and does no backing up until the screen locks and nothing happens. When I unlock the phone again the app has seemingly shut off and I need to do it again.
If I keep the screen for a long time by continuously pressing it, it sometimes manages to figure out there are 100k+ assets but eventually it freezes again and as far as I can tell it never gets to a syncing step.
It is the same whether I have turned on Foreground backup or not.
@alextran1502 commented on GitHub (Aug 19, 2025):
@melpomene Are you on the beta timeline?
@Kidplayer666 commented on GitHub (Aug 19, 2025):
I've been using the new beta timeline, and every time I close and reopen Immich, it starts requeueing all the fotos for background backup. Is this expected?
@melpomene commented on GitHub (Aug 19, 2025):
@alextran1502 No. Would that potentially help?
@alextran1502 commented on GitHub (Aug 19, 2025):
@melpomene yes!
@FringeNet commented on GitHub (Aug 20, 2025):
Same issue here, I have One UI 7.
App is taking a long time to launch, and background backup/sync is spotty at best.
I have tried all the tricks in the book to keep the app running in the background with no luck.
I have seen several apps use persistent notifications to get around background service limitations.
Examples:
I went digging through the codebase and I see the background service is built in dart, perhaps it would perform more reliably in native kotlin? I am no expert on this though, only good with Java
@melpomene commented on GitHub (Aug 20, 2025):
@alextran1502 Great! Turned it on and now my Photos tab has a much more complete view of the photos on my phone! The actual syncing to the server doesn't seem to have started yet. Is my assumption that it needs to complete hashing all the assets before it starts syncing again?
It has been about 12h since I turned it on but it it is still just on 750 assets out of ~120k, so as this speed it will take about 80 days for it to complete... Anything I can do to speed this up?
@alextran1502 commented on GitHub (Aug 20, 2025):
@melpomene can you share the screenshot of the Beta Sync Stats? Are you on Wifi when you sync? Did you put the app into the background?
@melpomene commented on GitHub (Aug 20, 2025):
@alextran1502
Yes wifi.
Well not actively but the screen locks eventually so assume it goes into the background?
@alextran1502 commented on GitHub (Aug 20, 2025):
@melpomene I see that you have a pretty big iCloud library, the new upload mechanism will only upload assets that are hashed. If you can leave the app on the foreground, the hashing progress will go through much quicker. I am still trying to workout a better experience for iCloud users with large library like yours
@melpomene commented on GitHub (Aug 20, 2025):
Understood. Is it possible to have it keep the screen on/in the foreground when I put the phone down?
Does it matter which page I am showing in the immich app or will it go quicker and continue it's work at same speed no matter which page I have displayed? (Edit: noticed I could turn off the screen auto lock in the iOS settings completely).
@dagstuan commented on GitHub (Aug 20, 2025):
@alextran1502 I did notice the hashing process is significantly slower on older hardware. My partner's iPhone X took a good long while (multiple hours) to hash around 10k assets, while my iPhone 15 only took a few minutes for the same amount of assets. I don't know if this could be improved somehow, but it's worth thinking about for future work.
The difference was big enough for me to suspect that the hashing is done on hardware with newer devices, while the old ones use the CPU.
@melpomene commented on GitHub (Aug 20, 2025):
I am on a iPhone 13 Pro, with slow hashing, if that is helpful.
@alextran1502 commented on GitHub (Aug 20, 2025):
The slowness here is not impacted heavily by the hardware, I think it is more of if you are using iCloud or not, to hash an asset, the app needs to have the file locally, meaning download the file from iCloud to the device to hash. If your phone have those assets locally, it takes like 3 minutes to hash 10,000 assets
@Chuckame commented on GitHub (Aug 20, 2025):
Just for curiosity, I just switched to the beta time-line, and I had absolutely no hash job at all, already showing all my assets as hashed. Why many people complain about this slow hashing? FYI I have 15k assets locally.
Btw the app is not freezing anymore. However, I can still notice some freezes approximately every 2s at start during backup. (still much less freezy than before).
@alextran1502 commented on GitHub (Aug 20, 2025):
@Chuckame it copied the hash from the non-beta timeline over if the assets are hashed there. Also if you don't use iCloud, the experience is much better.
@Chuckame commented on GitHub (Aug 24, 2025):
FYI, since the last release 1.139.2, the feels completely native, no freeze, it's highly fluent. Amazing job guys!!
@s-martin commented on GitHub (Aug 24, 2025):
Same here! 🎉
@ManiacDC commented on GitHub (Aug 26, 2025):
Every time I open the Immich app with the beta timeline, which is normally after a day or two, it takes a really long time to sync. The hashing takes several seconds, then the remote sync can take 30-100 seconds. I mainly use external libraries, and I've been organizing them, so data is sometimes shuffled around between app launches (maybe a few hundred or up to 1000 pictures). If this is how long it's going to take on a frequent basis, more progress indication needs to be added. From the user perspective, the syncing process is just stuck...
My server isn't lightning fast, but it's on decently robust hardware (10 year old dual xeon server). I'm not using SSDs, but the web UI is very smooth. Loading is never an issue there.
(Just updated the server to v1.139.3 before testing and posting this, and the app versions in question are v1.139.2 (my Pixel 9) and v1.139.4 (my wife's S23).
@alextran1502 commented on GitHub (Aug 26, 2025):
@ManiacDC Can you post the mobile app log? it would show how much time it takes for local and remote sync?
@ManiacDC commented on GitHub (Aug 26, 2025):
@alextran1502 These are from my wife's S23. She synced yesterday, this was the first sync today. Took 250seconds. Followup syncs took 1-3 seconds, as you can see. (BTW temporarily had troubleshooting and finer logging on to see if it would give more info).
This was my first sync of the day. Took over 30 seconds.
@ManiacDC commented on GitHub (Aug 26, 2025):
Also, I figured I'd post this. I think this is from swapping back to the original timeline, then to the beta again... and I had cleared my cache at some point to try to figure out what was going on. So I think this screenshot is an initial hash/sync. Took 170s to hash and 99s to sync.
@alextran1502 commented on GitHub (Aug 27, 2025):
@ManiacDC I think it depends on the size of the library and how many items you reorganize; the sync can take more time based on those conditions. The remote sync should display a circular spinning icon on the top bar to indicate that the process is running. Once the spinner disappears, it means that the sync is complete.
Do you have the Postgres database on an HDD or SSD?
@ManiacDC commented on GitHub (Aug 27, 2025):
@alextran1502 I will have to learn to trust the spinner, I guess. As a user of other apps, I've seen those spinners go forever when things are really stuck, so I've grown to not trust them. If the remote server sent updates to the client as to the sync status, I think that would help the user experience a lot.
Another thing that may help is if newly added files (especially those at the top of the timeline) are sent to the client as soon as they are available. This way the user will see changes immediately, instead of waiting 30+ seconds for the whole sync to finish.
I have the database on spinning disks in raidz (TrueNAS), so throughput is high, but I/O probably isn't great. No option to have it on an SSD right now.
@alextran1502 commented on GitHub (Aug 28, 2025):
Closing this issue as the tech debt has been addressed with the beta timeline. Other bugs should be coming in as individual issues for ease of tracking.