Skip to content

fix: docs fixes - #3891

Merged
isekovanic merged 13 commits into
V10from
fix/docs-fixes
Oct 27, 2026
Merged

isekovanic merged 13 commits into
V10from
fix/docs-fixes

Conversation

@isekovanic

Copy link
Copy Markdown
Contributor

🎯 Goal

Fix the SDK regressions that are new in v10, found while writing the v10 docs. In each case v9 behaved correctly, or the code is new in v10.

🛠 Implementation details

  • Channels opened from search get live events again. Channel now also calls watch() on mount when the channel's watchStatus is notWatching. Search sources load channels with watch: false, and those channels are initialized and at the head, so Channel used to skip the watch. A wasWatching channel is still left to the client's connection recovery.
  • Channel and thread previews show "read" again. useMessageDeliveryStatus now compares the last message's created_at with lastReadRefByOthers / lastDeliveredRefByOthers, the same check stream-chat-react uses. Before, it looked only for users whose cursor sits exactly on the message, so the mark stayed "sent" or "delivered" once the other member read a later message.
  • Threads no longer show the channel's unread separator. The LLC seeds a thread list's unread snapshot from the channel's read state. MessageWrapper now draws no separator when the list's paginator has a parentMessageId. The result matches stream-chat-react.
  • A failed reply load shows its own error. Thread used to show "Error loading messages for this channel...". It now passes a new listType: 'thread' to LoadingErrorIndicator, which shows "Error loading replies..." (key indicators.loading.replies.error).
  • Chat keeps a network status reporter the app registered. It installs netInfoStatusReporter only when no statusReporter is registered in client.config, which includes the tree given to the StreamChat constructor. Before, it replaced any reporter on every mount.
  • New exports. useOwnUnreadCount, useChannelTypingUsers, useTypingUsers, getTranslatedMessage and useTranslatedMessage are now exported.
  • The channel row's accessibility hint has its own key. It used the gallery's key, so translating one changed the other. It now uses channelPreview.doubleTapToOpen.accessibilityLabel. ai-docs/i18n-v10-key-map.json maps a11y/Double tap to open to both keys, through a new alsoKeys field.
  • userId instead of the deprecated userID. The SDK reads client.userId everywhere (35 call sites). Test client mocks are updated to match.
  • JSDoc fix in installNativeMultipartAdapter. With useNativeMultipartUpload, uploads go through the native uploader even when the app installed its own axios adapter, as in v9. The JSDoc said the adapter was left alone. No code change.
  • ThreadListUnreadBanner reports only its own failure. It shows "Couldn't load new threads" only when its own reload failed, not for a failed first load or load-more, as in v9.
  • ChannelListView no longer passes or accepts paginator. It never read it.
  • The MessageList override key is removed from DEFAULT_COMPONENTS. In v9 only Thread read it. v10's Thread renders its children, so overriding the key did nothing. This matches the earlier removal of ThreadMessageComposer.

Breaking changes

  • The MessageList override key is removed. Render the list as a child of <Thread>. This is documented in ai-migration-v9-to-v10.md and v10-breaking-changes.md.
  • ChannelListViewProps no longer has paginator. That prop only existed in the v10 RCs.
  • Thread passes listType='thread' to LoadingErrorIndicator. A custom indicator that branches on 'message' no longer hits that branch for threads.

🎨 UI Changes

  • Channel list and thread list rows show the read mark once the other member has read past the last message.
  • Thread replies no longer show an "N unread messages" separator.
  • A failed reply load says "Error loading replies...".

🧪 Testing

  • New or updated unit tests for each fix: Channel, useMessageDeliveryStatus, MessageList (thread separator), Thread, Chat, ChannelPreviewView, ThreadList, and the client mocks in about 25 test files. Each new regression test fails without its fix.
  • yarn lint, yarn test:typecheck, yarn build and yarn test:unit pass (2256 tests, 13 skipped).
  • Not checked on a device yet:
    • opening a search result outside the loaded list and receiving a message live
    • the read mark in the channel list after the other member replies
    • no separator in a thread of an unread channel

☑️ Checklist

  • I have signed the Stream CLA (required)
  • PR targets the develop branch
  • Documentation is updated (the ai-docs migration guides are; the docs site follows separately)
  • New code is tested in main example apps, including all possible scenarios
    • SampleApp iOS and Android
    • Expo iOS and Android

@isekovanic
isekovanic merged commit 5767715 into V10 Oct 27, 2026
1 of 2 checks passed
@isekovanic
isekovanic deleted the fix/docs-fixes branch October 27, 2026 18:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants