-
Notifications
You must be signed in to change notification settings - Fork 13.5k
[Feature Request] Message Draft Auto-Save Per Room #38217
Copy link
Copy link
Open
Description
Summary
Automatically save unsent message drafts per room / channel / DM so users do not lose typed messages when switching rooms, navigating away, or refreshing the page.
Problem Statement
Currently, if a user types a message in a room and:
- switches to another room,
- accidentally refreshes the page,
- navigates away and comes back,
the unsent message draft is lost.
This can be frustrating, especially for:
- long messages,
- technical discussions,
- support conversations,
- multi-room workflows.
Most modern chat platforms (e.g., Slack, Discord) preserve drafts per conversation, and users expect similar behavior.
Proposed Solution
Implement per-room message draft persistence on the client side.
Basic Behavior
- Save the message input content automatically as the user types.
- Store drafts separately for each room / DM / thread.
- Restore the draft when the user revisits the same room.
Suggested Initial Scope
- Client-side only implementation (no server changes required initially).
- Use
localStorageorIndexedDBfor persistence. - Key drafts by
roomId(and optionallythreadId). - Clear the stored draft once the message is successfully sent.
Why This Feature Matters
- Prevents accidental data loss.
- Improves overall user experience and reliability.
- Aligns Rocket.Chat with modern chat UX standards.
- Low-risk, incremental improvement with high user impact.
Acceptance Criteria
- Draft text is preserved when switching between rooms.
- Draft text is restored on page refresh.
- Drafts are isolated per room (no cross-room leakage).
- Draft is cleared after successful message send.
- No impact on message sending performance.
Possible Enhancements (Future Work)
- Sync drafts across devices (server-side persistence).
- Support drafts in message threads.
- Add an indicator when a draft exists in a room.
Willingness to Contribute
I am willing to work on this feature and submit a pull request if the maintainers agree with the approach.
Additional Context
This feature can be implemented incrementally and is suitable as a good first issue while still delivering meaningful value to end users.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels