Skip to content

Bump Stream Chat Android to 7.13 - #66

Merged
maxkahan merged 1 commit into
mainfrom
chore/chat-v7
Oct 21, 2026
Merged

maxkahan merged 1 commit into
mainfrom
chore/chat-v7

Conversation

@maxkahan

Copy link
Copy Markdown
Contributor

Bumps every sample in this repo from Stream Chat Android 6.1.1 to 7.13.0 (newest 7.x on Maven Central). The live Chat Android v7 docs link video-chat-sample, virtual-event-sample and whatsapp-clone-sample from here, so the repo should build against v7. No module uses Stream Video.

Versions

Before After
Stream Chat Android 6.1.1 7.13.0
Kotlin 1.9.23 2.2.21
AGP 8.2.2 8.13.2
Gradle 8.5 8.13
compileSdk 34 36 (targetSdk stays 34, minSdk unchanged)
Navigation (safe-args) 2.5.1 2.8.4
Gradle heap -Xmx2048m -Xmx4g (D8 ran out of memory at 2g with the v7 dependency graph)

The Compose sample now uses the Kotlin Compose compiler plugin (org.jetbrains.kotlin.plugin.compose) instead of composeOptions and the old compiler artifact.

Changes per module

All modules that used stream-chat-android-offline and stream-chat-android-state drop them (merged into the client in v7). Their withPlugins(...) setup becomes .config(ChatClientConfig(offlineEnabled = true, userPresence = true)).

  • video-chat-sample: version bump only. It uses the low-level client. Note that in v7 the state layer is always on and offline defaults to on, where the v6 setup had no plugins.
  • virtual-event-sample: MessageListViewModelFactory -> ChannelViewModelFactory, MessageListHeaderView/MessageListHeaderViewModel -> ChannelHeaderView/ChannelHeaderViewModel (layout attrs streamUiMessageListHeader* -> streamUiChannelHeader*, view id renamed to channelHeaderView). The livestream PlainTextViewHolder.bindData now takes a non-null MessageListItemPayloadDiff.
  • whatsapp-clone-sample: ChannelViewModelFactory and ChannelHeaderViewModel replace the old factory and header ViewModel.
  • custom-attachments-message-composer: same factory and header renames as above, MessageListListenerContainer -> MessageListListeners, and addSelectedAttachments -> addAttachments.
  • custom-attachments-message-input: MessageListActivity/MessageListFragment -> ChannelActivity/ChannelFragment (createChannelFragment; setupMessageComposer is still the override point), MessageListListenerContainer -> MessageListListeners, addSelectedAttachments -> addAttachments.
  • compose-custom-attachments: this needed the most work. v7 removes AttachmentFactory and the attachmentFactories/quotedAttachmentFactories params on ChatTheme, so the date attachment rendering moves into a new CustomChatComponentFactory (CustomAttachmentContent, MessageComposerAttachments, MessageQuotedContent, MessageComposerQuotedMessage). The SDK's own v7 ui-guides sample is built the same way. The composer integrations slot is gone: the calendar button is now the MessageComposerLeadingContent override, and MessageComposer(onAttachmentsClick = ...) opens the date picker. Other renames: MessagesViewModelFactory -> ChannelViewModelFactory, MessageListHeader -> ChannelHeader, ChannelsScreen(onItemClick) -> onChannelClick, CancelIcon -> ComposerCancelIcon. Theme tokens moved to StreamDesign: textHighEmphasis -> textPrimary, textLowEmphasis -> textSecondary, barsBackground -> backgroundCoreSurfaceDefault, appBackground -> backgroundCoreApp, typography.body -> bodyDefault, shapes.attachment -> RoundedCornerShape(12.dp), and the removed infoAccent -> accentSuccess. The date attachment now also sets fallback so channel-list previews still show the date, which the removed textFormatter used to do.

How this was checked

Run locally with Temurin JDK 17.0.20.1 (macOS aarch64) and Android SDK platform 36 / build-tools 36.0.0, after a ./gradlew clean:

  • ./gradlew --no-build-cache --rerun-tasks spotlessCheck: BUILD SUCCESSFUL. spotlessApply changed import order only.
  • ./gradlew --no-build-cache assembleDebug (what pr-checks.yml runs): BUILD SUCCESSFUL, all 6 modules.
  • ./gradlew --no-build-cache build (assembles debug and release, lint, unit tests): BUILD SUCCESSFUL.

Not checked

None of the apps was run on a device or emulator, so everything is compile-level only. Please look at these visually:

  • compose-custom-attachments: the v7 composer and message list are redesigned, so check the calendar button in the composer's leading slot, the date attachment in a message and in the composer preview, quoted date messages in both the list and the reply preview, and the accentSuccess colour that replaces infoAccent.
  • virtual-event-sample: the DM screen's ChannelHeaderView keeps the custom back icon, the background and the hidden avatar. Also check the back-button padding workaround, which walks the header's ImageViews.
  • custom-attachments-message-composer / -input: the custom leading content (attach, commands and calendar buttons) inside the v7 MessageComposerView.
  • All XML samples pick up v7's new default look and the new default feature flags (for example, audio recording is on by default).

🤖 Generated with Claude Code

Move every sample from Stream Chat Android 6.1.1 to 7.13.0 and update
the toolchain v7 needs: Kotlin 2.2.21, AGP 8.13.2, Gradle 8.13,
compileSdk 36 and navigation 2.8.4. The Compose sample now uses the
Kotlin Compose compiler plugin instead of composeOptions. The Gradle
heap goes to 4g because D8 ran out of memory at 2g with the larger v7
dependency graph.

API moves, following the v6 to v7 migration guide:

- The offline and state artifacts are gone. Clients are configured with
  ChatClientConfig(offlineEnabled = true, userPresence = true) instead
  of withPlugins(...).
- XML: MessageListViewModelFactory -> ChannelViewModelFactory,
  MessageListHeaderView/ViewModel -> ChannelHeaderView/ViewModel
  (layout attrs streamUiMessageListHeader* -> streamUiChannelHeader*),
  MessageListActivity/Fragment -> ChannelActivity/Fragment,
  MessageListListenerContainer -> MessageListListeners,
  addSelectedAttachments -> addAttachments, and bindData now takes a
  non-null MessageListItemPayloadDiff.
- Compose: AttachmentFactory and the attachmentFactories ChatTheme
  params are gone, so the date attachment rendering moves into a
  ChatComponentFactory (CustomAttachmentContent,
  MessageComposerAttachments, MessageQuotedContent,
  MessageComposerQuotedMessage, MessageComposerLeadingContent).
  MessagesViewModelFactory -> ChannelViewModelFactory,
  MessageListHeader -> ChannelHeader, the composer integrations slot
  -> onAttachmentsClick, ChannelsScreen onItemClick -> onChannelClick,
  CancelIcon -> ComposerCancelIcon, and theme tokens move to
  StreamDesign names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@maxkahan
maxkahan merged commit 73ae1bc into main Oct 21, 2026
4 checks passed
@maxkahan
maxkahan deleted the chore/chat-v7 branch October 21, 2026 15:36
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