Skip to content

[Due for payment 2026-03-06] [$250] [Performance] Attachments/images load extremely slowly when viewing in the app #81250

Description

@mountiny

Problem

Attachments and images load very slowly when viewing them in the app, with reports of nearly a minute to load a single low-resolution image even on fast internet connections.

Observations

  • On mobile (iOS), loading a single attachment can take ~1 minute for a low-res image
  • Web loads faster than mobile, but still slower than expected for a responsive application
  • User's internet is fast and everything else loads fine
  • The issue is reproducible and was observed by multiple team members during Onshore

Suspected Cause

The attachment carousel feature may be preloading all images in the chat to enable the < and > navigation arrows. For chats with many attachments, this means:

  1. Opening one image triggers loading of potentially dozens/hundreds of other images
  2. This causes significant delays before the requested image is visible
  3. Large/active chats are disproportionately affected

Expected Behavior

  • The selected attachment should load within 1-2 seconds on a decent internet connection
  • If carousel preloading is needed, it should happen lazily/progressively after the primary image is loaded
  • Adjacent images (prev/next) could be prioritized over distant ones

Reproduction Steps

  1. Open a chat with many attachments/images
  2. Tap on an attachment to view it in the full-screen viewer
  3. Observe the loading spinner duration

Platform

  • iOS (primary report)
  • Android (needs verification)
  • Web (also affected but less severe)

Related Discussion

Slack thread: https://expensify.slack.com/archives/C05LX9D6E07/p1770083248855669

Possible Solutions

  1. Lazy carousel loading: Only preload adjacent images (N-1, N+1) initially, then progressively load others
  2. Show image immediately: Display the requested image first, then load carousel images in background
  3. Thumbnail fallback: Show low-res thumbnails for carousel navigation while full-res images load on demand
  4. Limit preload count: Cap the number of images preloaded for the carousel
Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~022018561992008864454
  • Upwork Job ID: 2018561992008864454
  • Last Price Increase: 2026-02-03
  • Automatic offers:
    • abzokhattab | Reviewer | 110396511

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

AutoAssignerNewDotQualityUsed to assign quality issues to engineersAwaiting PaymentAuto-added when associated PR is deployed to productionBugSomething is broken. Auto assigns a BugZero manager.ExternalAdded to denote the issue can be worked on by a contributorWeeklyKSv2

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions