Skip to content

refactor(ui)!: stream message widget and reactions#2547

Merged
xsahil03x merged 5 commits intofeat/design-refreshfrom
refactor/message-widget
Mar 18, 2026
Merged

refactor(ui)!: stream message widget and reactions#2547
xsahil03x merged 5 commits intofeat/design-refreshfrom
refactor/message-widget

Conversation

@xsahil03x
Copy link
Member

@xsahil03x xsahil03x commented Mar 18, 2026

Before After
simulator_screenshot_F3DE4CD3-46D8-4311-9B9C-3A0029E3DC82 simulator_screenshot_9B86EEC7-0D5E-4C7F-B01A-2DAD4C491CE5

…nents

Replace the monolithic message widget implementation with a composable
architecture using dedicated sub-components (StreamMessageHeader,
StreamMessageFooter, StreamMessageLeading, StreamMessageContent,
StreamMessageText, StreamMessageReactions, StreamMessageDeleted,
StreamMessageSendingStatus). Introduce StreamMessageWidgetProps to
encapsulate all configurable properties and a StreamMessageWidget.fromProps
named constructor.

Add nullable attachmentBuilders support on StreamMessageWidget,
StreamMessageContent, and ParseAttachments, with a global fallback in
StreamChatConfigurationData. Add configurable reactionType and
reactionPosition to StreamChatConfigurationData (nullable, widget
resolves defaults). Reaction overlap is now platform-aware
(disabled on desktop/web).

Remove legacy widgets: MessageWidgetContent, MessageCard, BottomRow,
TextBubble, DeletedMessage, MessageText, Username, ThreadParticipants,
ThreadPainter, UserAvatarTransform, SendingIndicatorBuilder,
QuotedMessage, PinnedMessage, ReactionIndicator,
ReactionBubbleOverlay, ReactionPickerBubbleOverlay, and
MessageReactionsModal.

BREAKING CHANGE: Removed several public message widget classes and the
MessageReactionsModal. Consumers using these directly must migrate to
the new composable sub-components or use StreamComponentFactory.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 18, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 46bff51f-0059-4556-a9ab-ebd0d884a286

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/message-widget
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

xsahil03x and others added 3 commits March 18, 2026 18:51
…or/message-widget

# Conflicts:
#	melos.yaml
#	packages/stream_chat_flutter/lib/src/stream_chat.dart
#	packages/stream_chat_flutter/pubspec.yaml
#	packages/stream_chat_flutter/test/src/message_modal/goldens/ci/stream_message_reactions_modal_dark.png
#	packages/stream_chat_flutter/test/src/message_modal/goldens/ci/stream_message_reactions_modal_reversed_dark.png
#	packages/stream_chat_flutter/test/src/reactions/indicator/goldens/ci/stream_reaction_indicator_dark.png
#	packages/stream_chat_flutter/test/src/reactions/indicator/goldens/ci/stream_reaction_indicator_fallback_dark.png
#	packages/stream_chat_flutter/test/src/reactions/indicator/goldens/ci/stream_reaction_indicator_own_dark.png
@codecov
Copy link

codecov bot commented Mar 18, 2026

Codecov Report

❌ Patch coverage is 55.48387% with 207 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.63%. Comparing base (5a9cc18) to head (ca90b44).
⚠️ Report is 2 commits behind head on feat/design-refresh.

Files with missing lines Patch % Lines
...flutter/lib/src/message_widget/message_widget.dart 46.93% 78 Missing ⚠️
...r/lib/src/message_list_view/message_list_view.dart 36.53% 33 Missing ⚠️
...ssage_widget/components/stream_message_header.dart 26.82% 30 Missing ⚠️
...sage_widget/components/stream_message_content.dart 66.66% 23 Missing ⚠️
...sage_widget/components/stream_message_deleted.dart 7.69% 12 Missing ⚠️
...dget/components/stream_message_sending_status.dart 66.66% 7 Missing ⚠️
...t_flutter/lib/src/message_list_view/mlv_utils.dart 50.00% 6 Missing ⚠️
...tter/lib/src/reactions/picker/reaction_picker.dart 66.66% 6 Missing ⚠️
...ge_widget/components/stream_message_reactions.dart 72.22% 5 Missing ⚠️
...c/attachment/builder/mixed_attachment_builder.dart 0.00% 2 Missing ⚠️
... and 4 more
Additional details and impacted files
@@                   Coverage Diff                   @@
##           feat/design-refresh    #2547      +/-   ##
=======================================================
- Coverage                64.90%   64.63%   -0.28%     
=======================================================
  Files                      437      426      -11     
  Lines                    26677    26097     -580     
=======================================================
- Hits                     17315    16868     -447     
+ Misses                    9362     9229     -133     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@xsahil03x xsahil03x merged commit 51cd2ca into feat/design-refresh Mar 18, 2026
7 of 9 checks passed
@xsahil03x xsahil03x deleted the refactor/message-widget branch March 18, 2026 13:41
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.

2 participants