[139.2] Latest Android app with Beta timeline shows no thumbnails, cannot open any assets #6934

Closed
opened 2026-02-05 12:38:58 +03:00 by OVERLORD · 16 comments
Owner

Originally created by @tanpro260196 on GitHub (Aug 23, 2025).

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

Latest Android app, latest server version, using Beta Timeline.
Can't open any of the picture either. Video streaming still works.
Original Timeline works fine. Thumbnails are set to webp.

Image Image

The OS that Immich Server is running on

Ubuntu Server 2404

Version of Immich Server

139.2

Version of Immich Mobile App

139.2

Platform with the issue

  • Server
  • Web
  • Mobile

Device make and model

Pixel 6

Your docker-compose.yml content

immich-server:
    container_name: immich_server
    network_mode: "media-net"
    user: "1000:1001"
    deploy:
      endpoint_mode: dnsrr
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    extends:
      file: hwaccel.transcoding.yml
      service: nvenc # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    volumes:
      # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    depends_on:
      - redis
      - immich_postgres
    restart: always
    healthcheck:
      disable: false

  immich-machine-learning:
    container_name: immich-machine-learning
    network_mode: "media-net"
    user: "1001:1001"
    deploy:
      endpoint_mode: dnsrr
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
    extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
      file: hwaccel.ml.yml
      service: cuda # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
      - ./immich-machine-learning/.config:/.config
      - ./immich-machine-learning/.cache:/.cache
    env_file:
      - .env
    restart: always
    healthcheck:
      disable: false

  immich_postgres:
    container_name: immich_postgres
    network_mode: "media-net"
    user: "999:1001"
    deploy:
      endpoint_mode: dnsrr
#    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.1-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
#    healthcheck:
#      test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
#      interval: 5m
#      start_interval: 30s
#      start_period: 5m
#    command: ["postgres", "-c", "shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
    restart: always

Your .env content

NA

Reproduction steps

Open Android App
Switch to Beta Timeline
Try to open anything remote (local assets work fine)

Relevant log output

Error loading image: RangeError (length): Invalid value: Not in inclusive range 0..1073741823: -1

RangeError (length): Invalid value: Not in inclusive range 0..1073741823: -1

#0      new Uint8List (dart:typed_data-patch/typed_data_patch.dart:2393)
#1      RemoteImageRequest._downloadImage (package:immich_mobile/infrastructure/loaders/remote_image_request.dart:67)
<asynchronous suspension>
#2      RemoteImageRequest.load (package:immich_mobile/infrastructure/loaders/remote_image_request.dart:27)
<asynchronous suspension>
#3      CancellableImageProviderMixin.loadRequest (package:immich_mobile/presentation/widgets/images/image_provider.dart:60)
<asynchronous suspension>
#4      ImageStreamCompleter.setImage (package:flutter/src/painting/image_stream.dart:729)
<asynchronous suspension>

Additional information

NA

Originally created by @tanpro260196 on GitHub (Aug 23, 2025). ### I have searched the existing issues, both open and closed, to make sure this is not a duplicate report. - [x] Yes ### The bug Latest Android app, latest server version, using Beta Timeline. Can't open any of the picture either. Video streaming still works. Original Timeline works fine. Thumbnails are set to webp. <img width="1080" height="2400" alt="Image" src="https://github.com/user-attachments/assets/6ab5065a-6bfc-4423-8c88-deaffd4a24a3" /> <img width="1080" height="2400" alt="Image" src="https://github.com/user-attachments/assets/a4bd0423-fe03-4dd6-a5ba-00334935fc9f" /> ### The OS that Immich Server is running on Ubuntu Server 2404 ### Version of Immich Server 139.2 ### Version of Immich Mobile App 139.2 ### Platform with the issue - [ ] Server - [ ] Web - [x] Mobile ### Device make and model Pixel 6 ### Your docker-compose.yml content ```YAML immich-server: container_name: immich_server network_mode: "media-net" user: "1000:1001" deploy: endpoint_mode: dnsrr image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} extends: file: hwaccel.transcoding.yml service: nvenc # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding volumes: # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file - ${UPLOAD_LOCATION}:/usr/src/app/upload env_file: - .env depends_on: - redis - immich_postgres restart: always healthcheck: disable: false immich-machine-learning: container_name: immich-machine-learning network_mode: "media-net" user: "1001:1001" deploy: endpoint_mode: dnsrr # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. # Example tag: ${IMMICH_VERSION:-release}-cuda image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration file: hwaccel.ml.yml service: cuda # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable volumes: - model-cache:/cache - ./immich-machine-learning/.config:/.config - ./immich-machine-learning/.cache:/.cache env_file: - .env restart: always healthcheck: disable: false immich_postgres: container_name: immich_postgres network_mode: "media-net" user: "999:1001" deploy: endpoint_mode: dnsrr # image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52 image: ghcr.io/immich-app/postgres:14-vectorchord0.4.1-pgvectors0.2.0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' volumes: # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file - ${DB_DATA_LOCATION}:/var/lib/postgresql/data # healthcheck: # test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1 # interval: 5m # start_interval: 30s # start_period: 5m # command: ["postgres", "-c", "shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"] restart: always ``` ### Your .env content ```Shell NA ``` ### Reproduction steps Open Android App Switch to Beta Timeline Try to open anything remote (local assets work fine) ### Relevant log output ```shell Error loading image: RangeError (length): Invalid value: Not in inclusive range 0..1073741823: -1 RangeError (length): Invalid value: Not in inclusive range 0..1073741823: -1 #0 new Uint8List (dart:typed_data-patch/typed_data_patch.dart:2393) #1 RemoteImageRequest._downloadImage (package:immich_mobile/infrastructure/loaders/remote_image_request.dart:67) <asynchronous suspension> #2 RemoteImageRequest.load (package:immich_mobile/infrastructure/loaders/remote_image_request.dart:27) <asynchronous suspension> #3 CancellableImageProviderMixin.loadRequest (package:immich_mobile/presentation/widgets/images/image_provider.dart:60) <asynchronous suspension> #4 ImageStreamCompleter.setImage (package:flutter/src/painting/image_stream.dart:729) <asynchronous suspension> ``` ### Additional information NA
Author
Owner

@tanpro260196 commented on GitHub (Aug 23, 2025):

Added Android App Log

@tanpro260196 commented on GitHub (Aug 23, 2025): Added Android App Log
Author
Owner

@mertalev commented on GitHub (Aug 23, 2025):

Based on the error you shared, the content length reported in the response seems to be -1. I wonder why that is. Could it be your reverse proxy configuration?

@mertalev commented on GitHub (Aug 23, 2025): Based on the error you shared, the content length reported in the response seems to be -1. I wonder why that is. Could it be your reverse proxy configuration?
Author
Owner

@tanpro260196 commented on GitHub (Aug 23, 2025):

I'm using default Nginx Proxy Manager config.

server {
    set $forward_scheme "http";
    set $server "immich_server";
    set $port "2283";
    set $forward_path "";


    listen 0.0.0.0:80;
    listen [::]:80;


    listen 0.0.0.0:443 ssl;
    listen [::]:443 ssl;


    listen 0.0.0.0:443 quic;
    listen [::]:443 quic;
    more_set_headers 'Alt-Svc: h3=":443"; ma=86400';


    server_name photos.teararia.com;


    # Certbot TLS
    ssl_certificate /data/tls/certbot/live/npm-177/fullchain.pem;
    ssl_certificate_key /data/tls/certbot/live/npm-177/privkey.pem;


    include conf.d/include/hsts.conf;


    # Force HTTPS
    include conf.d/include/force-https.conf;


    # Enable Brotli
    include conf.d/include/brotli.conf;


    # Access Rules: 1 total
    allow xxx.xxx.xxx.xxx;

    deny all;

    # Access checks must...

    satisfy all;


    include conf.d/include/always.conf;


    location / {

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;


        include conf.d/include/proxy-headers.conf;
        proxy_pass http://immich_server:2283$request_uri;

    }


    # custom locations
    # Custom
    include /data/custom_nginx/server_proxy.conf;
}

There's no error in NPM/Immich Server log while using the mobile app either. Whatever happens only log in the App itself.

@tanpro260196 commented on GitHub (Aug 23, 2025): I'm using default Nginx Proxy Manager config. ``` server { set $forward_scheme "http"; set $server "immich_server"; set $port "2283"; set $forward_path ""; listen 0.0.0.0:80; listen [::]:80; listen 0.0.0.0:443 ssl; listen [::]:443 ssl; listen 0.0.0.0:443 quic; listen [::]:443 quic; more_set_headers 'Alt-Svc: h3=":443"; ma=86400'; server_name photos.teararia.com; # Certbot TLS ssl_certificate /data/tls/certbot/live/npm-177/fullchain.pem; ssl_certificate_key /data/tls/certbot/live/npm-177/privkey.pem; include conf.d/include/hsts.conf; # Force HTTPS include conf.d/include/force-https.conf; # Enable Brotli include conf.d/include/brotli.conf; # Access Rules: 1 total allow xxx.xxx.xxx.xxx; deny all; # Access checks must... satisfy all; include conf.d/include/always.conf; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; include conf.d/include/proxy-headers.conf; proxy_pass http://immich_server:2283$request_uri; } # custom locations # Custom include /data/custom_nginx/server_proxy.conf; } ``` There's no error in NPM/Immich Server log while using the mobile app either. Whatever happens only log in the App itself.
Author
Owner

@tanpro260196 commented on GitHub (Aug 23, 2025):

One thing to add, I can play video, but cannot view any images, it just show the loading icon forever.

@tanpro260196 commented on GitHub (Aug 23, 2025): One thing to add, I can play video, but cannot view any images, it just show the loading icon forever.
Author
Owner

@mertalev commented on GitHub (Aug 23, 2025):

Just as a sanity check, could you try connecting to the immich server directly instead of using the proxy?

@mertalev commented on GitHub (Aug 23, 2025): Just as a sanity check, could you try connecting to the immich server directly instead of using the proxy?
Author
Owner

@tanpro260196 commented on GitHub (Aug 23, 2025):

Direct connection works. Curious.

@tanpro260196 commented on GitHub (Aug 23, 2025): Direct connection works. Curious.
Author
Owner

@alextran1502 commented on GitHub (Aug 23, 2025):

Are you using self-signed cert?

@alextran1502 commented on GitHub (Aug 23, 2025): Are you using self-signed cert?
Author
Owner

@tanpro260196 commented on GitHub (Aug 23, 2025):

Figured it out, Beta Timeline is tripping Crowdsec WAP somehow.
There's no blocking error in Crowdsec though, so I guess the app just kinda timeout while WAP is scanning?

@tanpro260196 commented on GitHub (Aug 23, 2025): Figured it out, Beta Timeline is tripping Crowdsec WAP somehow. There's no blocking error in Crowdsec though, so I guess the app just kinda timeout while WAP is scanning?
Author
Owner

@tanpro260196 commented on GitHub (Aug 23, 2025):

Are you using self-signed cert?

No, I'm using Let's Encrypt

@tanpro260196 commented on GitHub (Aug 23, 2025): > Are you using self-signed cert? No, I'm using Let's Encrypt
Author
Owner

@Sophtli commented on GitHub (Aug 23, 2025):

I'm having the same problem with Traefik as reverse proxy and also using Let's Encrypt.

@Sophtli commented on GitHub (Aug 23, 2025): I'm having the same problem with Traefik as reverse proxy and also using Let's Encrypt.
Author
Owner

@tanpro260196 commented on GitHub (Aug 23, 2025):

Apparently Immich and Crowdsec has a troubled history working together:
https://github.com/ZoeyVid/NPMplus/discussions/1241
https://github.com/crowdsecurity/lua-cs-bouncer/issues/77

Not sure why I didn't encounter this issue until now. Not sure if it's even the same issue.
I'm just gonna disable Crowdsec Appsec for the time being and pray that Cloudflare will keep me safe in these trying times.

@tanpro260196 commented on GitHub (Aug 23, 2025): Apparently Immich and Crowdsec has a troubled history working together: https://github.com/ZoeyVid/NPMplus/discussions/1241 https://github.com/crowdsecurity/lua-cs-bouncer/issues/77 Not sure why I didn't encounter this issue until now. Not sure if it's even the same issue. I'm just gonna disable Crowdsec Appsec for the time being and pray that Cloudflare will keep me safe in these trying times.
Author
Owner

@alextran1502 commented on GitHub (Aug 23, 2025):

If you feel comfortable, can you try out this build?

https://drive.google.com/file/d/1z7iwAMRy9inhhaAcTuZtGT6t-49UbXQ0/view?usp=sharing

@alextran1502 commented on GitHub (Aug 23, 2025): If you feel comfortable, can you try out this build? https://drive.google.com/file/d/1z7iwAMRy9inhhaAcTuZtGT6t-49UbXQ0/view?usp=sharing
Author
Owner

@tanpro260196 commented on GitHub (Aug 23, 2025):

If you feel comfortable, can you try out this build?

https://drive.google.com/file/d/1z7iwAMRy9inhhaAcTuZtGT6t-49UbXQ0/view?usp=sharing

It works!

@tanpro260196 commented on GitHub (Aug 23, 2025): > If you feel comfortable, can you try out this build? > > https://drive.google.com/file/d/1z7iwAMRy9inhhaAcTuZtGT6t-49UbXQ0/view?usp=sharing It works!
Author
Owner

@alextran1502 commented on GitHub (Aug 23, 2025):

If you feel comfortable, can you try out this build?
https://drive.google.com/file/d/1z7iwAMRy9inhhaAcTuZtGT6t-49UbXQ0/view?usp=sharing

It works!

Nice! Thanks

@alextran1502 commented on GitHub (Aug 23, 2025): > > If you feel comfortable, can you try out this build? > > https://drive.google.com/file/d/1z7iwAMRy9inhhaAcTuZtGT6t-49UbXQ0/view?usp=sharing > > It works! Nice! Thanks
Author
Owner

@klejejs commented on GitHub (Aug 26, 2025):

I am having the same issue on iOS server version 1.39.4 and mobile app 1.39.3. Error loading image: RangeError (length): Invalid value: Not in inclusive range 0..4611686018427387903: -1. I am connecting via Traefik and it worked before, but not anymore. Direct connection works as well.

@klejejs commented on GitHub (Aug 26, 2025): I am having the same issue on iOS server version `1.39.4` and mobile app `1.39.3`. `Error loading image: RangeError (length): Invalid value: Not in inclusive range 0..4611686018427387903: -1`. I am connecting via Traefik and it worked before, but not anymore. Direct connection works as well.
Author
Owner

@alextran1502 commented on GitHub (Aug 26, 2025):

@klejejs update the mobile app to 1.139.4 will resolve the issue

@alextran1502 commented on GitHub (Aug 26, 2025): @klejejs update the mobile app to 1.139.4 will resolve the issue
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#6934