Repository navigation
docs(ai-docs): add the v9 → v10 agent migration guide and re-verify breaking changes at HEAD - #1984
Merged
Merged
Conversation
…reaking changes at HEAD Add ai-docs/ai-migration-v9-to-v10.md, the entry point a coding agent works from: rules, companion docs, phased workflow with a definition of done, detection greps, a quick-reference map, the breaks that still compile, inline snippets for the high-impact changes, a leftover-identifier grep and an index of every reference anchor. Bring v10-breaking-changes.md up to release-v10 HEAD: the call_level removal from push preferences, BlocklistBehavior and ModerationAction re-exported, read events after #1981, per-channel mark-read throttling, recovery paging, and the later thread, filter and composer fixes. No anchor is renamed or removed. Ticket: REACT-1307
oliverlaz
requested review from
MartinCupela,
NikolaGoranNaumovski,
isekovanic and
szuperaz
as code owners
November 3, 2026 09:44
isekovanic
approved these changes
Nov 3, 2026
oliverlaz
added a commit
to GetStream/stream-chat-react-native
that referenced
this pull request
Nov 3, 2026
… against V10 (#3918) Ticket: https://linear.app/stream/issue/REACT-1307 ## Goal Make the v9 → v10 guide the input of a prebuilt migration prompt: a coding agent gets one URL plus the user's repo and has to migrate accurately. The guide had grown by accretion, which hurt that: - "Part I" and "§19" each appeared twice; - Verify sat in the middle of the guide; - K.8 came before K.6; - detection greps hard-coded `src/`; - there was history from release candidates, and many bug-fix sections with nothing for an integrator to do. ## Changes **`ai-docs/ai-migration-v9-to-v10.md`: structure** - The order is now: 1. Title and verified line 2. Rules (old §0 folded in) 3. Companion documents 4. Workflow, definition of done and report template 5. Detection (`rg -t js -t ts -g '!**/node_modules/**'`, keyed on v9 names) 6. Quick reference (20 rows added) 7. A consolidated "Breaks that compile" table (~40 rows, each with a Detect command) 8. Parts A–S 9. Verification, with a leftover-identifier grep 10. An index mapping every `v10-breaking-changes.md` section to a guide section - IDs: - Verify is now an unnumbered `## Verification`, so every existing `§19` reference (all of them mean i18n) stays valid. - The duplicate Part I (i18n) is now Part S. - K.x sections are in order. - Every § reference in `ai-docs/` resolves to a unique heading. - Sections with no integrator action are one-liners: L.8–L.10, M.1, M.3–M.5, M.7, P.10, P.14, P.16, P.18, P.19, P.21, P.22, Q.2. Their full text moved to section 17 of `v10-breaking-changes.md`. **Accuracy, re-verified at `74884ff55`** - #3916: a channel or thread reopened on an older page now jumps to the latest messages, and `useJumpToLatestOnOpen` is exported. Covered in §8, §R.5, the breaks table and the reference. - Wrong claim fixed: `<Chat>` does not replace an app's `statusReporter`; the app's reporter wins (§R.2). - Other fixes: - §16.3: capability gating; - `useMutedUsers()` returns `UserMuteResponse[]`; - the `typing` type; - `deleted_by` is removed; - `DEFAULT_BACKEND_SORT` is not exported; - a dead stream-chat-js link. - Names that only existed in release candidates are removed. Checked against the v9.11.1 / stream-chat 9.54.4 tags: - the `channel.state.*Store` handles and `mutedUsersStore`; - `WatcherState`, which was in §4's After snippet; - `MutedUsersState`, `normalizeTimestamp`, `getChannelUnreadState` and `*WithLocalUpdate`. - Remaining stale mentions fixed: `channel.deactivate()` and `client.activeChannels` in `channel-state-ui-migration.md`, and the `markRead` description in `v10-docs-impact.md`. - `ai-migration.md` (v8 → v9) has a banner pointing to this guide. ## How it was checked - Every identifier in the guide was checked against the SDK source, `stream-chat-js` `src/` and `@stream-io/i18n` / `state-store`. All 1,292 root exports were listed with the TS compiler, and every recommended hook is a root export. - About 40 v10 snippets typecheck against `package/src`. - The detection, breaks-table and leftover greps were run on the v9 and v10 SampleApps. ## Needs a decision - **Deep link vs reopen-at-latest.** If an app starts `jumpToMessage` in a screen-level `useLayoutEffect`, the SDK's jump to the latest messages may fire first. The SDK tests only cover a jump started before `<Channel>` mounts, so the guide recommends that order. Worth a test or a guard in the hook. - Phase 1 asks which pre-release to use when no stable 10.x exists. Check that this fits the prebuilt prompt during the RC period. ## Notes - The raw link to the stream-chat-js guide resolves once its PR is merged into `release-v10`. - The local `package/node_modules/stream-chat` is rc.26; `yarn install` brings it to rc.30. ## Related PRs The three guides link to each other; review together: - stream-chat-js: GetStream/stream-chat-js#1984 (merge first: the React and RN guides link to its raw URL) - stream-chat-react: GetStream/stream-chat-react#3377 - stream-chat-react-native: #3918
|
🎉 This PR is included in version 10.0.0-rc.31 🎉 The release is available on: Your semantic-release bot 📦🚀 |
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.
Ticket: https://linear.app/stream/issue/REACT-1307
Goal
Make the v9 → v10 migration docs usable as the input of a prebuilt migration prompt: a coding agent gets one URL plus the user's repo, and has to migrate accurately. Until now
stream-chathad only the exhaustive audit (v10-breaking-changes.md), and no execution guide.Changes
New
ai-docs/ai-migration-v9-to-v10.md(entry guide, ~1.2k lines)node_modules/stream-chatis the source of truth, verify before writing, stop on a missing symbol, smallest edit, a green build is not done.src/.tsc --strictagainstsrc/.@stream-io/node-sdk, not ported ontostream-chat.ai-docs/v10-breaking-changes.md, re-verified atfdfcb296(rc.30)call_levelfromPushPreferenceInput/PushPreferencesResponse. It also re-exportedBlocklistBehaviorandModerationAction, which the rename table listed as removed.read-eventscapability is checked viachannel.readEventsEnabled.nullinstead of throwing.markRead()/markUnread()throws.status: 0;addFilterResolvers;user.updatedreaches threads;customfrom drafts and edits.composer-custom-data-restore.How it was checked
src/; the only misses are v9 names, placeholders and prose.prettier --checkpasses.Open questions for review
updatePartialset custom fields as'custom.name'dot paths or as flat keys? React'sChannelManagementViewuses dot paths, while the docs-snippet test uses flat keys.ensureWatched, renamed paginator members). The guide has none. Keep them or drop them?Related PRs
The three guides link to each other; review together: