perf(mailbox): async image loading (Coil) when avatars/images are introduced #215

Open
opened 2026-07-03 14:51:42 +00:00 by JMR-dev · 0 comments
JMR-dev commented 2026-07-03 14:51:42 +00:00 (Migrated from github.com)

Source: perf audit of the Paging 3 usage (finding — future work, backlog).

The app currently uses no image-loading library (no Coil / Glide / Picasso / Fresco). List avatars are text initials in a colored Box (app/src/main/kotlin/org/libremail/ui/mailbox/MailboxScreen.kt:586), so there are no bitmaps to decode per row today — fine for the current design.

Context When avatars become real images (contact / gravatar / sender photos), or any list shows remote/bitmap images, they must load asynchronously off the main thread with memory + disk caching — otherwise per-row decode/IO would jank scrolling (the RecyclerView "async avatar loading" item, mapped to Compose). Adopt Coil (Compose-native AsyncImage, coroutine-based) at that point, using the current initials avatar as the placeholder/fallback.

Action - Design and propose/spike out a performant image loading pattern for this Android client

**Source:** perf audit of the Paging 3 usage (finding — future work, backlog). The app currently uses **no image-loading library** (no Coil / Glide / Picasso / Fresco). List avatars are text initials in a colored `Box` (`app/src/main/kotlin/org/libremail/ui/mailbox/MailboxScreen.kt:586`), so there are no bitmaps to decode per row today — fine for the current design. **Context** When avatars become real images (contact / gravatar / sender photos), or any list shows remote/bitmap images, they must load **asynchronously off the main thread with memory + disk caching** — otherwise per-row decode/IO would jank scrolling (the RecyclerView "async avatar loading" item, mapped to Compose). Adopt **Coil** (Compose-native `AsyncImage`, coroutine-based) at that point, using the current initials avatar as the placeholder/fallback. **Action** - Design and propose/spike out a performant image loading pattern for this Android client
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JMR-dev/LibreMail#215