You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: ai-docs/breaking-changes.md
+100-3Lines changed: 100 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# React v14 Breaking Changes
2
2
3
-
Last updated: 2026-04-03
3
+
Last updated: 2026-04-08
4
4
5
5
## Scope
6
6
@@ -13,8 +13,8 @@ This file tracks confirmed v13 to v14 breaking changes for `stream-chat-react`.
13
13
## Audit Reference
14
14
15
15
- Baseline tag: `v13.14.2`
16
-
- Current audited SDK head: `6c7cd42afffb6d341b7a3b4bf5cc5a9bcd3f98ee` (`6c7cd42a`, `2026-04-03`, `fix(examples): enable async voice recording preview in thread composer (#3092)`)
17
-
- Future mining starting point: diff `6c7cd42afffb6d341b7a3b4bf5cc5a9bcd3f98ee..HEAD` first, then compare any newly confirmed changes back to the original v13 baseline before adding them here
16
+
- Current audited SDK head: `dc16bb584675f48d5f67cf5d5d355ba012cf81d2` (`dc16bb584`, `2026-04-08`, `feat!: externalize sidebar toggle and remove navOpen state from the SDK (#3088)`)
17
+
- Future mining starting point: diff `dc16bb584675f48d5f67cf5d5d355ba012cf81d2..HEAD` first, then compare any newly confirmed changes back to the original v13 baseline before adding them here
18
18
19
19
Only confirmed items should move from this file into the migration guide.
20
20
@@ -2015,6 +2015,99 @@ Only confirmed items should move from this file into the migration guide.
### BC-059: the final deprecated API purge removed old pinning, pagination, upload, preview, emoji-picker, and hook aliases
2019
+
2020
+
- Status: confirmed
2021
+
- Area: deprecated API cleanup
2022
+
- User impact:
2023
+
- imports or props using `pinPermissions`, `PinPermissions`, `PinEnabledUserRoles`, or `defaultPinPermissions` no longer compile
2024
+
- custom `usePinHandler(message, pinPermissions, notifications)` calls must be rewritten to the new two-argument signature
2025
+
- wrappers around `InfiniteScroll`, `LoadMoreButton`, and `LoadMorePaginator` can no longer use the deprecated alias props `hasMore`, `hasMoreNewer`, `loadMore`, `loadMoreNewer`, or `refreshing`
2026
+
- top-level imports using `UploadButton` / `UploadButtonProps` no longer resolve; use `FileInput` / `FileInputProps` instead
2027
+
-`ChannelListItemUI` no longer accepts the deprecated `latestMessage` alias; use `latestMessagePreview`
2028
+
-`EmojiPicker` no longer accepts `popperOptions`; use the current placement-based positioning surface instead
2029
+
- low-level imports using `StreamEmoji`, `moveChannelUp`, `hasNotMoreMessages`, or the old standalone channel-list listener hooks no longer resolve
-`v13.14.2:src/components/Message/hooks/usePinHandler.ts:43` through `:46` accepted `_permissions: PinPermissions = defaultPinPermissions`
2034
+
-`v13.14.2:src/components/InfiniteScrollPaginator/InfiniteScroll.tsx:17` through `:45` exposed deprecated `hasMore`, `hasMoreNewer`, `loadMore`, and `loadMoreNewer`
2035
+
-`v13.14.2:src/types/types.ts:32` through `:36` exposed deprecated `refreshing?: boolean` on `PaginatorProps`
2036
+
-`v13.14.2:src/components/index.ts:39` and `:40` re-exported `UploadButton` and `UploadButtonProps` from the package root
2037
+
-`v13.14.2:src/components/ChannelPreview/ChannelPreview.tsx:28` and `:29` still exposed the deprecated `latestMessage?: ReactNode` alias
-`git grep` on `v13.14.2` finds public exports for `StreamEmoji`, `moveChannelUp`, `hasNotMoreMessages`, `useChannelDeletedListener`, `useNotificationMessageNewListener`, and the rest of the old standalone channel-list listener hooks
2040
+
- New API:
2041
+
-`src/components/Message/hooks/usePinHandler.ts:16` through `:19` now accept only `(message, notifications?)`
2042
+
- current source has no `PinPermissions`, `PinEnabledUserRoles`, or `defaultPinPermissions`
2043
+
-`src/components/InfiniteScrollPaginator/InfiniteScroll.tsx:16` through `:23` now expose only `hasNextPage`, `hasPreviousPage`, `loadNextPage`, and `loadPreviousPage` through `PaginatorProps`
2044
+
-`src/types/types.ts:14` through `:18` expose `hasNextPage`, `hasPreviousPage`, and `isLoading`, with no `refreshing`
2045
+
-`src/components/index.ts:45` and `:46` export `FileInput` and `FileInputProps`
2046
+
-`src/components/ReactFileUtilities/UploadButton.tsx:20` through `:33` keep `FileInput` as the public file-input primitive
2047
+
-`src/components/ChannelListItem/ChannelListItem.tsx:31` exposes `latestMessagePreview?: ReactNode`, with no deprecated `latestMessage` alias
2048
+
- current `src/plugins/Emojis/EmojiPicker.tsx` exposes `placement?: PopperLikePlacement`, with no `popperOptions`
2049
+
- current `rg` over `src` returns no `StreamEmoji`, `moveChannelUp`, `hasNotMoreMessages`, `useChannelDeletedListener`, `useNotificationMessageNewListener`, or sibling standalone listener-hook exports
2050
+
- Replacement:
2051
+
- remove `pinPermissions` customization and rely on `channelCapabilities['pin-message']`
2052
+
- rewrite `usePinHandler(message, notifications?)` callers to the new signature
2053
+
- update paginator wrappers to `hasNextPage`, `hasPreviousPage`, `loadNextPage`, `loadPreviousPage`, and `isLoading`
2054
+
- replace top-level `UploadButton` imports with `FileInput`
2055
+
- replace `latestMessage` with `latestMessagePreview`
2056
+
- replace `EmojiPicker.popperOptions` with the current `placement` prop
2057
+
- remove imports of the old standalone channel-list listener hooks and other deprecated utilities instead of expecting package-level shims
2058
+
- Evidence:
2059
+
- commit `8317b73a2 refactor!: remove deprecated APIs ahead of v14 stable (#3086)` explicitly removed these deprecated props, aliases, and exports
2060
+
- current source still keeps the modern equivalents (`FileInput`, `latestMessagePreview`, `placement`, `isLoading`, `hasNextPage` / `loadNextPage`) while dropping the v13 compatibility layer
2061
+
- current `MessageList` and `VirtualizedMessageList` still expose `hasMoreNewer` / `loadMoreNewer`; the removal in this bucket is limited to the deprecated `InfiniteScroll` alias props and should not be generalized beyond that
-`git grep` on `v13.14.2` finds public references to `ToggleSidebarButton`, `ToggleButtonIcon`, and `NAV_SIDEBAR_DESKTOP_BREAKPOINT`
2089
+
- New API:
2090
+
-`src/context/ChatContext.tsx:24` through `:53` define `ChatContextValue` without `navOpen`, `openMobileNav`, or `closeMobileNav`
2091
+
-`src/components/Chat/Chat.tsx:18` through `:33` define `ChatProps` without `initialNavOpen`
2092
+
-`src/components/ChannelHeader/ChannelHeader.tsx:33` through `:38` define `ChannelHeaderProps` without `MenuIcon`
2093
+
-`src/components/ChannelHeader/ChannelHeader.tsx:52` through `:63` render `HeaderStartContent` from `ComponentContext` instead of a built-in toggle button
2094
+
-`src/context/ComponentContext.tsx:265` and `:267` expose `HeaderEndContent` and `HeaderStartContent` as the replacement slots for app-owned sidebar controls
2095
+
- current `rg` over `src` returns no `initialNavOpen`, `navOpen`, `openMobileNav`, `closeMobileNav`, `ToggleSidebarButton`, `ToggleButtonIcon`, `MenuIcon`, `NAV_SIDEBAR_DESKTOP_BREAKPOINT`, or `useMobileNavigation`
2096
+
- Replacement:
2097
+
- manage sidebar open/closed state in app code instead of expecting `Chat` to own it
2098
+
- inject app-owned toggle UI through `WithComponents` / `ComponentContext` using `HeaderStartContent` and `HeaderEndContent`
2099
+
- remove any code that reads mobile-nav state from `useChatContext()`
2100
+
- update CSS and tests to target app-owned toggle/layout behavior instead of the removed SDK nav-state classes
2101
+
- Evidence:
2102
+
- commit `dc16bb584 feat!: externalize sidebar toggle and remove navOpen state from the SDK (#3088)` removed SDK-owned sidebar state and the built-in toggle path
2103
+
- current source keeps the replacement slots in `ComponentContext`, but the old stateful sidebar APIs are gone
@@ -2044,6 +2137,10 @@ Only confirmed items should move from this file into the migration guide.
2044
2137
- example-only follow-ups (`623989574`, `2f060ae89`, `6c7cd42af`): investigated; these only update examples and docs scaffolding and do not add a new v13-to-v14 migration item.
2045
2138
- assorted UI/UX fixes (`6c06e043`, `a47981ff`, `3f093622`): investigated; Giphy editability, dialog layering, composer state restoration, centered headers, message-list width, and channel-list dialog-portal cleanup changed runtime behavior, but they did not introduce new removed exports or renamed public override surfaces beyond the separately tracked reactions and icon buckets.
2046
2139
- example-app refreshes (`86ada37e`, `887a326a`): investigated; these only update example apps and do not change the public SDK surface.
2140
+
- Giphy fixed-height preview cleanup (`30e45faf7`): investigated; switching Giphy previews to fixed-height is a layout-stability improvement, not a removed or renamed v13 public API.
2141
+
- audio playback wave/progress refinements (`982cf2a17`): investigated; smoother progress rendering and sizing updates do not remove or rename a documented public API.
2142
+
- tracker/docs maintenance commit (`b5cb01f53`): investigated; this only updates the internal audit trackers and does not change the SDK surface.
2143
+
- beta release commit (`d313317b0`): investigated; release tagging alone does not add a new migration item.
0 commit comments