github GetStream/stream-chat-android v7.0.0-beta

pre-release6 hours ago

Visual Redesign

v7 introduces a complete visual overhaul of the Compose UI components with a new design system built on StreamDesign.

New Design System

Area What Changed
Theming StreamColors, StreamTypography, StreamShapes → unified StreamDesign with Colors (74 tokens) and Typography (13 styles)
Feature Flags Scattered ChatTheme params → grouped in ChatUiConfig (translation, composer, channel list, polls, etc.)
Component Factory MessageContentFactory removed → single ChatComponentFactory for all customization
CompositionLocals ~15 individual locals → consolidated into LocalChatUiConfig, LocalReactionResolver

Redesigned Components

Component Changes
Channel List Swipeable items with action buttons, loading shimmer, updated selected channel menu
Message List Inline typing indicator, redesigned system messages, updated date/unread separators
Message Composer Split into leading/center/trailing content. Floating style option. Internal audio recording. Inline edit with save button
Attachment Picker Rebuilt as AttachmentPicker. Mode-based: GalleryPickerMode, FilePickerMode, CameraPickerMode, PollPickerMode, CommandPickerMode. Tab factory removed
Reactions Emoji-only by default via ReactionResolver. New ReactionsMenu (was SelectedReactionsMenu)
Avatars GroupAvatar/ImageAvatar/InitialsAvatarAvatarStack + AvatarPlaceholder. Crossfade removed
Polls New creation and results screens. maxVotes nullable
Thread List Redesigned screen with updated indicators
Channel Info Member options with bottom sheet actions

Simplified Architecture

Module Consolidation

Removed:

  stream-chat-android-offline    → merged into client
  stream-chat-android-state      → merged into client
  stream-chat-android-ui-utils   → merged into ui-common
  stream-chat-android-ai-assistant → use stream-chat-android-ai repo

Client Setup

// v6
val offlinePlugin = StreamOfflinePluginFactory(appContext = context)
val statePlugin = StreamStatePluginFactory(config = StatePluginConfig(), appContext = context)

ChatClient.Builder(apiKey, context)
.withPlugins(offlinePlugin, statePlugin)
.build()

// v7 — plugins removed, built-in by default
ChatClient.Builder(apiKey, context)
.config(ChatClientConfig())  // optional, sensible defaults
.build()

Config Renames

v6 v7 Purpose
StatePluginConfig + StreamOfflinePluginFactory ChatClientConfig Client behavior (offline, presence, sync)
Multiple theme fields ChatUiConfig Compose UI feature flags
ChatClientConfig ChatApiConfig (internal) Low-level API/URL config, not public anymore

Breaking Changes at a Glance

Category Details
Removed modules stream-chat-android-offline, stream-chat-android-state, stream-chat-android-ui-utils, stream-chat-android-ai-assistant
Renamed/moved classes ~30
Removed APIs withPlugins(), MessageContentFactory, AttachmentsPickerTabFactory, ReactionIconFactory, StreamShapes, StreamColors (individual)
New APIs ChatComponentFactory, ChatClientConfig, ChatUiConfig, StreamDesign, ReactionResolver, AttachmentPickerMode

Migration

See the Migration guide for step-by-step instructions.

Quick Start

  1. Remove stream-chat-android-offline and stream-chat-android-state dependencies
  2. Replace withPlugins(...) with config(ChatClientConfig()) (or remove entirely for defaults)
  3. Update ChatTheme — replace individual params with StreamDesign and ChatUiConfig
  4. Replace AttachmentsPickerAttachmentPicker, SelectedReactionsMenuReactionsMenu
  5. Move custom rendering from MessageContentFactory to ChatComponentFactory
  6. Run ./gradlew build and fix remaining import changes

Full changelog and diff available on v6.35.0...v7.0.0-beta

Don't miss a new stream-chat-android release

NewReleases is sending notifications on new releases.