Skip to content

chore: upgrade to stream-chat@beta#2170

Open
oliverlaz wants to merge 1 commit intomainfrom
chat-beta
Open

chore: upgrade to stream-chat@beta#2170
oliverlaz wants to merge 1 commit intomainfrom
chat-beta

Conversation

@oliverlaz
Copy link
Member

@oliverlaz oliverlaz commented Mar 20, 2026

💡 Overview

Upgrades to the newest Stream Chat beta SDKs;

Summary by CodeRabbit

  • Documentation

    • Added comprehensive setup and operation guide for React Native sample application.
  • Chores

    • Updated Stream Chat libraries to latest versions across sample applications.
    • Added new libraries to React Native sample application.
  • Style

    • Simplified theme configuration in React Native application.

@oliverlaz oliverlaz requested a review from isekovanic March 20, 2026 18:14
@changeset-bot
Copy link

changeset-bot bot commented Mar 20, 2026

⚠️ No Changeset found

Latest commit: 6e14c74

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 20, 2026

📝 Walkthrough

Walkthrough

Updates Stream SDK dependencies across sample apps, upgrades React Native dogfood libraries (flash-list, react-native-teleport), removes dark-mode color logic from theme hook, adds React Native dogfood architecture documentation, and corrects Next.js type reference path.

Changes

Cohort / File(s) Summary
Documentation
sample-apps/react-native/dogfood/CLAUDE.md
New documentation describing React Native dogfood app purpose, workflow, architecture, app modes, navigation flows, authentication, deep-linking, push notifications, and integrations.
React Native Dogfood Dependencies
sample-apps/react-native/dogfood/package.json
Bumped stream-chat to ^9.38.0, stream-chat-react-native to ^9.0.0-beta.1, @gorhom/bottom-sheet to 5.1.8; added @shopify/flash-list and react-native-teleport.
React Native Dogfood Theme
sample-apps/react-native/dogfood/src/hooks/useTheme.ts
Removed dark-mode color scheme logic; simplified getChatStyle() to take no parameters and return minimal theme config (avatar only).
React Sample App Dependencies
sample-apps/react/messenger-clone/package.json, sample-apps/react/react-dogfood/package.json, sample-apps/react/zoom-clone/package.json
Bumped stream-chat to ^9.38.0 and stream-chat-react to ^13.14.2 across all three React sample apps.
TypeScript Configuration
sample-apps/react/react-dogfood/next-env.d.ts
Updated Next.js type reference path from .next/types/routes.d.ts to .next/dev/types/routes.d.ts.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 Hoppy hops across the SDK stream,
Dependencies bumped in dependency dream!
Flutter-list and teleport take flight,
Dogfood docs shine ever so bright,
Theme simplified, colors fade away,
A cleaner React-Native day! 🌟

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description is incomplete and missing key sections from the template. It lacks implementation notes and doesn't reference any ticket or documentation links. Add implementation notes explaining the specific SDK changes and their impacts, and include ticket/documentation references if applicable.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: upgrading Stream Chat dependencies to beta versions across multiple sample apps.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chat-beta

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (4)
sample-apps/react-native/dogfood/CLAUDE.md (1)

63-70: Add language specification to fenced code block.

The fenced code block lacks a language identifier. Since this is navigation flow pseudocode rather than executable code, specify text as the language for proper rendering.

📝 Proposed fix
-```
+```text
 Meeting:  JoinMeetingScreen → MeetingScreen → ChatScreen (optional)
                              → GuestModeScreen → GuestMeetingScreen
 Call:     JoinCallScreen → [RingingCallContent overlay for incoming calls]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sample-apps/react-native/dogfood/CLAUDE.md` around lines 63 - 70, The fenced
code block containing the navigation pseudocode (the lines starting with
"Meeting:  JoinMeetingScreen → MeetingScreen → ChatScreen (optional)" etc.)
should include a language identifier to ensure proper rendering; edit the
triple-backtick fence enclosing that block in CLAUDE.md to use "text" (i.e.,
```text) so the pseudocode is rendered as plain text.
sample-apps/react-native/dogfood/src/hooks/useTheme.ts (1)

12-14: Consider returning a stable theme object reference.

useStreamChatTheme currently creates a fresh object on each call; using a module-level constant (or memoization) can avoid unnecessary provider value churn.

♻️ Suggested tweak
+const CHAT_STYLE: DeepPartial<Theme> = {
+  avatar: {
+    image: {
+      height: 32,
+      width: 32,
+    },
+  },
+};
+
-const getChatStyle = (): DeepPartial<Theme> => ({
-  avatar: {
-    image: {
-      height: 32,
-      width: 32,
-    },
-  },
-});
+const getChatStyle = (): DeepPartial<Theme> => CHAT_STYLE;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sample-apps/react-native/dogfood/src/hooks/useTheme.ts` around lines 12 - 14,
useStreamChatTheme currently returns a fresh theme object every call (via
getChatStyle), causing unnecessary re-renders; change it to return a stable
reference by memoizing the result or using a module-level constant: inside
useStreamChatTheme, use React.useMemo(() => getChatStyle(), []) or compute
getChatStyle once at module scope and return that constant so the provider value
from useStreamChatTheme remains referentially stable.
sample-apps/react-native/dogfood/package.json (2)

51-52: Please attach a migration smoke-test checklist for this beta upgrade.

Given the beta jump, include explicit dogfood validation notes for chat flows and push-notification integration before merge.

Based on learnings: Use the dogfood sample app (sample-apps/react-native/dogfood/) for manual testing of all SDK features and integration with push notifications before release.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sample-apps/react-native/dogfood/package.json` around lines 51 - 52, The
package.json update bumps "stream-chat" and "stream-chat-react-native" to a
beta; add a migration smoke-test checklist and dogfood validation notes to the
repo so reviewers can manually verify chat flows and push notifications before
merging: create a short CHECKLIST.md or add to the existing README that
references the dogfood sample app and lists explicit steps to test (1)
sign-in/token flow, (2) sending/receiving messages, attachments, reactions,
typing indicators, and presence, (3) channel creation/permissions, (4)
offline/reconnect behavior, and (5) push-notification registration/receipt for
both iOS and Android, plus expected results and any known beta caveats; link
these instructions to the dependency change (package.json entries "stream-chat"
and "stream-chat-react-native") so the reviewer can run the checklist against
the sample-app before merging.

51-52: Pin exact beta version for dogfood reproducibility.

Line 52 uses a caret prerelease range (^9.0.0-beta.1), which can drift to 9.0.0-beta.2, 9.0.0, or 9.1.0 during integration testing. Since dogfood serves as a QA environment for manual testing, exact pinning ensures consistent, reproducible builds across test runs.

♻️ Suggested change
-    "stream-chat-react-native": "^9.0.0-beta.1"
+    "stream-chat-react-native": "9.0.0-beta.1"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sample-apps/react-native/dogfood/package.json` around lines 51 - 52, Change
the prerelease dependency range on stream-chat-react-native from a caret range
to an exact version to prevent drift; in package.json update the dependency
"stream-chat-react-native" so it is pinned to the exact version 9.0.0-beta.1
(remove the leading caret) to ensure reproducible dogfood builds during testing.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@sample-apps/react/react-dogfood/next-env.d.ts`:
- Line 3: Remove the dev-only generated import from the framework-managed
next-env.d.ts: delete the import statement that references
"./.next/dev/types/routes.d.ts" so the file no longer depends on a local dev
artifact; leave the rest of next-env.d.ts untouched since Next.js manages it and
tsconfig already includes .next/types/**/*.ts.

---

Nitpick comments:
In `@sample-apps/react-native/dogfood/CLAUDE.md`:
- Around line 63-70: The fenced code block containing the navigation pseudocode
(the lines starting with "Meeting:  JoinMeetingScreen → MeetingScreen →
ChatScreen (optional)" etc.) should include a language identifier to ensure
proper rendering; edit the triple-backtick fence enclosing that block in
CLAUDE.md to use "text" (i.e., ```text) so the pseudocode is rendered as plain
text.

In `@sample-apps/react-native/dogfood/package.json`:
- Around line 51-52: The package.json update bumps "stream-chat" and
"stream-chat-react-native" to a beta; add a migration smoke-test checklist and
dogfood validation notes to the repo so reviewers can manually verify chat flows
and push notifications before merging: create a short CHECKLIST.md or add to the
existing README that references the dogfood sample app and lists explicit steps
to test (1) sign-in/token flow, (2) sending/receiving messages, attachments,
reactions, typing indicators, and presence, (3) channel creation/permissions,
(4) offline/reconnect behavior, and (5) push-notification registration/receipt
for both iOS and Android, plus expected results and any known beta caveats; link
these instructions to the dependency change (package.json entries "stream-chat"
and "stream-chat-react-native") so the reviewer can run the checklist against
the sample-app before merging.
- Around line 51-52: Change the prerelease dependency range on
stream-chat-react-native from a caret range to an exact version to prevent
drift; in package.json update the dependency "stream-chat-react-native" so it is
pinned to the exact version 9.0.0-beta.1 (remove the leading caret) to ensure
reproducible dogfood builds during testing.

In `@sample-apps/react-native/dogfood/src/hooks/useTheme.ts`:
- Around line 12-14: useStreamChatTheme currently returns a fresh theme object
every call (via getChatStyle), causing unnecessary re-renders; change it to
return a stable reference by memoizing the result or using a module-level
constant: inside useStreamChatTheme, use React.useMemo(() => getChatStyle(), [])
or compute getChatStyle once at module scope and return that constant so the
provider value from useStreamChatTheme remains referentially stable.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: be601737-a851-4e1e-b594-4e52924ea2d0

📥 Commits

Reviewing files that changed from the base of the PR and between af6d0e5 and 6e14c74.

⛔ Files ignored due to path filters (2)
  • sample-apps/react-native/dogfood/ios/Podfile.lock is excluded by !**/*.lock
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (7)
  • sample-apps/react-native/dogfood/CLAUDE.md
  • sample-apps/react-native/dogfood/package.json
  • sample-apps/react-native/dogfood/src/hooks/useTheme.ts
  • sample-apps/react/messenger-clone/package.json
  • sample-apps/react/react-dogfood/next-env.d.ts
  • sample-apps/react/react-dogfood/package.json
  • sample-apps/react/zoom-clone/package.json

/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/types/routes.d.ts";
import "./.next/dev/types/routes.d.ts";
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== References to .next/dev/types =="
rg -n --hidden -g '!**/node_modules/**' '\.next/dev/types/routes\.d\.ts|\.next/dev/types' || true

echo
echo "== References to .next/types =="
rg -n --hidden -g '!**/node_modules/**' '\.next/types/routes\.d\.ts|\.next/types/\*\*/\*\.ts|typedRoutes' || true

echo
echo "== next-env.d.ts files =="
fd 'next-env\.d\.ts$' -H

Repository: GetStream/stream-video-js

Length of output: 537


🏁 Script executed:

cat -n sample-apps/react/react-dogfood/next-env.d.ts

Repository: GetStream/stream-video-js

Length of output: 363


🏁 Script executed:

cd sample-apps/react/react-dogfood && sed -n '20,35p' tsconfig.json && echo "..." && sed -n '26,32p' tsconfig.json

Repository: GetStream/stream-video-js

Length of output: 382


🏁 Script executed:

grep -A 5 -B 5 '\.next/types' sample-apps/react/react-dogfood/tsconfig.json

Repository: GetStream/stream-video-js

Length of output: 225


Remove the dev-only artifact import from the framework-managed next-env.d.ts file.

The file explicitly states "This file should not be edited" and is managed by Next.js. The import on line 3 points to ./.next/dev/types/routes.d.ts, which is a local dev-only generated artifact that does not exist in CI, production, or other environments. The tsconfig is already correctly configured with .next/types/**/*.ts for framework-managed type includes. Removing this import ensures type checking works across all build contexts.

Suggested fix
-import "./.next/dev/types/routes.d.ts";
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import "./.next/dev/types/routes.d.ts";
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@sample-apps/react/react-dogfood/next-env.d.ts` at line 3, Remove the dev-only
generated import from the framework-managed next-env.d.ts: delete the import
statement that references "./.next/dev/types/routes.d.ts" so the file no longer
depends on a local dev artifact; leave the rest of next-env.d.ts untouched since
Next.js manages it and tsconfig already includes .next/types/**/*.ts.

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.

1 participant