chore: Disable message read receipts in federated rooms
Proposed changes (including videos or screenshots)
This PR's disables read receipts for federated rooms. This feature will be re-introduced to federated rooms when the capability becomes fully compatible with Federation.
Issue(s)
Steps to test or reproduce
Further comments
Summary by CodeRabbit
-
Bug Fixes
- Read receipts indicators are now disabled in federated rooms.
-
Tests
- Added unit tests for read receipts functionality, including configuration and display behavior across different feature flag states.
βοΈ Tip: You can customize this high-level summary in your review settings.
Looks like this PR is not ready to merge, because of the following issues:
- This PR is missing the 'stat: QA assured' label
Please fix the issues and try again
If you have any trouble, please check the PR guidelines
π¦ Changeset detected
Latest commit: 1abcda32b7283689a55231abdfa521f0b243f59d
The changes in this PR will be included in the next version bump.
This PR includes changesets to release 41 packages
| Name | Type |
|---|---|
| @rocket.chat/meteor | Patch |
| @rocket.chat/core-typings | Patch |
| @rocket.chat/rest-typings | Patch |
| @rocket.chat/uikit-playground | Patch |
| @rocket.chat/api-client | Patch |
| @rocket.chat/apps | Patch |
| @rocket.chat/core-services | Patch |
| @rocket.chat/cron | Patch |
| @rocket.chat/ddp-client | Patch |
| @rocket.chat/freeswitch | Patch |
| @rocket.chat/fuselage-ui-kit | Patch |
| @rocket.chat/gazzodown | Patch |
| @rocket.chat/http-router | Patch |
| @rocket.chat/livechat | Patch |
| @rocket.chat/model-typings | Patch |
| @rocket.chat/ui-avatar | Patch |
| @rocket.chat/ui-client | Patch |
| @rocket.chat/ui-contexts | Patch |
| @rocket.chat/web-ui-registration | Patch |
| @rocket.chat/account-service | Patch |
| @rocket.chat/authorization-service | Patch |
| @rocket.chat/ddp-streamer | Patch |
| @rocket.chat/omnichannel-transcript | Patch |
| @rocket.chat/presence-service | Patch |
| @rocket.chat/queue-worker | Patch |
| @rocket.chat/stream-hub-service | Patch |
| @rocket.chat/federation-matrix | Patch |
| @rocket.chat/license | Patch |
| @rocket.chat/media-calls | Patch |
| @rocket.chat/omnichannel-services | Patch |
| @rocket.chat/pdf-worker | Patch |
| @rocket.chat/presence | Patch |
| rocketchat-services | Patch |
| @rocket.chat/models | Patch |
| @rocket.chat/network-broker | Patch |
| @rocket.chat/omni-core-ee | Patch |
| @rocket.chat/mock-providers | Patch |
| @rocket.chat/ui-video-conf | Patch |
| @rocket.chat/ui-voip | Patch |
| @rocket.chat/instance-status | Patch |
| @rocket.chat/omni-core | Patch |
Not sure what this means? Click here to learn what changesets are.
Click here if you're a maintainer who wants to add another changeset to this PR
[!CAUTION]
Review failed
The pull request is closed.
Walkthrough
Disables read receipt indicators for federated rooms, extracts MessageListContext default into a named export, and adds unit tests covering read-receipt behavior and the federated-room gating.
Changes
| Cohort / File(s) | Summary |
|---|---|
Changeset .changeset/cold-chefs-rhyme.md |
Adds changeset documenting the patch that disables read receipt indicators in federated rooms. |
Context value export apps/meteor/client/components/message/list/MessageListContext.tsx |
Extracts the inline default into a named export messageListContextDefaultValue and uses it when creating MessageListContext. |
Read receipts gating apps/meteor/client/views/room/MessageList/providers/MessageListProvider.tsx |
Gates readReceiptsEnabled with isRoomFederated(room), disabling read receipts when the room is federated. |
Unit tests apps/meteor/client/components/message/toolbar/useReadReceiptsDetailsAction.spec.tsx, apps/meteor/client/components/message/variants/RoomMessage.spec.tsx |
Adds tests that assert the hook/component returns null when read receipts or storeUsers are disabled and verifies read-receipt UI presence/absence based on MessageListContext config. |
Estimated code review effort
π― 3 (Moderate) | β±οΈ ~20 minutes
- Inspect
isRoomFederated(room)usage in MessageListProvider to ensure correct boolean semantics (true => federated => disable). - Verify no consumers relied on the previous anonymous default object identity vs. the exported
messageListContextDefaultValue. - Run and review the new tests to confirm they cover both federated and non-federated paths.
Possibly related PRs
- RocketChat/Rocket.Chat#37534 β makes overlapping changes to disable read receipts in federated rooms (same provider gating, exported default, and tests).
- RocketChat/Rocket.Chat#36952 β refactors room federated checks across UI; related to how
isRoomFederatedis computed/used.
Suggested labels
stat: ready to merge, stat: QA assured
Suggested reviewers
- rodrigok
- ricardogarim
Poem
π° I hop through code where receipts once shone,
In federated fields theyβre left alone.
I export a default, add tests that sing,
Silence the checks till federation can bring. β¨
Pre-merge checks and finishing touches
β Passed checks (5 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | β Passed | Check skipped - CodeRabbitβs high-level summary is enabled. |
| Title check | β Passed | The title clearly and concisely describes the main change: disabling message read receipts in federated rooms, which is the core focus of all modifications. |
| Linked Issues check | β Passed | Changes address FB-45 and FB-75 by disabling read receipts in federated rooms via context-based conditional logic and test coverage for the feature flag behavior. |
| Out of Scope Changes check | β Passed | All changes are directly scoped to read receipts suppression in federated rooms: context extraction, federated room checks, and related test coverage. |
| Docstring Coverage | β Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |
π Recent review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
π₯ Commits
Reviewing files that changed from the base of the PR and between 01c21666133157b4dbd5f8a5be483d44c136af38 and 1abcda32b7283689a55231abdfa521f0b243f59d.
π Files selected for processing (5)
-
.changeset/cold-chefs-rhyme.md(1 hunks) -
apps/meteor/client/components/message/list/MessageListContext.tsx(2 hunks) -
apps/meteor/client/components/message/toolbar/useReadReceiptsDetailsAction.spec.tsx(1 hunks) -
apps/meteor/client/components/message/variants/RoomMessage.spec.tsx(2 hunks) -
apps/meteor/client/views/room/MessageList/providers/MessageListProvider.tsx(2 hunks)
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.
Comment @coderabbitai help to get the list of available commands and usage tips.
π¦ Docker Image Size Report
π Changes 
| Service | Current | Baseline | Change | Percent |
|---|---|---|---|---|
| sum of all images | 1.2GiB | 1.2GiB | +12MiB | |
| rocketchat | 359MiB | 347MiB | +12MiB | |
| omnichannel-transcript-service | 132MiB | 132MiB | -3.1KiB | |
| queue-worker-service | 132MiB | 132MiB | -26B | |
| ddp-streamer-service | 126MiB | 126MiB | +312B | |
| account-service | 113MiB | 113MiB | -2.0KiB | |
| stream-hub-service | 111MiB | 111MiB | -831B | |
| authorization-service | 111MiB | 111MiB | -150B | |
| presence-service | 111MiB | 111MiB | +153B |
π Historical Trend
---
config:
theme: "dark"
xyChart:
width: 900
height: 400
---
xychart
title "Image Size Evolution by Service (Last 30 Days + This PR)"
x-axis ["11/15 22:28", "11/16 01:28", "11/17 23:50", "11/18 22:53", "11/19 23:02", "11/21 16:49", "11/24 17:34", "11/27 22:32", "11/28 19:05", "12/01 23:01", "12/02 21:57", "12/03 21:00", "12/04 18:17", "12/05 21:56", "12/08 16:42", "12/08 18:03 (PR)"]
y-axis "Size (GB)" 0 --> 0.5
line "account-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
line "authorization-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
line "ddp-streamer-service" [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]
line "omnichannel-transcript-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
line "presence-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
line "queue-worker-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
line "rocketchat" [0.36, 0.36, 0.35, 0.35, 0.35, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.35]
line "stream-hub-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
Statistics (last 15 days):
- π Average: 1.5GiB
- β¬οΈ Minimum: 1.2GiB
- β¬οΈ Maximum: 1.6GiB
- π― Current PR: 1.2GiB
βΉοΈ About this report
This report compares Docker image sizes from this build against the develop baseline.
-
Tag:
pr-37534 -
Baseline:
develop - Timestamp: 2025-12-08 18:03:01 UTC
- Historical data points: 15
Updated: Mon, 08 Dec 2025 18:03:02 GMT
Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 67.80%. Comparing base (d0be8ad) to head (01c2166).
:warning: Report is 9 commits behind head on develop.
Additional details and impacted files
@@ Coverage Diff @@
## develop #37534 +/- ##
===========================================
+ Coverage 67.78% 67.80% +0.02%
===========================================
Files 3449 3449
Lines 113987 113972 -15
Branches 20956 20956
===========================================
+ Hits 77262 77279 +17
+ Misses 34610 34576 -34
- Partials 2115 2117 +2
| Flag | Coverage Ξ | |
|---|---|---|
| e2e | 57.32% <100.00%> (+0.09%) |
:arrow_up: |
| e2e-api | 42.15% <ΓΈ> (-0.04%) |
:arrow_down: |
Flags with carried forward coverage won't be shown. Click here to find out more.
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
@coderabbitai review
β Actions performed
Review triggered.
Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.