Source: perf audit of the Paging 3 usage (finding #2).
MessageRow formats the per-row relative timestamp via DateUtils.getRelativeTimeSpanStringun-remembered, so it re-reads System.currentTimeMillis() and allocates a fresh String on every recomposition of the row (selection toggles, scroll settle, etc.).
Location:formatTimestamp(message.timestampMillis) at app/src/main/kotlin/org/libremail/ui/mailbox/MailboxScreen.kt:552 (formatter defined at :819).
Fix: wrap in remember(message.timestampMillis) { formatTimestamp(...) }. (Optionally also remember the avatar initial at :596.) If exact freshness matters, key on a coarse time tick rather than recomputing every frame.
**Source:** perf audit of the Paging 3 usage (finding #2).
`MessageRow` formats the per-row relative timestamp via `DateUtils.getRelativeTimeSpanString` **un-`remember`ed**, so it re-reads `System.currentTimeMillis()` and allocates a fresh `String` on **every recomposition** of the row (selection toggles, scroll settle, etc.).
**Location:** `formatTimestamp(message.timestampMillis)` at `app/src/main/kotlin/org/libremail/ui/mailbox/MailboxScreen.kt:552` (formatter defined at `:819`).
**Fix:** wrap in `remember(message.timestampMillis) { formatTimestamp(...) }`. (Optionally also `remember` the avatar initial at `:596`.) If exact freshness matters, key on a coarse time tick rather than recomputing every frame.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Source: perf audit of the Paging 3 usage (finding #2).
MessageRowformats the per-row relative timestamp viaDateUtils.getRelativeTimeSpanStringun-remembered, so it re-readsSystem.currentTimeMillis()and allocates a freshStringon every recomposition of the row (selection toggles, scroll settle, etc.).Location:
formatTimestamp(message.timestampMillis)atapp/src/main/kotlin/org/libremail/ui/mailbox/MailboxScreen.kt:552(formatter defined at:819).Fix: wrap in
remember(message.timestampMillis) { formatTimestamp(...) }. (Optionally alsorememberthe avatar initial at:596.) If exact freshness matters, key on a coarse time tick rather than recomputing every frame.