Ghost Drafts Reappear After Sending from the Drafts Panel

Applies to: Mattermost Server (web and desktop clients, all versions with server-synced drafts enabled)

Symptoms: Sent messages reappear as drafts in the Drafts panel after being sent, and clearing the cache or deleting the draft only temporarily resolves the issue.


🛑 Problem

When a user sends a message from the Drafts panel (the Drafts view in the left sidebar), the app visually removes the draft but does not send the delete instruction to the server. On the next team switch or page reload, the server returns the draft and it reappears in the Drafts panel. Clearing the local cache removes the ghost draft temporarily, but because the server copy is never deleted, it reappears after the next sync.

This bug only affects drafts that were previously server-synced, which occurs when the user navigated away from the composing channel before sending. Drafts sent directly from the channel composer (not the Drafts panel) are correctly cleaned up on the server.

Symptoms

  • A user sends a message from the Drafts panel. The draft appears to be removed. On the next team switch or browser/app reload, the message reappears in the Drafts panel.
  • Deleting the draft from the Drafts panel and clearing the cache resolves the reappearance temporarily, but the ghost draft returns after the next reload.
  • The issue is consistently reproducible with drafts that were created, left for some time (causing the user to navigate to a different channel), and then sent from the Drafts panel rather than from within the channel itself.
  • Multiple users (not just one) may be able to reproduce this with the same workflow.

âś… Solution

The underlying bug is in the Drafts panel send path. Until a fix is released, use the channel composer to send drafts instead of the Drafts panel.

Workaround - Send from the Channel Composer

Instead of opening the Drafts panel and clicking Send from there:

  1. Open the draft in the Drafts panel.
  2. Click the draft to navigate to the channel it was composed in. The draft text will be in the channel's composer.
  3. Send the message from the channel composer (the message input at the bottom of the channel view).

This code path correctly sends the delete instruction to the server when the message is sent, preventing the ghost draft from reappearing.

Alternative Workaround - Disable Server Draft Sync

If the ghost draft behavior is impacting multiple users and sending from the composer is not practical, an administrator can disable server-side draft sync. This prevents drafts from syncing to the server, so ghost drafts can no longer re-sync.

System Console path: System Console > Site Configuration > Posts > Enable server syncing of message drafts - set to false.

⚠️ Important: Disabling server-side draft sync is a server-wide change that affects all users. Users will no longer see their drafts across multiple devices or sessions. Evaluate whether this tradeoff is acceptable before making this change.

Clean Up Existing Ghost Drafts

To remove ghost drafts that are already stuck on the server:

  1. Navigate to the Drafts view in the left sidebar.
  2. Hover over the ghost draft and click the Delete (trash) icon. This deletes the server copy and prevents it from re-syncing.
  3. Alternatively, clear the object store per the Fixing Ghost Drafts knowledge base article.

Additional Resources

For more information, see:

Using Drafts
Configuration Settings - Posts

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.