fix(desktop): stop channel switches jittering and flashing - #6457
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Based on
perf/switch-tracing— retarget to main after it merges. (Shares the settle seam in ChannelScreen and the community-reset inventory.)Two visible artifacts made switching feel clunky (diagnosed by frame-by-frame analysis of a 120fps capture):
inline-flex, so it participated in its wrapper's line box via its baseline — which moves when the avatar's content resolves (Radix fallback delay, or the avatar image landing after profiles hydrate). The button is now a block-level flex row (wrapper height = padding + fixed button height regardless of avatar state: 36px constant, was 39→36) and the facepile renders its fallback immediately — the participant starts with no image URL, so the 200ms fallback delay only left a blank hole.resetCommunityState()).Both are pinned by red-first regression specs:
thread-summary-stability.spec.ts(row geometry through delayed profile hydration; failed 39→36px pre-fix) andchannel-revisit-no-skeleton.spec.ts(staleness forced by shiftingDate.now()past the freshness window; skeleton must never mount over cached rows).Measured impact (live community, switch traces)