Skip to content

Commit d22445e

Browse files
committed
docs: track react v14 sidebar and deprecated APIs
1 parent dc16bb5 commit d22445e

File tree

2 files changed

+272
-103
lines changed

2 files changed

+272
-103
lines changed

ai-docs/breaking-changes.md

Lines changed: 100 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# React v14 Breaking Changes
22

3-
Last updated: 2026-04-03
3+
Last updated: 2026-04-08
44

55
## Scope
66

@@ -13,8 +13,8 @@ This file tracks confirmed v13 to v14 breaking changes for `stream-chat-react`.
1313
## Audit Reference
1414

1515
- 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
1818

1919
Only confirmed items should move from this file into the migration guide.
2020

@@ -2015,6 +2015,99 @@ Only confirmed items should move from this file into the migration guide.
20152015
- `docs/data/docs/chat-sdk/react/v14/03-ui-cookbook/04-message/02-reactions.md`
20162016
- Example needed: yes
20172017

2018+
### 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
2030+
- Old API:
2031+
- `v13.14.2:src/components/Message/types.ts:91` exposed `pinPermissions?: PinPermissions`
2032+
- `v13.14.2:src/context/MessageContext.tsx:133` exposed `pinPermissions?: PinPermissions`
2033+
- `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
2038+
- `v13.14.2:src/plugins/Emojis/EmojiPicker.tsx:30` exposed `popperOptions?: Partial<{ placement: PopperLikePlacement }>`
2039+
- `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
2062+
- Docs impact:
2063+
- migration guide
2064+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/05-channel-list/03-channel_list_hooks.md`
2065+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/05-channel-list/04-channel_preview_ui.md`
2066+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/07-message-list/01-message_list.md`
2067+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/07-message-list/02-virtualized_list.md`
2068+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/08-message/02-message_context.md`
2069+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/09-message-composer/06-emoji-picker.md`
2070+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/12-indicators.md`
2071+
- Example needed: yes
2072+
2073+
### BC-060: sidebar toggle and mobile-nav state were externalized from the SDK
2074+
2075+
- Status: confirmed
2076+
- Area: chat layout and sidebar state
2077+
- User impact:
2078+
- `Chat` no longer owns sidebar state, so `initialNavOpen` no longer exists
2079+
- `useChatContext()` no longer provides `navOpen`, `openMobileNav`, or `closeMobileNav`
2080+
- `ChannelHeader` no longer provides a built-in sidebar toggle or accepts a `MenuIcon` prop
2081+
- imports using `ToggleSidebarButton`, `ToggleButtonIcon`, `MenuIcon`, `NAV_SIDEBAR_DESKTOP_BREAKPOINT`, or `useMobileNavigation` no longer compile
2082+
- custom CSS or tests targeting SDK-owned nav-open classes or built-in toggle behavior need to be rewritten around app-owned state
2083+
- Old API:
2084+
- `v13.14.2:src/components/Chat/Chat.tsx:31` and `:57` exposed `initialNavOpen?: boolean` and defaulted it in `Chat`
2085+
- `v13.14.2:src/context/ChatContext.tsx:36`, `:40`, and `:63` exposed `closeMobileNav`, `openMobileNav`, and `navOpen`
2086+
- `v13.14.2:src/components/ChannelHeader/ChannelHeader.tsx:18`, `:19`, and `:32` exposed `MenuIcon` and used it for the built-in sidebar toggle
2087+
- `v13.14.2:src/components/ChannelList/hooks/index.ts:8` re-exported `useMobileNavigation`
2088+
- `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
2104+
- Docs impact:
2105+
- migration guide
2106+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/03-chat/01-chat.md`
2107+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/03-chat/02-chat_context.md`
2108+
- `docs/data/docs/chat-sdk/react/v14/02-ui-components/04-channel/02-channel_header.md`
2109+
- Example needed: yes
2110+
20182111
## Likely
20192112

20202113
- None yet
@@ -2044,6 +2137,10 @@ Only confirmed items should move from this file into the migration guide.
20442137
- 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.
20452138
- 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.
20462139
- 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.
20472144

20482145
## Notes For Migration Guide Drafting
20492146

0 commit comments

Comments
 (0)