RocketChat / RocketChat/Rocket.Chat

[Bug] Video Message Recorder: “Send” enabled without recording

Open
#38,729 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type: bug
Dominant language
TypeScript
Stars
46.1k
Forks
13.9k
Avg merge
3d 3h
Merged PRs (30d)
130

Description

Description:

In the Video Message Recorder, the Send button is enabled even when no recording has been made. This allows users to click Send immediately after opening the recorder, resulting in an empty (0-byte) upload or inconsistent message behavior.

File:
apps/meteor/client/views/composer/VideoMessageRecorder/VideoMessageRecorder.tsx

Location: around line 50

This is both a UX issue and a data integrity bug, as users should not be able to send an empty video message.


Steps to reproduce:
  1. Open the Video Message Recorder in Rocket.Chat.
  2. Do not start recording.
  3. Immediately click on "Send".
  4. Observe the upload attempt and resulting message behavior.

Expected behavior:
  • The Send button should remain disabled until a recording has actually been made.
  • No upload should be attempted without recorded video data.
  • Users should not be able to send a 0-byte video message.

Actual behavior:
  • The Send button is enabled even when nothing has been recorded.
  • Clicking Send attempts to upload an empty blob or results in inconsistent message behavior.
Screenshot :
Image
Server Setup Information:
  • Version of Rocket.Chat Server: develop (latest)
  • License Type: N/A
  • Number of Users: N/A
  • Operating System: N/A
  • Deployment Method: N/A
  • Number of Running Instances: N/A
  • DB Replicaset Oplog: N/A
  • NodeJS Version: N/A
  • MongoDB Version: N/A

Client Setup Information
  • Desktop App or Browser Version: Chrome (latest)
  • Operating System: (your OS here)

Additional context

Current implementation:

const sendButtonDisabled = !(VideoRecorder.cameraStarted.get() && !(recordingState === 'recording')); 

This logic does not ensure that a recording has actually occurred before enabling Send.

A possible minimal fix would be to ensure recorded duration exists (for example, using time as a signal):

const sendButtonDisabled = !VideoRecorder.cameraStarted.get() || recordingState !== 'idle' || !time;

###Relevant logs:

Check browser DevTools → Network tab for upload attempts with empty blob or abnormal payload size.
No relevant server-side logs observed.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in apps/meteor/client/views/composer/VideoMessageRecorder/VideoMessageRecorder.tsx around line 50 and inspect how sendButtonDisabled uses cameraStarted, recordingState, and time. Reproduce the issue in Chrome, then verify the Send button stays disabled without recorded data and that no empty upload appears in the Network tab.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
audio-video-rtc, frontend
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.