Skip to content

docs: consolidate v10 breaking changes into ai-docs - #1919

Merged
isekovanic merged 4 commits into
release-v10from
claude/sdk-v10-breaking-changes-f64baf
Oct 19, 2026
Merged

isekovanic merged 4 commits into
release-v10from
claude/sdk-v10-breaking-changes-f64baf

Conversation

@oliverlaz

Copy link
Copy Markdown
Member

Summary

Consolidates every breaking change in the stream-chat public 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 root v9-to-v10-migration-guide-*.md files, react-thread-paginator-migration.md and docs/breaking-changes-v14-v15.md are superseded and removed; references in CLAUDE.md and docs/*.md now 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 in src/ is changed by this PR.

How the list was produced

  • Mechanical diff of the exported API surface (exports, class members, signatures) built from both dist/types.
  • Deep type-compatibility check: both builds loaded into one TS program, every shared export checked for assignability in both directions to catch nested shape changes.
  • The v9 docs-snippet tests type-checked against v10 (603 errors, grouped into 70 distinct changes).
  • Behaviour changes mined from the test/unit diff, and how stream-chat-react and stream-chat-react-native actually migrated.
  • Claims from the existing guides and the 94 commits, each re-verified against source (the old guides had a number of errors, now corrected).
  • Every changed 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

  • rc-to-rc changes are excluded; only v9 to v10 counts.
  • Section 23 lists open questions that need the live API to confirm.
  • The file is large (mostly the 384-row type rename table).

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.

@isekovanic isekovanic left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread ai-docs/v10-followups.md Resolved
Comment thread ai-docs/v10-followups.md Resolved
Comment thread ai-docs/v10-followups.md Resolved
oliverlaz and others added 2 commits October 19, 2026 13:55
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
isekovanic merged commit 07aa5f5 into release-v10 Oct 19, 2026
4 checks passed
@isekovanic
isekovanic deleted the claude/sdk-v10-breaking-changes-f64baf branch October 19, 2026 12:51
@stream-ci-bot

Copy link
Copy Markdown

🎉 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 -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants