thread fixes#29244
Merged
chrisnojima merged 7 commits intoMay 26, 2026
Merged
Conversation
…ToRender LegendList already hides content (opacity 0) while bootstrapping the initial scroll position and reveals it once settled. Our outer opacity/didFirstLoad gate was redundant and introduced a race where onLoad could be missed (e.g. on first inbox load in Electron), leaving the list permanently hidden. Drop didFirstLoad state and the style-opacity override entirely; keep onLoad only for markInitiallyLoadedThreadAsRead.
chrisnojima
commented
May 26, 2026
| buttonBar: {padding: Kb.Styles.globalMargins.small}, | ||
| container: Kb.Styles.platformStyles({ | ||
| isElectron: { | ||
| minHeight: 100, |
Contributor
Author
There was a problem hiding this comment.
dont have top item collapse all the time
chrisnojima
commented
May 26, 2026
| </Kb.Box2> | ||
| )} | ||
| {loadMoreType === 'moreToLoad' && pendingState === 'done' && ( | ||
| {hasLoadedEver && loadMoreType === 'moreToLoad' && pendingState === 'done' && ( |
Contributor
Author
There was a problem hiding this comment.
don't show this if we haven't figured out our state yet, else it flashes
chrisnojima
commented
May 26, 2026
| inverted={true} | ||
| offset={insets.bottom} | ||
| {...props} | ||
| scrollIndicatorInsets={{top: insets.bottom}} |
Contributor
Author
There was a problem hiding this comment.
fix ios scrollbars
There was a problem hiding this comment.
Pull request overview
This PR focuses on improving chat thread scrolling/loading behavior (especially around loading older messages and keeping the view pinned to the end), reducing initial-render hacks, and adding local formatting configuration for consistent developer workflows.
Changes:
- Desktop thread list: switch older-message loading to
onStartReached, remove the initial opacity gating, and adjustmaintainScrollAtEndto better handle item height changes (e.g. reactions). - Top-of-thread UI: gate “cards”/notices on
hasLoadedEverto reduce pre-load flashing, and add a minimum height for the desktop container to reduce layout jank. - Tooling: add repository-level
.prettierrc/.prettierignore.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| shared/chat/conversation/messages/special-top-message.tsx | Gates top-of-thread UI on hasLoadedEver and adds an Electron-only min height to reduce layout jank. |
| shared/chat/conversation/list-area/index.tsx | Updates desktop thread list scrolling/loading mechanics and tweaks native scroll wrapper props. |
| .prettierrc | Introduces a repo-level Prettier configuration with overrides for generated files and specific extensions. |
| .prettierignore | Introduces ignore rules intended to prevent formatting churn on generated/artifact-like files. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @@ -0,0 +1,7 @@ | |||
| shared/common-adapters/markdown/emoji-gen.tsx | |||
| shared/common-adapters/icon.constants.tsx | |||
| shared/markdown/parser.js | |||
Comment on lines
+4
to
+7
| shared/desktop/build/ | ||
| shared/coverage/ | ||
| shared/flow-typed/ | ||
| shared/libs/ |
bca1cbd
into
nojima/HOTPOT-next-670-clean-2
1 of 2 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Changes
Switch to
onStartReachedfor loading older messages: Replaces theonViewableItemsChanged+ debounced callback approach with LegendList's built-inonStartReached/onStartReachedThreshold={2}props — simpler and more reliable.Remove opacity hack for initial load: Drops the
didFirstLoadstate that was togglingopacity: 0 → 1to hide the list until ready. Now relies on LegendList's built-inreadyToRenderbehavior instead.Fix
maintainScrollAtEndfor reactions: AddsitemLayout: trueto themaintainScrollAtEndconfig (was onlydataChange: true). This ensures the list scrolls to the end when item heights change, e.g. when a reaction is added to the bottom message.Remove LegendList resize patch: Removes the patch that prevented LegendList from firing resize events immediately; no longer needed.
Add
scrollIndicatorInsetsfor iOS: PassesscrollIndicatorInsets={{top: insets.bottom}}to the iOS scroll view wrapper.Min height for top-of-thread container (desktop): Adds
minHeight: 100on Electron for thespecial-top-messagecontainer to prevent layout jank.Hide cards until thread has loaded: Cards (HelloBot, MakeTeam, etc.) in the top message are now gated on
hasLoadedEverto avoid flashing them before messages arrive.Local prettier config: Adds
.prettierrcand.prettierignorefor consistent local formatting.