-
-
Notifications
You must be signed in to change notification settings - Fork 5k
Open
Labels
Description
I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.
- Yes
The bug
Images from server (that are not stored locally on device) are not displayed properly in the Immich Android app. Instead, just a very blurred thumbnail is displayed, even after opening the image. The same also happens on another device (but obviously with different images). However, all images are displayed correctly on the Immich web app.
The issue only started happening lately, but I don't remember exactly when.
The OS that Immich Server is running on
Debian 13
Version of Immich Server
v2.5.6
Version of Immich Mobile App
v2.5.6 build 3037
Platform with the issue
- Server
- Web
- Mobile
Device make and model
Samsung S24, Android 16
Your docker-compose.yml content
services:
server:
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
restart: unless-stopped
user: "505:505"
depends_on:
- redis
- database
env_file:
- .env
volumes:
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
networks:
immich:
caddy:
aliases:
- immich
cap_drop:
- ALL
security_opt:
- no-new-privileges=true
extends:
file: hwaccel.transcoding.yaml
service: quicksync # Set to one of [nvenc, quicksync, rkmpp, vaapi] for accelerated transcoding
machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
restart: unless-stopped
user: "505:505"
env_file:
- .env
volumes:
- ./cache/models:/cache
- ./cache/models-cache:/.cache
- ./cache/models-config:/.config
networks:
- immich
cap_drop:
- ALL
security_opt:
- no-new-privileges=true
extends:
file: hwaccel.ml.yaml
service: cpu # Set to one of [armnn, cuda, rocm, openvino, rknn] for accelerated inference
redis:
image: docker.io/valkey/valkey:8
restart: unless-stopped
user: "505:505"
volumes:
- ./cache/redis:/data
networks:
- immich
cap_drop:
- ALL
security_opt:
- no-new-privileges=true
healthcheck:
test: redis-cli ping || exit 1
database:
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
restart: unless-stopped
user: "505:505"
environment:
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
- ${DB_LOCATION}:/var/lib/postgresql/data
networks:
- immich
cap_drop:
- ALL
security_opt:
- no-new-privileges=true
networks:
immich:
name: immich
caddy:
external: trueYour .env content
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The Immich version to use
IMMICH_VERSION=release
# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored
DB_LOCATION=./postgres
# The timezone of your server
TZ=TIMEZONE
# Connection settings for PostgreSQL database
DB_DATABASE_NAME=immich
DB_USERNAME=USERNAME
DB_PASSWORD=PASSWORDReproduction steps
- Open Immich app on Android.
- Try to view any image not stored locally on the device.
- Only a very blurred version of image will be displayed.
Relevant log output
2026-03-01 23:13:34.023294 | info | AppLifeCycleNotifier | Using server URL: null |
2026-03-01 23:10:51.578559 | info | HashService | Hashing took - 3ms |
2026-03-01 23:10:51.575152 | info | HashService | Starting hashing of assets |
2026-03-01 23:10:49.530067 | info | SyncApiRepository | Remote Sync completed in 199ms |
2026-03-01 23:10:49.370293 | info | DeviceSyncService | Device sync took - 98ms |
2026-03-01 23:10:49.370129 | info | DeviceSyncService | Full device sync took - 98ms |
2026-03-01 23:10:49.270659 | info | SyncStreamService | Remote sync request for user |
2026-03-01 23:10:48.692390 | info | AppLifeCycleNotifier | Using server URL: null |
2026-03-01 23:10:20.544281 | info | HashService | Hashing took - 10ms |
2026-03-01 23:10:20.533274 | info | HashService | Starting hashing of assets |
2026-03-01 23:10:18.439311 | info | SyncApiRepository | Remote Sync completed in 207ms |
2026-03-01 23:10:18.382876 | info | DeviceSyncService | Device sync took - 223ms |
2026-03-01 23:10:18.382695 | info | DeviceSyncService | Full device sync took - 223ms |
2026-03-01 23:10:18.157186 | info | SyncStreamService | Remote sync request for user |
2026-03-01 23:10:17.458946 | info | AppLifeCycleNotifier | Using server URL: null |
2026-03-01 23:10:00.518180 | info | HashService | Hashing took - 10ms |
2026-03-01 23:10:00.507848 | info | HashService | Starting hashing of assets |
2026-03-01 23:09:58.421194 | info | SyncApiRepository | Remote Sync completed in 174ms |
2026-03-01 23:09:58.243295 | info | DeviceSyncService | Device sync took - 49ms |
2026-03-01 23:09:58.243217 | info | DeviceSyncService | Full device sync took - 49ms |
2026-03-01 23:09:58.192587 | info | SyncStreamService | Remote sync request for user |
2026-03-01 23:09:57.570969 | info | AppLifeCycleNotifier | Using server URL: null |
2026-03-01 23:08:23.376469 | info | HashService | Hashing took - 1ms |
2026-03-01 23:08:23.374511 | info | HashService | Starting hashing of assets |
2026-03-01 23:08:21.338086 | info | SyncApiRepository | Remote Sync completed in 154ms |
2026-03-01 23:08:21.302199 | info | DeviceSyncService | Device sync took - 152ms |
2026-03-01 23:08:21.302107 | info | DeviceSyncService | Full device sync took - 152ms |
2026-03-01 23:08:21.150280 | info | SyncStreamService | Remote sync request for user |
2026-03-01 23:08:20.590990 | info | AppLifeCycleNotifier | Using server URL: null |
2026-03-01 23:07:45.963140 | info | HashService | Hashing took - 9ms |
2026-03-01 23:07:45.953465 | info | HashService | Starting hashing of assets |
2026-03-01 23:07:43.865347 | info | SyncApiRepository | Remote Sync completed in 120ms |
2026-03-01 23:07:43.799229 | info | DeviceSyncService | Device sync took - 84ms |
2026-03-01 23:07:43.799157 | info | DeviceSyncService | Full device sync took - 84ms |
2026-03-01 23:07:43.714044 | info | SyncStreamService | Remote sync request for user |
2026-03-01 23:07:43.129927 | info | AppLifeCycleNotifier | Using server URL: null |
2026-03-01 23:07:22.087699 | info | HashService | Hashing took - 13ms |
2026-03-01 23:07:22.074557 | info | HashService | Starting hashing of assets |
2026-03-01 23:07:19.976464 | info | SyncApiRepository | Remote Sync completed in 139ms |
2026-03-01 23:07:19.897500 | info | DeviceSyncService | Device sync took - 104ms |
2026-03-01 23:07:19.897335 | info | DeviceSyncService | Full device sync took - 104ms |
2026-03-01 23:07:19.793423 | info | SyncStreamService | Remote sync request for user |
2026-03-01 23:07:19.235053 | info | AppLifeCycleNotifier | Using server URL: null |
2026-03-01 23:06:52.179276 | severe | ThumbnailWidget | Error loading image: PlatformException(ms, m1.ms: Exception in CronetUrlRequest: net::ERR_HTTP2_PROTOCOL_ERROR, ErrorCode=11, InternalErrorCode=-337, Retryable=false, Cause: null, Stacktrace: m1.ms: Exception in CronetUrlRequest: net::ERR_HTTP2_PROTOCOL_ERROR, ErrorCode=11, InternalErrorCode=-337, Retryable=false
at org.chromium.net.impl.CronetUrlRequest.onError(:com.google.android.gms.dynamite_cronetdynamite@260534035@26.05.34 (260400-0):3)
, null) | PlatformException(ms, m1.ms: Exception in CronetUrlRequest: net::ERR_HTTP2_PROTOCOL_ERROR, ErrorCode=11, InternalErrorCode=-337, Retryable=false, Cause: null, Stacktrace: m1.ms: Exception in CronetUrlRequest: net::ERR_HTTP2_PROTOCOL_ERROR, ErrorCode=11, InternalErrorCode=-337, Retryable=false
at org.chromium.net.impl.CronetUrlRequest.onError(:com.google.android.gms.dynamite_cronetdynamite@260534035@26.05.34 (260400-0):3)
, null) |
#0 RemoteImageApi.requestImage (package:immich_mobile/platform/remote_image_api.g.dart:69)
<asynchronous suspension>
#1 RemoteImageRequest.load (package:immich_mobile/infrastructure/loaders/remote_image_request.dart:15)
<asynchronous suspension>
#2 CancellableImageProviderMixin.loadRequest (package:immich_mobile/presentation/widgets/images/image_provider.dart:59)
<asynchronous suspension>
#3 new OneFramePlaceholderImageStreamCompleter.<anonymous closure> (package:immich_mobile/presentation/widgets/images/one_frame_multi_image_stream_completer.dart:33)
<asynchronous suspension>
2026-03-01 23:06:51.732404 | severe | ThumbnailWidget | Error loading image: PlatformException(ms, m1.ms: Exception in CronetUrlRequest: net::ERR_HTTP2_PROTOCOL_ERROR, ErrorCode=11, InternalErrorCode=-337, Retryable=false, Cause: null, Stacktrace: m1.ms: Exception in CronetUrlRequest: net::ERR_HTTP2_PROTOCOL_ERROR, ErrorCode=11, InternalErrorCode=-337, Retryable=false
at org.chromium.net.impl.CronetUrlRequest.onError(:com.google.android.gms.dynamite_cronetdynamite@260534035@26.05.34 (260400-0):3)
, null) | PlatformException(ms, m1.ms: Exception in CronetUrlRequest: net::ERR_HTTP2_PROTOCOL_ERROR, ErrorCode=11, InternalErrorCode=-337, Retryable=false, Cause: null, Stacktrace: m1.ms: Exception in CronetUrlRequest: net::ERR_HTTP2_PROTOCOL_ERROR, ErrorCode=11, InternalErrorCode=-337, Retryable=false
at org.chromium.net.impl.CronetUrlRequest.onError(:com.google.android.gms.dynamite_cronetdynamite@260534035@26.05.34 (260400-0):3)
, null) |
#0 RemoteImageApi.requestImage (package:immich_mobile/platform/remote_image_api.g.dart:69)
<asynchronous suspension>
#1 RemoteImageRequest.load (package:immich_mobile/infrastructure/loaders/remote_image_request.dart:15)
<asynchronous suspension>
#2 CancellableImageProviderMixin.loadRequest (package:immich_mobile/presentation/widgets/images/image_provider.dart:59)
<asynchronous suspension>
#3 new OneFramePlaceholderImageStreamCompleter.<anonymous closure> (package:immich_mobile/presentation/widgets/images/one_frame_multi_image_stream_completer.dart:33)
<asynchronous suspension>Additional information
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
To triage