Project

General

Profile

Actions

Feature #42630

open

Add reaction feature

Added by Katsuya HIDAKA 3 days ago. Updated about 1 hour ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
UI
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:

Description

This patch adds a reaction feature.

  • Adds reaction buttons to issues and notes, news and comments, and forum messages
  • Shows a tooltip with the names of users who reacted—up to 10 names, with the remaining number shown if there are more than 10
  • The feature is enabled by default and can be turned off in the administration settings

Please also refer to the following screenshots and GIF:

Background / Purpose

  • In my experience, there are many times on Redmine when I want to react to something without leaving a full comment. Reactions are now a common way to express appreciation, agreement, or support. I believe this feature will help encourage more interaction within Redmine.
  • Many modern project management tools like GitHub and Jira already support reactions. By adding this feature to Redmine, I believe it will help modernize the platform and promote its adoption.

Details

  • The icon used for reactions is thumb-up. This icon is commonly used to express appreciation, agreement, or support, and is widely adopted in tools similar to Redmine, such as GitHub, Jira, Asana, and Slack. Based on my experience, thumb-up is the most frequently used reaction icon in these tools.
  • Since reactions should be widely available by nature, this patch does not add a specific permission for them. Instead, access is controlled based on the following rules:
    • Add/Remove a reaction: Any logged-in user who can view the object (e.g., object.visible?(user) returns true)
    • View reaction button: Any user who can view the object

Implementation

  • To reduce memory usage and performance impact when displaying objects with many journals (such as issues), I implemented the feature to load only the minimum necessary data.
  • I confirmed that all tests, including system tests, pass.

You can also check the source code on GitHub:
https://github.com/hidakatsuya/redmine/tree/reaction-feature-dev

Performance

The following results were measured using rack-mini-profiler and memory_profiler when opening an issue detail page. The tested issue has 50 journals, each with reactions from 10 users. The Redmine instance is running the latest trunk on PostgreSQL in production mode.

Response Time (average of 5 runs) Memory Performance
Reactions Enabled 257ms Total allocated: 14490218 bytes (128483 objects)
Total retained: 2576895 bytes (7804 objects)
Reactions Disabled 214ms Total allocated: 11122428 bytes (96509 objects)
Total retained: 2064420 bytes (6036 objects)

Files

screenshot-forum.png (101 KB) screenshot-forum.png Katsuya HIDAKA, 2025-04-25 08:40
screenshot-issue.png (176 KB) screenshot-issue.png Katsuya HIDAKA, 2025-04-25 08:40
screenshot-news.png (103 KB) screenshot-news.png Katsuya HIDAKA, 2025-04-25 08:40
screenshot-setting.png (166 KB) screenshot-setting.png Katsuya HIDAKA, 2025-04-25 08:40
screenshot-tooltip-more-than-10-users.png (96.9 KB) screenshot-tooltip-more-than-10-users.png Katsuya HIDAKA, 2025-04-25 08:40
short-demo.gif (535 KB) short-demo.gif Katsuya HIDAKA, 2025-04-25 08:40
0001-Adds-reaction-feature-to-issues-news-and-forums.patch (28.1 KB) 0001-Adds-reaction-feature-to-issues-news-and-forums.patch Katsuya HIDAKA, 2025-04-25 08:40
0002-Adds-tests-for-reaction-feature.patch (31.4 KB) 0002-Adds-tests-for-reaction-feature.patch Katsuya HIDAKA, 2025-04-25 08:40
Add-reaction-feature.patch (56.1 KB) Add-reaction-feature.patch Katsuya HIDAKA, 2025-04-25 10:10

Related issues

Related to Redmine - Feature #1011: Add voting to ticketsNew2008-04-07

Actions
Actions #1

Updated by Katsuya HIDAKA 3 days ago

The previously attached patches have conflicts, so I’m attaching a new patch, Adds-reaction-feature.patch, with the conflicts resolved. This patch includes both the implementation and test code. If there are any future conflict resolutions or updates, I will attach a new patch with the same filename.

Actions #2

Updated by pasquale [:dedalus] 3 days ago

+1

Actions #3

Updated by Kohei Nakamura 3 days ago

+1

Actions #4

Updated by Go MAEDA 3 days ago

  • Category set to UI
  • Target version set to Candidate for next major release

I strongly support adding a reaction feature to Redmine.

It would make it easy for users to show agreement or feedback with a simple click. Since a feature like this is common nowadays, even beginners can use it intuitively. This could help activate communication by making it easier to respond.

Currently, many users post "+1" comments on www.redmine.org to show their support for the issue. If we have a reaction feature, users can react without posting "+1" comments, helping keep discussions more focused.

The proposed patch allows administrators to disable reactions if they don't need them, so it won't negatively affect users who prefer not to use it.

Many modern tools like GitHub, Jira, Asana, and GitLab already offer reaction features. Without a similar feature, Redmine might be seen as lacking something important.

Actions #5

Updated by Mizuki ISHIKAWA 2 days ago

+1
After applying the patch, it looks really good!
The thumbs-up icon is very useful because it allows users to widely express positive reactions, such as agreement, appreciation, or confirmation, without having to leave a comment.
I would really love to have this feature available.

Actions #6

Updated by Go MAEDA 2 days ago

Actions #7

Updated by Go MAEDA about 14 hours ago

  • Target version changed from Candidate for next major release to 6.1.0

A feature like this has been requested repeatedly. You can see this from #1011, which was posted 17 years ago, and its related issues.

Let's include this long-awaited feature in 6.1.0. I am setting the target version to 6.1.0.

Actions #8

Updated by Holger Just about 1 hour ago

Thank you for this proposal!

I do have some random remarks. Sorry for the brevity.

  • We may need to check user visibility in the list of users who reacted to an object and only include users visible to User.current. As anyone can react, this may expose non-visible users otherwise. For that, it may be possible to introduce Reaction.visible scope or some other way to filter users.
  • I'm not a fan of returning final user names in Redmine::Reaction::Reactable@reaction_user_names. I think we should return actual User objects here rather than names (and thus rename the method). The consumer should then format the user appropriately on the view/helper or e.g. the API. This also applies to Reaction.users_map_for_reactables
  • In the ReactionsController, we should first check require_login, followed by check_enabled to avoid leaking the setting value to anonymous users.
  • The ReactionsController probably needs to check the request format and handle non-js requests. See #39894 for a similar issue.
  • In the reaction_text_enabling_reactions translation, we probably don't want to spell out the list ob objects one can react to so that this list does not become outdated or incomplete if we or plugins later extend the list. This should be more generic.
  • The reactions should also be included in the API responses for issues, messages, ..., possibly behind an include flag

Some suggested feature work:

  • Add a column and a filter for the IssueQuery to filter issues which the current user (or some other user?) has reacted to. This can be similar to the watcher column / filter. * A sortable column containing the number of reactions may be helpful. * For larger projects, a column/filter with some definition of of "recent" reactions might also help.
  • Maybe add a set of permissions to control who can react and who can see reactions. These permissions probably need to be per object type (i.e. separate permissions for issues and forum posts). At least a "can react" permission would be helpful.
  • A useful (later) extension may be to add negative reactions (or something like a set of possible emoji reactions, some of which may be positive or negative). While this may still need additional refinements, the design should probably allow this as a future extension.
  • A user may (optionally?) want to be notified when someone reacts to one of their posts.
Actions #9

Updated by Holger Just about 1 hour ago

One additional issue:

It must not be possible to react to objects in closed projects. This may require specific checks as the view permissions are still granted here, while changes must not be possible anymore.

Actions

Also available in: Atom PDF