Repository navigation
refactor: miscellaneous cleanup v10 - #3852
Merged
Merged
Conversation
Contributor
SDK Size
|
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.
🎯 Goal
Fix the small bugs the V10 state cleanup audit found outside the main cleanup steps. Some are V10 regressions, some exist on
developas well. The branch also adds the perf gauntlet harness (perf/gauntlet/) and its skill, which we use to compare V10 withdevelop.Linear ticket: https://linear.app/stream/issue/REACT-1223/miscellaneous-ui-sdk-bug-fixes-after-the-state-cleanup
🛠 Implementation details
Fixes
messageList.newMessages.text,messageList.scrollToBottom.withCount.accessibilityLabel,channelPreview.unreadCount.accessibilityLabel,message.reactionList.more.accessibilityLabelandavatar.channel.group.accessibilityLabelare_one/_otherkeys.keys.tsis regenerated; the SampleApp German and Italian dictionaries, the key map and the a11y doc are updated.useFetchReactions:reaction.*andoffline_reactions.queriedlisteners ignore other messages;client.queryReactionsAndHydrate.MessageUserReactions: counts come fromreaction_groups.MessageHeader:MessageReminderHeaderSwitch, which subscribes to the reminder's own state (remind_at);reminderinstead of two booleans.isMessageAIGenerated:ChatContextonly, with a stable() => falsedefault;ChannelProps,MessagesContextValue,MessageContextValueandMessageContent's props;Message,MessageContentandMessageFooterread it fromuseChatContext().useStickyHeaderDate: clears its dedupe ref when it hides the header.MessageFlashList: when the content fits the window and there is no older page, the oldest message counts as on screen. FlashList keeps the offset from its initial scroll and never reports index 0 for short content.useHandleLiveLocationEvents: returns early formessage.updatedevents of other messages.usePollAnswersPagination/usePollOptionVotesPagination: functional state updates; the listeners no longer depend on the votes array.ThreadListUnreadBanner:client.threads.paginator.state(lastQueryError), sincereload()records failures instead of throwing;ChannelDetailsBottomSheet: a DM's label reads the other member'suser.onlineinstead ofwatcherCount === 1.Breaking changes (
ai-docs/ai-migration-v9-to-v10.mdPart Q)_one/_otherforms; an override of the bare key no longer applies.isMessageAIGeneratedis set on<Chat>only. Read it withuseChatContext().Perf gauntlet
perf/gauntlet/: the harness, which builds release APKs with React's profiling renderer for a base and a head ref, then runs ABBA sessions;.claude/skills/perf-gauntlet/: the procedure;AGENTS.md,perf/README.mdand theperf-benchmarkingskill.perf/gauntlet/is ignored by ESLint (Node CommonJS scripts, an ES5 probe, exported baseline trees). Its generated output is in.prettierignore.🎨 UI Changes
No layout changes. Visible differences: singular strings ("1 new message"), the DM "Online" / "Offline" label in the swipe sheet, the thread list retry tile, the reminder header switching in place, and no duplicate date in short FlashList channels.
iOS
Android
🧪 Testing
Perf: the gauntlet has successfully covered this branch entirely, as a good testing ground for the gauntlet as well.
☑️ Checklist
developbranch