UX: Standardising Deletion Experience
Problem
Several foundational UX improvements have been identified that need to be addressed to reduce inconsistency in our deletion flow. These improvements, while independent of the upcoming Bin concept, will establish a solid foundation for its implementation.
Key identified user problem:
- Inconsistent deletion experiences in all areas (lists, details, admin)
- Confusing variation in confirmation dialogs
- Unclear distinction between initial deletion and permanent removal
- Fragmented restore options
- Poor deletion feedback after actions
Actions menu (List view)
List views including the following pages:
Your works/ ProjectsYour works/ GroupsExplore/ ProjectsExplore/ GroupsAdmin area/ ProjectsAdmin area/ Groups
| Before - Admin areas | Before - List view | After - 1st deletion | After - 2nd deletion | |
|---|---|---|---|---|
Project |
![]() |
![]() |
![]() |
![]() |
Group |
![]() |
![]() |
![]() |
![]() |
Design changes:
- Replace admin area action buttons with dropdown menu interface
- Update "Delete" button text to "Delete permanently" for second-stage deletion
- Update admin area deletion behavior: first deletion moves items to trash instead of permanently deleting them
Deletion confirmation modal
There are multiple 'before' instances from quick actions, settings pages, and admin areas. The screenshot in the 'before' column shows an early reference point before we implemented service deletion as a quick action.
Following #397039, we agreed to add a checkpoint in the second deletion modal as a final warning to prevent data loss incidents like https://gitlab.com/gitlab-org/gitlab/-/issues/561680. To help users avoid accidental permanent deletion, we will include a 'View data export options' link at the end of the warning message that directs users to a help document explaining how to export their data.
| Before | After - 1st deletion | After - 2nd deletion | |
|---|---|---|---|
Project |
|
|
|
Group |
|
|
|
Checkpoint message consideration:
- This action permanently deletes this group and all its data. GitLab support cannot restore it. View data export options.
- This action permanently deletes this project and all its data. Your administrator cannot restore it. View data export options.
I recommend option 2 because it works across .com, dedicated, and self-managed environments, while option (1) only works for .com and dedicated.
Design changes:
- Update the icon from "Error" to "Warning" to better reflect that it's a warning message
- Modal width should be consistence across all instances
- Standardise the format of warning messages
- Standardise IA to Title → Warning → Description → Copy and paste item path → Additional checkpoint (2nd deletion only) → Action (Button)
- Question: Hide 0 count items under warning message. If all items are 0, we could consider removing the warning message altogether
Actions menu (Detail view)
| Before | After - 1st deletion | After - 2nd deletion | |
|---|---|---|---|
Project |
![]() |
![]() |
![]() |
Group |
![]() |
![]() |
![]() |
Design changes:
- Add "Archive", "Delete", and "Restore" actions to the dropdown menu for consistency with other action menus throughout the interface
- Update "[Group/Project] settings" button text to "Edit" for consistency reason
Settings card
1st deletion
| Before | After |
|---|---|
![]() |
![]() |
![]() |
![]() |
Design changes:
- Update the title colour from "text-colour-danger" to "text-colour-default"
- Update action button text from "Delete [Group/Project]" to "Delete" for consistency across action menus and setting cards
- Remove "pending deletion .. 7 days" text to reduce cognitive load, as this information is already implied by the deletion date
- Recommend updating date format from current "2025-05-08" to a clearer format (current format is ambiguous - could be interpreted as May 8th or August 5th).
2nd deletion
| Before | After |
|---|---|
![]() |
![]() |
![]() |
![]() |
Design changes:
- Update the title colour from "text-colour-danger" to "text-colour-default"
- Update title from "Delete [group/project] immediately" to "Delete [group/project]"
- Update action button text from "Delete [group/project] immediately" to "Delete permanently" for two reasons:(1) shorter action text & (2) items may not be deleted immediately but instead remain in "Deletion in progress" status for an extended period
- Remove duplicated information such as "This action... immediately" from the card and move it to the delete confirmation modal for more concise copy
Restore item in pending deletion state
| Before | After |
|---|---|
![]() |
![]() |
![]() |
![]() |
Design changes:
- Update card title and background color from warning (yellow) to default styling
- Update action button text from "Restore [group/project]" to "Restore" to be consistent with the action naming in live view
- Update button style from "primary" to "default"
Toast feedback
1st deletion
| Before | After | |
|---|---|---|
Project |
![]() |
![]() |
Group |
N/A | ![]() |
2nd deletion
| Before | After | |
|---|---|---|
Project |
![]() |
![]() |
Group |
![]() |
![]() |
Design changes:
- Introduce an "undo" action that appears when a user deletes something for the first time, allowing them to reverse the deletion immediately
- Update the deletion confirmation text to be more descriptive and less alarming. Change generic phrases like "Project [name] is being deleted" to more informative language such as "Project [name] moved to pending deletion" that better explains the actual state and process
Deletion notification
Pending deletion
| Before | After | |
|---|---|---|
Group |
![]() |
![]() |
Group/project |
![]() |
![]() |
Project |
![]() |
![]() |
Deletion in progress (New state)
| New | |
|---|---|
Group |
![]() |
Project |
![]() |
Design changes
- Remove redundant language like "is pending deletion, so this project will also be..." and emphasize the key consequence with clear messaging such as "The items will be permanently deleted on [Date]" to provide users with essential deletion timeline information
- Recommend updating date format from current "2025-05-08" to a clearer format (current format is ambiguous - could be interpreted as May 8th or August 5th).
To-Do
-
Design a uniform confirmation modals with clear titles and button labels -
Design unified deletion and restoration controls throughout the entire interface (list views, detail pages, and admin panels) i.e. actions should be services on project/ group level -
Ensure three-step flow everywhere: trigger → confirm → feedback -
Ensure clear visual distinguish between "Schedule for deletion" and "Delete permanently" across action, confirmation and feedback -
Create an impact level framework to communicate consequences at each stage i.e. 1st time deletion: light warning, 2nd time deletion: high warning -
Design toast notifications with undo buttons for all deletion flows -
Design a "Pending Deletion" view to manage scheduled deletions















































