Repository navigation
docs: consolidate v10 breaking changes into ai-docs - #1919
Merged
Merged
Conversation
Add ai-docs/v10-breaking-changes.md, a single verified list of every breaking change in the stream-chat public API from v9 (master @ 24b7623) to v10 (release-v10 @ 53505e7), to serve as the source for migration guides and docs updates. Built from a mechanical export-surface diff, a deep type-compatibility check, the docs-snippet compile check, the unit test diff, the downstream React and React Native migrations, the existing guides and commit history, all reconciled against source and reviewed. Add ai-docs/v10-followups.md with dead code, bugs, simplifications and doc mismatches found during the audit (record only, nothing fixed). Remove the superseded root migration guides and repoint references.
oliverlaz
requested review from
MartinCupela,
isekovanic and
szuperaz
as code owners
October 17, 2026 14:55
NikolaGoranNaumovski
approved these changes
Oct 19, 2026
isekovanic
approved these changes
Oct 19, 2026
isekovanic
left a comment
Contributor
There was a problem hiding this comment.
the followups and breaking changes make sense, a bunch of the followups are really really narrow edge cases but I guess it makes sense to fix them.
I'll take care of all of them today in a separate pr
isekovanic
requested changes
Oct 19, 2026
Cover the gaps a real stream-chat-react v14 to v15 migration hit: channel name/image reads moving under custom, update() replacing all custom data, disconnectUser disposing app-held channel instances, and options.limit mapping to paginatorOptions.pageSize. Document the page-size mapping on ChannelPaginatorRequestOptions and add type tests pinning the queryChannelsAndHydrate overloads.
isekovanic
approved these changes
Oct 19, 2026
|
🎉 This PR is included in version 10.0.0-rc.23 🎉 The release is available on: Your semantic-release bot 📦🚀 |
oliverlaz
added a commit
to GetStream/stream-chat-react
that referenced
this pull request
Oct 29, 2026
…3356) ## Goal Ticket: https://linear.app/stream/issue/REACT-1162 We migrated two demo apps from v14 to `15.0.0-rc.3` (`stream-chat@10.0.0-rc.26`) using only `ai-docs/ai-migration-v14-v15.md` and the stream-chat-js `v10-breaking-changes.md`, and logged every place the guides fell short. The findings and the migrated code are in GetStream/website-react-examples#138. Every compile error had an answer in the guides; the gaps are UI states that compile but behave differently, mostly because `ChatView` unmounts the inactive view, plus a few type-level holes. This PR fixes them in the guide. Docs only, and it describes the current rc API. ## Implementation details Each claim was checked against the source in this repo, and every new or changed snippet compiles against the installed `stream-chat-react@15.0.0-rc.3` / `stream-chat@10.0.0-rc.26` (strict, `noImplicitReturns`, `noUnusedLocals`). - **Section 3:** says the inactive `ChatView` view unmounts. Only the slot bindings survive; state, refs and effects inside a view start over on every switch. - **Section 6, `useOpenFirstChannel`:** the `useRef` guard reset on remount, so returning from the threads view re-opened the first channel over the one the user had open. The hook now guards on `useWorkspaceNavigation().openChannels.length === 0`. It also notes where to call it (the channels view, not an always-rendered `ChatView` child, where `openChannels` is empty in the threads view) and that it re-opens when nothing is open. - **Section 6, paginator example:** the paginator is created and registered once, above `ChatView` (`useChannelPaginator`), so it is not re-created and re-queried on every view switch. - **Section 4, "Without ChatView":** the override list is split into always / threads / default headers. It adds `isThreadDismissable` (the default `ThreadHeader` close button needs it, and its default is `() => false`), `isChannelDismissable` with `closeChannel`, and `canGoBack` with `goBack`. The example now overrides `isThreadDismissable`. - **Section 5:** a concrete stale-state example (`useState(channel.data?.custom?.name)` keeps the previous channel name) and its fix. - **Section 9:** reading `event.user` from the `typing` slice behind an `EventPayload<'typing.start'>` type guard (`Event` is a union, so the unguarded read fails with `TS2339`), plus a note that the guard can go if `stream-chat` narrows the slice type. - **Section 19:** a ready-to-run grep for the removed classes over `*.css` / `*.scss` / `*.sass` / `*.less`, which also matches them inside combinators (e.g. `.x + .str-chat__main-panel`) and skips `.str-chat__main-panel-inner` and `.str-chat__thread-container`, which still exist. - **Silent-break table:** new rows for the channel resetting after a view switch, the missing thread close button without `ChatView`, and state seeded from the channel going stale; the CSS row now points at the grep. - **Smaller fixes:** - Sections 7 and 10: warn that TypeScript's "Did you mean `ThreadHead`?" for a stale `ThreadHeader` key points at the parent-message slot. - Section 7: `useCloseThread` takes a `WorkspaceNavigationTriggerEvent`, narrower than v14's `BaseSyntheticEvent`. - Section 10: opens with "if your custom message UI calls `getMessageActions()`" so those apps know to switch to `useUserRole`. - Section 13: new subsection on `setMessageComposerSetupFunction` being deprecated in favour of `client.config.setSetupFunction('messageComposer', ...)`. - Section 18: the flow "string not in the key map, so app-owned, so `asDynamicKey`". - Section 6: a custom `ChannelListItemUI` receives the computed `active` prop. - Section 1: reads the `stream-chat` peer range from the installed `package.json` instead of a hard-coded rc, and lists the `stream-chat` type changes that are usually the first errors (`ChannelSort` to `SortParamRequest[]`, `queryChannels` raw vs `queryChannelsAndHydrate`, `queryUsers({ payload })`). - **Links:** the three links to stream-chat-js `master/ai-docs/v10-breaking-changes.md` returned 404, because the file lives on `release-v10` (GetStream/stream-chat-js#1919 merged there). They now point at `release-v10` and use that guide's explicit anchors. ## UI Changes None, documentation only. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> <!-- coderabbit-ai-generated:v1 --> ## Summary by CodeRabbit * **Documentation** * Updated the v14-to-v15 migration guide with guidance on channel state during view changes and workspace navigation, thread-header dismissal, and custom channel-list setup. * Revised examples for pagination and channel opening, and clarified compatibility guidance, typing-event handling, CSS search, and references to earlier migration documentation. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
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.
Summary
Consolidates every breaking change in the
stream-chatpublic API between v9 (master@ 24b7623) and v10 (release-v10@ 53505e7) into a single file,ai-docs/v10-breaking-changes.md, to serve as the source of truth for the migration guides and docs updates. The nine rootv9-to-v10-migration-guide-*.mdfiles,react-thread-paginator-migration.mdanddocs/breaking-changes-v14-v15.mdare superseded and removed; references inCLAUDE.mdanddocs/*.mdnow point to the new file.Also adds
ai-docs/v10-followups.md, a record-only list of bugs, dead code, simplifications and doc mismatches found during the audit, with a "Fix before 10.0.0 ships" section at the top. Nothing insrc/is changed by this PR.How the list was produced
dist/types.test/unitdiff, and howstream-chat-reactandstream-chat-react-nativeactually migrated.src/file and every changed export is accounted for (machine-checked), then reviewed by independent accuracy and completeness passes with runtime probes.Notes for reviewers