Skip to content

Conversation

@martinmitrevski
Copy link
Contributor

🔗 Issue Links

Provide all Linear and/or Github issues related to this PR, if applicable.

🎯 Goal

Describe why we are making this change.

📝 Summary

Provide bullet points with the most important changes in the codebase.

🛠 Implementation

Provide a detailed description of the implementation and explain your decisions if you find them relevant.

🎨 Showcase

Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable.

Before After
img img

🧪 Manual Testing Notes

Explain how this change can be tested manually, if applicable.

☑️ Contributor Checklist

  • I have signed the Stream CLA (required)
  • This change should be manually QAed
  • Changelog is updated with client-facing changes
  • Changelog is updated with new localization keys
  • New code is covered by unit tests
  • Documentation has been updated in the docs-content repo

@martinmitrevski martinmitrevski requested a review from a team as a code owner December 24, 2025 15:19
@martinmitrevski martinmitrevski marked this pull request as draft December 24, 2025 15:19
@github-actions
Copy link

1 Warning
⚠️ Big PR
1 Message
📖 There seems to be app changes but CHANGELOG wasn't modified.
Please include an entry if the PR includes user-facing changes.
You can find it at CHANGELOG.md.

Generated by 🚫 Danger

@github-actions
Copy link

Public Interface

- @MainActor public struct ColorPalette  
- 
-   public var tintColor: Color
-   public var text: UIColor
-   public var textInverted: UIColor
-   public var textLowEmphasis: UIColor
-   public var staticColorText: UIColor
-   public var subtitleText: UIColor
-   public var highlightedColorForColor: @Sendable (UIColor) -> UIColor
-   public var disabledColorForColor: @Sendable (UIColor) -> UIColor
-   public var unselectedColorForColor: @Sendable (UIColor) -> UIColor
-   public var background: UIColor
-   public var background1: UIColor
-   public var background2: UIColor
-   public var background3: UIColor
-   public var background4: UIColor
-   public var background5: UIColor
-   public var background6: UIColor
-   public var background7: UIColor
-   public var background8: UIColor
-   public var overlayBackground: UIColor
-   public var popoverBackground: UIColor
-   public var highlightedBackground: UIColor
-   public var highlightedAccentBackground: UIColor
-   public var highlightedAccentBackground1: UIColor
-   public var pinnedBackground: UIColor
-   public var messageCellHighlightBackground: UIColor
-   public var shadow: UIColor
-   public var lightBorder: UIColor
-   public var innerBorder: UIColor
-   public var border: UIColor
-   public var border2: UIColor
-   public var border3: UIColor
-   public var alert: UIColor
-   public var alternativeActiveTint: UIColor
-   public var inactiveTint: UIColor
-   public var alternativeInactiveTint: UIColor
-   public lazy var messageCurrentUserBackground: [UIColor]
-   public lazy var messageCurrentUserEmphemeralBackground: [UIColor]
-   public lazy var messageOtherUserBackground: [UIColor]
-   public lazy var messageCurrentUserTextColor: UIColor
-   public lazy var messageOtherUserTextColor: UIColor
-   public lazy var quotedMessageBackgroundCurrentUser: UIColor
-   public lazy var quotedMessageBackgroundOtherUser: UIColor
-   public lazy var reactionCurrentUserColor: UIColor?
-   public lazy var reactionOtherUserColor: UIColor?
-   public lazy var selectedReactionBackgroundColor: UIColor?
-   public var voiceMessageControlBackground: UIColor
-   public var messageLinkAttachmentAuthorColor: Color
-   public var messageLinkAttachmentTitleColor: Color
-   public var messageLinkAttachmentTextColor: Color
-   public lazy var composerPlaceholderColor: UIColor
-   public lazy var composerInputBackground: UIColor
-   public lazy var composerInputHighlightedBorder: UIColor
-   public var navigationBarGlyph: UIColor
-   public var navigationBarTitle: UIColor
-   public var navigationBarSubtitle: UIColor
-   public var navigationBarTintColor: Color
-   public var navigationBarBackground: UIColor?
-   public var bannerBackgroundColor: UIColor
-   
- 
-   public init()

- public final class GalleryHeaderViewDateFormatter: DateFormatter, @unchecked Sendable  
- 
-   override public init()
-   
- 
-   override public func string(from date: Date)-> String

- public protocol VideoDurationFormatter

- open class DefaultAudioRecordingNameFormatter: AudioRecordingNameFormatter  
- 
-   public init()
-   
- 
-   open func title(forItemAtURL location: URL,index: Int)-> String

- @MainActor public struct Fonts  
- 
-   public var caption1
-   public var footnoteBold
-   public var footnote
-   public var subheadline
-   public var subheadlineBold
-   public var body
-   public var bodyBold
-   public var bodyItalic
-   public var headline
-   public var headlineBold
-   public var title
-   public var title2
-   public var title3
-   public var emoji
-   
- 
-   public init()

- public protocol ChatMessageReactionAppearanceType

- public protocol AudioRecordingNameFormatter

- public struct ChatMessageReactionAppearance: ChatMessageReactionAppearanceType  
- 
-   public let smallIcon: UIImage
-   public let largeIcon: UIImage
-   
- 
-   public init(smallIcon: UIImage,largeIcon: UIImage)

- @MainActor public class Images  
- 
-   public var loadingIndicator: UIImage
-   public var close: UIImage
-   public var closeFilled: UIImage
-   public var closeCircleTransparent: UIImage
-   public var discardAttachment: UIImage
-   public var back: UIImage
-   public var onlyVisibleToCurrentUser
-   public var more
-   public var share: UIImage
-   public var commands: UIImage
-   public var smallBolt: UIImage
-   public var openAttachments: UIImage
-   public var shrinkInputArrow: UIImage
-   public var sendArrow: UIImage
-   public var scrollDownArrow: UIImage
-   public var messageSent: UIImage
-   public var whiteCheckmark: UIImage
-   public var readByAll: UIImage
-   public var messageReceiptSending: UIImage
-   public var confirmCheckmark: UIImage
-   public var bigConfirmCheckmark: UIImage
-   public var folder: UIImage
-   public var restart: UIImage
-   public var download: UIImage
-   public var muted: UIImage
-   public var snapshot: UIImage
-   public var eye: UIImage
-   public var videoIndicator: UIImage
-   public var gallery: UIImage
-   public var photoDefault: UIImage
-   public var pin: UIImage
-   public var sliderThumb: UIImage
-   public var reactionLoveSmall: UIImage
-   public var reactionLoveBig: UIImage
-   public var reactionLolSmall: UIImage
-   public var reactionLolBig: UIImage
-   public var reactionThumgsUpSmall: UIImage
-   public var reactionThumgsUpBig: UIImage
-   public var reactionThumgsDownSmall: UIImage
-   public var reactionThumgsDownBig: UIImage
-   public var reactionWutSmall: UIImage
-   public var reactionWutBig: UIImage
-   public var availableReactions: [MessageReactionType: ChatMessageReactionAppearanceType]
-   public var availableEmojis: [String]
-   public var messageListErrorIndicator: UIImage
-   public var file7z: UIImage
-   public var fileAac: UIImage
-   public var fileCsv: UIImage
-   public var fileDoc: UIImage
-   public var fileDocx: UIImage
-   public var fileHtml: UIImage
-   public var fileMd: UIImage
-   public var fileMp3: UIImage
-   public var fileOdt: UIImage
-   public var filePdf: UIImage
-   public var filePpt: UIImage
-   public var filePptx: UIImage
-   public var fileRar: UIImage
-   public var fileRtf: UIImage
-   public var fileTargz: UIImage
-   public var fileTxt: UIImage
-   public var fileXls: UIImage
-   public var fileXlsx: UIImage
-   public var filezip: UIImage
-   public var fileFallback: UIImage
-   public var documentPreviews: [String: UIImage]
-   public var fileIcons: [AttachmentFileType: UIImage]
-   public var messageActionInlineReply: UIImage
-   public var messageActionThreadReply: UIImage
-   public var messageActionEdit: UIImage
-   public var messageActionCopy: UIImage
-   public var messageActionBlockUser: UIImage
-   public var messageActionMuteUser: UIImage
-   public var messageActionDelete: UIImage
-   public var messageActionResend: UIImage
-   public var userAvatarPlaceholder1: UIImage
-   public var userAvatarPlaceholder2: UIImage
-   public var userAvatarPlaceholder3: UIImage
-   public var userAvatarPlaceholder4: UIImage
-   public var userAvatarPlaceholder5: UIImage
-   public var avatarPlaceholders: [UIImage]
-   public var imagePlaceholder: UIImage
-   public var personPlaceholder: UIImage
-   public var fileAttachmentActionIcons: [LocalAttachmentState?: UIImage]
-   public var attachmentPickerPhotos: UIImage
-   public var attachmentPickerFolder: UIImage
-   public var attachmentPickerCamera: UIImage
-   public var attachmentPickerPolls: UIImage
-   public var camera: UIImage
-   public var bigPlay: UIImage
-   public var play: UIImage
-   public var playFilled: UIImage
-   public var pause: UIImage
-   public var pauseFilled: UIImage
-   public var checkmarkFilled: UIImage
-   public var commandBan: UIImage
-   public var commandFlag: UIImage
-   public var commandGiphy: UIImage
-   public var commandImgur: UIImage
-   public var commandMention: UIImage
-   public var commandMute: UIImage
-   public var commandUnban: UIImage
-   public var commandUnmute: UIImage
-   public var commandFallback: UIImage
-   public var commandIcons: [String: UIImage]
-   public var searchIcon: UIImage
-   public var searchCloseIcon: UIImage
-   public var threadIcon: UIImage
-   public var noContent: UIImage
-   public var noMedia: UIImage
-   public var noThreads: UIImage
-   
- 
-   public init()

- open class DefaultVideoDurationFormatter: VideoDurationFormatter  
- 
-   public var dateComponentsFormatter: DateComponentsFormatter
-   
- 
-   public init()
-   
- 
-   open func format(_ time: TimeInterval)-> String?

- @MainActor public class Appearance  
- 
-   public var colors: ColorPalette
-   public var images: Images
-   public var fonts: Fonts
-   public static var localizationProvider: @Sendable (_ key: String, _ table: String) -> String
-   
- 
-   public init(colors: ColorPalette = ColorPalette(),images: Images = Images(),fonts: Fonts = Fonts())

- public enum DateUtils  
- 
-   public static func timeAgo(relativeTo date: Date)-> String?

- public final class MessageRelativeDateFormatter: DateFormatter, @unchecked Sendable  
- 
-   override public init()
-   
- 
-   override public func string(from date: Date)-> String

 public struct ChannelList: View  
-   public init(factory: Factory,channels: [ChatChannel],selectedChannel: Binding<ChannelSelectionInfo?>,swipedChannelId: Binding<String?>,scrolledChannelId: Binding<String?> = .constant(nil),scrollable: Bool = true,onlineIndicatorShown: (@MainActor (ChatChannel) -> Bool)? = nil,imageLoader: (@MainActor (ChatChannel) -> UIImage)? = nil,onItemTap: @escaping @MainActor (ChatChannel) -> Void,onItemAppear: @escaping @MainActor (Int) -> Void,channelNaming: (@MainActor (ChatChannel) -> String)? = nil,channelDestination: @escaping @MainActor (ChannelSelectionInfo) -> Factory.ChannelDestination,trailingSwipeRightButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in },trailingSwipeLeftButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in },leadingSwipeButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in })
+   public init(factory: Factory,channels: [ChatChannel],selectedChannel: Binding<ChannelSelectionInfo?>,swipedChannelId: Binding<String?>,scrolledChannelId: Binding<String?> = .constant(nil),scrollable: Bool = true,onlineIndicatorShown: (@MainActor (ChatChannel) -> Bool)? = nil,imageLoader: (@MainActor (ChatChannel) -> UIImage)? = nil,onItemTap: @escaping @MainActor (ChatChannel) -> Void,onItemAppear: @escaping @MainActor (Int) -> Void,channelDestination: @escaping @MainActor (ChannelSelectionInfo) -> Factory.ChannelDestination,trailingSwipeRightButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in },trailingSwipeLeftButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in },leadingSwipeButtonTapped: @escaping @MainActor (ChatChannel) -> Void = { _ in })

 @MainActor public class Utils  
-   public var messageRelativeDateFormatter: DateFormatter
+   public var messageTimestampFormatter: MessageTimestampFormatter
-   public var galleryHeaderViewDateFormatter: DateFormatter
+   public var galleryHeaderViewDateFormatter: GalleryHeaderViewDateFormatter
-   public var videoPreviewLoader: VideoPreviewLoader
+   public var messageDateSeparatorFormatter: MessageDateSeparatorFormatter
-   public var imageLoader: ImageLoading
+   public var videoPreviewLoader: VideoPreviewLoader
-   public var imageCDN: ImageCDN
+   public var imageLoader: ImageLoading
-   public var imageProcessor: ImageProcessor
+   public var imageCDN: ImageCDN
-   public var imageMerger: ImageMerging
+   public var imageProcessor: ImageProcessor
-   public var fileCDN: FileCDN
+   public var imageMerger: ImageMerging
-   public var channelNamer: ChatChannelNamer
+   public var fileCDN: FileCDN
-   public var chatUserNamer: ChatUserNamer
+   public var channelNameFormatter: ChannelNameFormatter
-   public var channelAvatarsMerger: ChannelAvatarsMerging
+   public var chatUserNamer: ChatUserNamer
-   public var messageTypeResolver: MessageTypeResolving
+   public var channelAvatarsMerger: ChannelAvatarsMerging
-   public var messageActionsResolver: MessageActionsResolving
+   public var messageTypeResolver: MessageTypeResolving
-   public var messagePreviewFormatter: MessagePreviewFormatter
+   public var messageActionsResolver: MessageActionsResolving
-   public var commandsConfig: CommandsConfig
+   public var messagePreviewFormatter: MessagePreviewFormatter
-   public var channelListConfig: ChannelListConfig
+   public var commandsConfig: CommandsConfig
-   public var messageListConfig: MessageListConfig
+   public var channelListConfig: ChannelListConfig
-   public var composerConfig: ComposerConfig
+   public var messageListConfig: MessageListConfig
-   public var pollsConfig: PollsConfig
+   public var composerConfig: ComposerConfig
-   public var shouldSyncChannelControllerOnAppear: (ChatChannelController) -> Bool
+   public var pollsConfig: PollsConfig
-   public var snapshotCreator: SnapshotCreator
+   public var shouldSyncChannelControllerOnAppear: (ChatChannelController) -> Bool
-   public var messageIdBuilder: MessageIdBuilder
+   public var snapshotCreator: SnapshotCreator
-   public var sortReactions: (MessageReactionType, MessageReactionType) -> Bool
+   public var messageIdBuilder: MessageIdBuilder
-   public var channelHeaderLoader: ChannelHeaderLoader
+   public var sortReactions: (MessageReactionType, MessageReactionType) -> Bool
-   public var videoDurationFormatter: VideoDurationFormatter
+   public var channelHeaderLoader: ChannelHeaderLoader
-   public var audioRecordingNameFormatter: AudioRecordingNameFormatter
+   public var videoDurationFormatter: VideoDurationFormatter
-   public var audioPlayerBuilder: () -> AudioPlaying
+   public var audioRecordingNameFormatter: AudioRecordingNameFormatter
-   public var audioPlayer: AudioPlaying
+   public var audioPlayerBuilder: () -> AudioPlaying
-   public var audioRecorderBuilder: () -> AudioRecording
+   public var audioPlayer: AudioPlaying
-   public var audioRecorder: AudioRecording
+   public var audioRecorderBuilder: () -> AudioRecording
-   @MainActor public lazy var audioSessionFeedbackGenerator: AudioSessionFeedbackGenerator
+   public var audioRecorder: AudioRecording
-   public var originalTranslationsStore
+   @MainActor public lazy var audioSessionFeedbackGenerator: AudioSessionFeedbackGenerator
-   public static var defaultSortReactions: (MessageReactionType, MessageReactionType) -> Bool
+   public var originalTranslationsStore
-   
+   public static var defaultSortReactions: (MessageReactionType, MessageReactionType) -> Bool
- 
+   
-   public init(markdownFormatter: MarkdownFormatter = DefaultMarkdownFormatter(),dateFormatter: DateFormatter = .makeDefault(),messageRelativeDateFormatter: DateFormatter = MessageRelativeDateFormatter(),galleryHeaderViewDateFormatter: DateFormatter = GalleryHeaderViewDateFormatter(),videoPreviewLoader: VideoPreviewLoader = DefaultVideoPreviewLoader(),imageLoader: ImageLoading = NukeImageLoader(),imageCDN: ImageCDN = StreamImageCDN(),imageProcessor: ImageProcessor = NukeImageProcessor(),imageMerger: ImageMerging = DefaultImageMerger(),fileCDN: FileCDN = DefaultFileCDN(),channelAvatarsMerger: ChannelAvatarsMerging = ChannelAvatarsMerger(),messageTypeResolver: MessageTypeResolving = MessageTypeResolver(),messageActionResolver: MessageActionsResolving = MessageActionsResolver(),messagePreviewFormatter: MessagePreviewFormatter = MessagePreviewFormatter(),commandsConfig: CommandsConfig = DefaultCommandsConfig(),channelListConfig: ChannelListConfig = ChannelListConfig(),messageListConfig: MessageListConfig = MessageListConfig(),composerConfig: ComposerConfig = ComposerConfig(),pollsConfig: PollsConfig = PollsConfig(),channelNamer: @escaping ChatChannelNamer = DefaultChatChannelNamer(),chatUserNamer: ChatUserNamer = DefaultChatUserNamer(),snapshotCreator: SnapshotCreator = DefaultSnapshotCreator(),messageIdBuilder: MessageIdBuilder = DefaultMessageIdBuilder(),channelHeaderLoader: ChannelHeaderLoader = ChannelHeaderLoader(),videoDurationFormatter: VideoDurationFormatter = DefaultVideoDurationFormatter(),audioRecordingNameFormatter: AudioRecordingNameFormatter = DefaultAudioRecordingNameFormatter(),sortReactions: @escaping (MessageReactionType, MessageReactionType) -> Bool = Utils.defaultSortReactions,shouldSyncChannelControllerOnAppear: @escaping (ChatChannelController) -> Bool = { _ in true })
+ 
+   public init(markdownFormatter: MarkdownFormatter = DefaultMarkdownFormatter(),dateFormatter: DateFormatter = .makeDefault(),messageTimestampFormatter: MessageTimestampFormatter = ChannelListMessageTimestampFormatter(),galleryHeaderViewDateFormatter: GalleryHeaderViewDateFormatter = DefaultGalleryHeaderViewDateFormatter(),messageDateSeparatorFormatter: MessageDateSeparatorFormatter = DefaultMessageDateSeparatorFormatter(),videoPreviewLoader: VideoPreviewLoader = DefaultVideoPreviewLoader(),imageLoader: ImageLoading = NukeImageLoader(),imageCDN: ImageCDN = StreamImageCDN(),imageProcessor: ImageProcessor = NukeImageProcessor(),imageMerger: ImageMerging = DefaultImageMerger(),fileCDN: FileCDN = DefaultFileCDN(),channelAvatarsMerger: ChannelAvatarsMerging = ChannelAvatarsMerger(),messageTypeResolver: MessageTypeResolving = MessageTypeResolver(),messageActionResolver: MessageActionsResolving = MessageActionsResolver(),messagePreviewFormatter: MessagePreviewFormatter = MessagePreviewFormatter(),commandsConfig: CommandsConfig = DefaultCommandsConfig(),channelListConfig: ChannelListConfig = ChannelListConfig(),messageListConfig: MessageListConfig = MessageListConfig(),composerConfig: ComposerConfig = ComposerConfig(),pollsConfig: PollsConfig = PollsConfig(),channelNameFormatter: ChannelNameFormatter = DefaultChannelNameFormatter(),chatUserNamer: ChatUserNamer = DefaultChatUserNamer(),snapshotCreator: SnapshotCreator = DefaultSnapshotCreator(),messageIdBuilder: MessageIdBuilder = DefaultMessageIdBuilder(),channelHeaderLoader: ChannelHeaderLoader = ChannelHeaderLoader(),videoDurationFormatter: VideoDurationFormatter = DefaultVideoDurationFormatter(),audioRecordingNameFormatter: AudioRecordingNameFormatter = DefaultAudioRecordingNameFormatter(),sortReactions: @escaping (MessageReactionType, MessageReactionType) -> Bool = Utils.defaultSortReactions,shouldSyncChannelControllerOnAppear: @escaping (ChatChannelController) -> Bool = { _ in true })

 public struct ChannelsLazyVStack: View  
-   public init(factory: Factory,channels: [ChatChannel],selectedChannel: Binding<ChannelSelectionInfo?>,swipedChannelId: Binding<String?>,onlineIndicatorShown: @escaping @MainActor (ChatChannel) -> Bool,imageLoader: @escaping @MainActor (ChatChannel) -> UIImage,onItemTap: @escaping @MainActor (ChatChannel) -> Void,onItemAppear: @escaping @MainActor (Int) -> Void,channelNaming: @escaping @MainActor (ChatChannel) -> String,channelDestination: @escaping @MainActor (ChannelSelectionInfo) -> Factory.ChannelDestination,trailingSwipeRightButtonTapped: @escaping @MainActor (ChatChannel) -> Void,trailingSwipeLeftButtonTapped: @escaping @MainActor (ChatChannel) -> Void,leadingSwipeButtonTapped: @escaping @MainActor (ChatChannel) -> Void)
+   public init(factory: Factory,channels: [ChatChannel],selectedChannel: Binding<ChannelSelectionInfo?>,swipedChannelId: Binding<String?>,onlineIndicatorShown: @escaping @MainActor (ChatChannel) -> Bool,imageLoader: @escaping @MainActor (ChatChannel) -> UIImage,onItemTap: @escaping @MainActor (ChatChannel) -> Void,onItemAppear: @escaping @MainActor (Int) -> Void,channelDestination: @escaping @MainActor (ChannelSelectionInfo) -> Factory.ChannelDestination,trailingSwipeRightButtonTapped: @escaping @MainActor (ChatChannel) -> Void,trailingSwipeLeftButtonTapped: @escaping @MainActor (ChatChannel) -> Void,leadingSwipeButtonTapped: @escaping @MainActor (ChatChannel) -> Void)

 extension DateFormatter  
-   @MainActor public static var messageListDateOverlay: DateFormatter
+   public static func makeDefault()-> DateFormatter
-   
- 
-   public static func makeDefault()-> DateFormatter

 public final class ThreadListBackgroundOptions: Sendable  
-   public let colors: ColorPalette
+   public let colors: Appearance.ColorPalette
-   public init(colors: ColorPalette)
+   public init(colors: Appearance.ColorPalette)

 public struct ChannelListConfig  
-   public var messageRelativeDateFormatEnabled: Bool
+   public var navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode
-   public var navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode
+   public var showChannelListDividerOnLastItem: Bool
-   public var showChannelListDividerOnLastItem: Bool
+   public var channelItemMutedStyle: ChannelItemMutedLayoutStyle
-   public var channelItemMutedStyle: ChannelItemMutedLayoutStyle
+   public var supportedMoreChannelActions: @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction]
-   public var supportedMoreChannelActions: @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction]
+   
-   
+ 
- 
+   public init(channelItemMutedStyle: ChannelItemMutedLayoutStyle = .default,navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode = .inline,showChannelListDividerOnLastItem: Bool = true,supportedMoreChannelActions: @escaping @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction] = ChannelAction.defaultActions(for:))
-   public init(channelItemMutedStyle: ChannelItemMutedLayoutStyle = .default,messageRelativeDateFormatEnabled: Bool = false,navigationBarDisplayMode: NavigationBarItem.TitleDisplayMode = .inline,showChannelListDividerOnLastItem: Bool = true,supportedMoreChannelActions: @escaping @MainActor (SupportedMoreChannelActionsOptions) -> [ChannelAction] = ChannelAction.defaultActions(for:))

 public final class MessageListBackgroundOptions: Sendable  
-   public let colors: ColorPalette
+   public let isInThread: Bool
-   public let isInThread: Bool
+   
-   
+ 
- 
+   public init(isInThread: Bool)
-   public init(colors: ColorPalette,isInThread: Bool)

 extension InjectedValues  
-   @MainActor public var colors: ColorPalette
+   @MainActor public var colors: Appearance.ColorPalette
-   @MainActor public var images: Images
+   @MainActor public var images: Appearance.Images
-   @MainActor public var fonts: Fonts
+   @MainActor public var fonts: Appearance.FontsSwiftUI

- public final class ChannelListBackgroundOptions: Sendable  
+ public final class ChannelListBackgroundOptions: Sendable
- 
-   public let colors: ColorPalette
-   
- 
-   public init(colors: ColorPalette)

 public final class EmptyMessagesViewOptions: Sendable  
-   public let colors: ColorPalette
+   
-   
+ 
- 
+   public init(channel: ChatChannel)
-   public init(channel: ChatChannel,colors: ColorPalette)

@Stream-SDK-Bot
Copy link
Collaborator

SDK Size

title develop branch diff status
StreamChatSwiftUI 9.78 MB 16.98 MB +7381 KB 🔴

@Stream-SDK-Bot
Copy link
Collaborator

StreamChatSwiftUI XCSize

Object Diff (bytes)
StreamChat.o +5982529
StreamChatCommonUI.o +251449
Images.o -42975
MessageViewFactoryOptions.o +28823
ColorPalette.o -25518
Show 289 more objects
Object Diff (bytes)
AttachmentViewFactoryOptions.o +25135
ChannelViewFactoryOptions.o +22988
ComposerViewFactoryOptions.o +22633
SearchResultsView.o +18505
TaskFetchOriginalData.o +16218
ChatChannelView.o +14181
ReactionsOverlayView.o +12521
TaskFetchOriginalImageData.o -12493
MessageRepliesView.o +12207
ChatThreadListNavigatableItem.o +11722
MessageContainerView.o +11529
MessageListView.o +11410
MoreReactionsView.o +11198
MessageComposerView.o +11047
Styles.o +10934
DefaultViewFactory.o -10855
ChatChannelNavigatableListItem.o +10195
ReactionsViewFactoryOptions.o +9728
EmptyViewFactoryOptions.o +9728
ChatChannelList.o +9336
ChatThreadList.o +9225
LiquidGlassModifiers.o +9208
ReactionsIconProvider.o +9116
ChatChannelSwipeableListItem.o +8849
DateUtils.o -8714
TaskFetchDecodedImage.o -8659
FrameStore.o -8656
L10n.o +8642
ChatChannelHeaderViewModifier.o +8530
ImagePipeline+Cache.o +8411
LeadingComposerView.o +8338
PinnedMessagesView.o +7615
ChatChannelListViewModel.o +7536
AudioSessionFeedbackGenerator.o -7321
MessageView.o +6964
ThreadViewFactoryOptions.o +6663
ChatChannelListItem.o +6576
NukeImageLoader.o +6573
ChatThreadListItem.o +6252
ReactionsOverlayContainer.o +6164
ImageView.o -6045
VideoAttachmentView.o +5934
ImagePipeline.o -5793
GiphyAttachmentView.o +5687
TaskLoadImage.o +5636
ResumableData.o -5589
ImagePipelineError.o -5509
LazyImage.o -5291
UIImage+SwiftyGif.o +5211
ComposerHelperViews.o +5048
ImageTask.o +5046
ImageCache.o +4887
StreamChat_-14BA7DE24FFA260A_PackageProduct -4864
ImagePipeline+Error.o +4823
TaskFetchOriginalImage.o +4688
ImagePipeline+Configuration.o +4617
ImagePipelineCache.o -4488
ImagePipelineConfiguration.o -4359
PollAttachmentView.o +4344
QuotedMessageView.o +4226
ReactionsView.o +3985
ImageAttachmentView.o +3979
CreatePollView.o +3943
Image.o -3848
LazyImageState.o -3800
ImageRequest.o +3731
AsyncPipelineTask.o +3674
Animator.o -3618
TrailingInputComposerView.o +3589
OperationTask.o -3533
MessageRelativeDateFormatter.o -3486
MessageListHelperViews.o +3466
DataLoader.o +3307
VoiceRecordingContainerView.o +3296
FileAttachmentView.o +3139
Fonts.o -2798
MediaAttachmentsView.o +2737
GalleryView.o +2715
StringExtensions.o -2691
ChatChannelNamer.o -2689
DependencyInjection.o -2664
MessageListConfig.o +2588
MessageBubble.o +2490
ImageRequestKeys.o -2453
ReactionsUsersView.o -2393
LinkAttachmentView.o +2331
ImagePipelineTask.o -2283
ChatChannelInfoView.o +2268
GalleryHeaderViewDateFormatter.o -2257
ChatChannelInfoHelperViews.o +2247
CreatePollViewModel.o -2242
GIFImageView.o -2229
UIImageView+SwiftyGif.o +2206
Foundation.tbd +2196
DefaultMessageActions.o +2126
NukeVideoPlayerView.o -1924
Utils.o +1903
AnimatedImageView.o -1900
Graphics.o +1889
PhotoAttachmentPickerView.o +1873
MoreChannelActionsView.o +1867
StreamCore_-14BA7DE23376E301_PackageProduct +1852
ChannelListConfig.o +1803
ChatChannelListView.o +1762
MessageComposerViewModel.o +1668
LazyImageExtensions.o -1604
PollAttachmentViewModel.o -1583
ChannelHeaderLoader.o +1583
AlertBannerViewModifier.o +1540
PollCommentsView.o +1491
DelayedRenderingViewModifier.o -1487
Log.o +1477
StreamLazyImage.o +1457
MentionsCommandHandler.o +1455
VideoDurationFormatter.o -1450
ZoomableScrollView.o +1365
VideoPreviewLoader.o +1353
ReactionsHelperViews.o +1330
MessageActionsViewModel.o +1328
PhotoAssetsUtils.o +1310
PollResultsView.o +1286
LinkTextView.o +1255
ChatInfoParticipantsView.o +1229
AsyncTask.o -1229
LockedView.o +1207
TaskLoadData.o -1205
InstantCommandsView.o +1164
ImageProcessingOptions.o +1152
AudioRecordingNameFormatter.o -1142
TaskFetchWithPublisher.o +1126
LoadingView.o +1096
ChatChannelInfoViewModel.o +1093
ParticipantInfoView.o +1092
BouncedMessageActionsModifier.o +1082
ImageProcessing.o -1081
TrailingComposerView.o +1077
ChannelAvatarsMerger.o -1073
ComposerModels.o -1072
ChatChannelExtensions.o +1072
AddUsersView.o +1071
DeletedMessageView.o +979
WaveformView.o +978
Appearance.o -964
PollAllOptionsView.o +959
SwiftyGifManager.o +935
ImagePipeline+Delegate.o +934
LazyImageView.o +924
FileAttachmentsView.o +922
ImagePipelineDelegate.o -922
ChatMessageReactionAppeareance.o -916
ChatChannelHelpers.o +905
FileAttachmentPreview.o +880
UIImage+Extensions.o -871
ImageCaching.o -852
ChatChannelViewModel.o +843
MessageActionsView.o +839
MediaAttachmentsViewModel.o +838
DefaultChannelActions.o +830
ReactionsBubbleView.o +828
Atomic.o +816
Deprecated.o -789
AddedImageAttachmentsView.o +778
BottomReactionsView.o +752
PollsHelpers.o -746
SwiftUI+UIAlertController.o +742
MessageComposerViewModel+Recording.o +741
DataCache.o +726
FetchImage.o -724
MentionUsersView.o +721
TitleWithCloseButton.o +697
SearchBar.o +690
ImageDecoders+Default.o -662
ComposerTextInputView.o +629
AnimatedFrame.o -615
GalleryHeaderView.o +596
ImagePublisher.o -592
ChatChannelHelperViews.o +587
ChatThreadListLoadingView.o +584
DateFormatter+Extensions.o -577
ImageProcessors+Resize.o -571
AudioVisualizationView.o +563
DiscardAttachmentButton.o +560
GridMediaView.o +558
InputTextView.o +545
ImageDecoders+Video.o -544
NoContentView.o +538
FilePickerView.o +527
WebView.o +515
ImageResponse.o -512
ChatMessage+Extensions.o +496
AttachmentPickerTypeView.o +489
AutoLayoutHelpers.o +479
FileAttachmentsViewModel.o +479
ChatThreadListView.o +475
RecordingView.o +464
ComposerConfig.o -436
ViewFactory.o -434
NSLayoutConstraint+Extensions.o +430
MoreChannelActionsFullScreenWrappingView.o +421
MessagePreviewFormatter.o -398
ImageSourceHelpers.o -397
ReactionsOverlayViewModel.o +391
MessageTranslationFooterView.o +381
GIFAnimatable.o -372
ShareButtonView.o +372
TypingIndicatorView.o +372
AddedVoiceRecordingsView.o +361
AttachmentUploadingStateView.o +349
AttachmentDownloadingStateView.o +337
MoreChannelActionsViewModel.o -332
AttachmentPickerView.o +320
MessageThreadHeaderViewModifier.o +314
SendInChannelView.o +292
ActionBannerView.o +289
ImageEncoding.o -287
JumpToUnreadButton.o +286
ChatThreadListHeaderView.o -286
VideoPlayerView.o +284
ImageEncoders+Default.o +284
Modifiers.o -284
ReactionUserView.o +279
MessageAvatarView.o +252
SwiftUI.tbd +248
ImagePrefetcher.o +246
ImageCDN.o -236
MessageActionsResolver.o +235
InjectedValuesExtensions.o +224
ImageContainer.o +220
ImagePickerView.o +214
AssetType.o +214
ReactionsUsersViewModel.o -208
NukeImageProcessor.o +207
MarkdownFormatter.o +207
ImageDecoding.o -204
Combine.tbd +204
ChatChannelDataSource.o +202
PollCommentsViewModel.o +188
ChatThreadListViewModel.o -187
ImageEncoders+ImageIO.o +186
SwiftUICore.tbd +180
ChatClient+Extensions.o +178
Shimmer.o +168
HideTabBarModifier.o +167
CommandsContainerView.o +166
PercentageProgressView.o +159
KeyboardHandling.o +153
ChatThreadListFooterView.o +153
AddUsersViewModel.o -151
LinkedList.o +151
OnLoadViewModifier.o +151
FloatingBannerViewModifier.o +147
ChatThreadListHeaderViewModifier.o +147
Internal.o -145
GiphyCommandHandler.o -144
MessageViewModel.o -144
NoChannelsView.o -138
SendMessageButton.o +134
ChatChannelListHeader.o +130
UIKitCore +124
MessageListDateUtils.o +120
PollOptionAllVotesView.o +119
SnapshotCreator.o +116
GiphyBadgeView.o +113
ImageDecoderRegistry.o -112
UIImageView.o -108
NavigationContainerView.o +108
AddedFileAttachmentsView.o -107
ImageProcessors+Composition.o -103
libvDSP.dylib +100
CoreMedia.tbd +100
NavigationBarThemeViewModifier.o +91
AVFAudio.tbd +88
ViewExtensions.o +86
DiscardButtonView.o +86
NoThreadsView.o -84
AVDataAsset.o -83
CoreData.tbd +80
DataPublisher.o +78
MessageCachingUtils.o -73
SlowModeView.o -72
ImageViewExtensions.o +68
ChannelControllerFactory.o -68
CommandsConfig.o -68
RecordingTipView.o -64
MuteCommandHandler.o -60
UnmuteCommandHandler.o -60
ImageProcessors.o -52
ImageDecompression.o -50
Errors.o +48

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.

4 participants