Expected behavior
In the desktop application, being able to control click or shift click multiple chats or multiple messages to perform the same action on each selected item, such as delete, forward, or copy. This functionality already exists in the mobile app (Android, at least).
Actual behavior
Only one chat or one message can be acted on at a time in the desktop application, which can be laborious and inefficient.
9quujin
February 1, 2021, 12:29am
2
+1. Must have for batch deleting messages from for example Saved Messages.
Raiden
November 15, 2023, 10:14pm
3
I think the easiest way would be to select the chats/messages via context menu or by holding down CTRL/CMD and left clicking.
A multiselector would make the use of DC-Desktop more comfortable.
In addition, the number of sync emails between devices would be reduced.
This is particularly important for users with cheap email providers.
Example Images
Seth
November 20, 2023, 6:16pm
4
Is there a github issue to track this feature proposal? I couldn’t find any with search terms ‘select multiple’
Simon
November 21, 2023, 11:41am
5
feature proposals are tracked here the forum, unless there is someone actively working on them
Simon
June 18, 2025, 10:21pm
6
There is another idea to add that also affects mobile apps:
It would be useful if you could export/share attachments/images of the multi-selection in one action.
Like you select multiple images and have a single option to export them all to the file system.
bencan
June 19, 2025, 9:39pm
7
And conversely it would useful if you could also select multiple files to import into the chat in one action. But maybe this is getting further away from the original topic.
WofWca
June 11, 2026, 2:27pm
8
Chat multiselect has been around for a couple of months:
main ← wofwca/multiselect-chats
opened 08:19PM - 16 Jul 25 UTC
<img width="334" height="397" alt="image" src="https://github.com/user-attachmen… ts/assets/f30b876a-9627-4bf2-aeaa-e4574ad2e907" />
To use it, simply hold Shift or Ctrl and click on the chat list items.
Keyboard is also supported.
Accessibility is taken into account
(`aria-selected`, `aria-multiselectable`).
This has minimal effect on non-multiselect behavior,
i.e. if you don't hold Shift or Ctrl, you won't see a big difference.
The most significant change in this regard is that
if you right-click a chat that is not the active chat,
it will get highlighted, and the active chat will get un-highlighted,
until the context menu gets closed.
Note that the active chat and the selected chats have the same look
(i.e. darker background).
I have tried to minimize confusion between them.
But in the end we might need to style them differently.
Although at the current state it also works quite well IMO.
Summary of the changes:
- Make `ChatListContextMenu` support multiple items
(without changing behavior for single selection).
The behavior if things such as "pin / unpin", "mute / unmute"
is the same as in Android.
The "Delete Chat" dialog also supports multiple items,
and displays the to be deleted chat names.
- Rename `selectedChatId` to `activeChatId` in `ChatList.tsx`
- Introduce the `useMultiselect` hook. It basically takes `click`
and `focus` events, and outputs the set of selected items.
It basically depends on the existing `useRovingTabindex` hook
for arrow key focus management.
I have tried searching for existing such libraries,
but didn't find one that's sufficiently generic and simple.
- Introduce `useChatListMultiselect` hook that wraps
`useMultiselect`, and more concretely implements multiselect
specifically for chat list. For example,
resets selection when the active chat changes.
- Pass down `onClick` and `onFocus` handlers
to chat list item components.
- Adjust `onContextMenu` to handle multiselect.
The more useful feature would be to multiselect messages,
but I decided to start with a simpler case,
as I once did with `useRovingTabindex`.
TODO:
- [x] Address TODOs in the code, clean up comments.
- [ ] Get feedback.
- [x] Consider putting this behind a feature flag.
Edit: We have decided that this is not needed.
- [x] Consider adding more UI, namely a "n chats selected" indicator.
Edit: we have decided that this can be done later.
- [x] Add E2E tests, maybe a lot of them. But probably after getting feedback.
https://github.com/deltachat/deltachat-desktop/pull/5431 - not a lot of them, but covers the basic stuff.
- [x] Write better MR description
- [x] Maybe something about existing libraries.
- [x] Summary of the changes: context menu to support multiple items, but otherwise unchanged; introduced the generic `useMultiselect` hook that basically relies on `useRovingTabindex`.
- [x] Merge the MR that this is based on: https://github.com/deltachat/deltachat-desktop/pull/5283
- [x] Add CHANGELOG entry.
- [x] Apparently it's planned to make a release with just https://github.com/deltachat/deltachat-desktop/pull/5423. If so, let's merge this MR after that release.
Otherwise this works quite well IMO.
#public-preview
Message multiselect will be out in the next release after 2.52.0:
main ← wofwca/cc13bc6fc4
opened 08:39AM - 17 Apr 26 UTC
Closes https://github.com/deltachat/deltachat-desktop/issues/2892.
<img width… ="279" height="280" alt="image" src="https://github.com/user-attachments/assets/c39edc8b-3977-42eb-a3c4-088002f2fd69" />
In the end the functionality is quite conservative, one will not notice that we support multiselect until they Ctrl + Click or Shift + Click.
TODO:
- [x] Address TODOs.
- [x] Tests.
https://github.com/deltachat/deltachat-desktop/pull/6361
- [x] Clean up the code.
- [x] Merge the base MRs (containing the first few commits) so that this one's easier to review.
- https://github.com/deltachat/deltachat-desktop/pull/6284
- https://github.com/deltachat/deltachat-desktop/pull/6285
- [ ] Consider adding a safeguard (maybe a confirmation dialog) if more than 100 or 1000 messages are selected.
Telegram simply won't let you select more than 100 messages.
https://github.com/deltachat/deltachat-desktop/issues/2892#issuecomment-4406316861
Edit: ~~https://github.com/deltachat/deltachat-desktop/pull/6366~~
Edit 2: https://github.com/deltachat/deltachat-desktop/pull/6369
- [ ] (maybe later) add more context menu items, such as "Save / Unsave Messages", "download attachment" and whatever else Android and iOS already support.
- [x] Consider squashing some commits, especially the ones made in follow-up MRs.