I work on a complex and heavily data-backed app (essentially an ERP) that has a number of different objects in the system that track real objects in the world. Users can create objects which later have actions performed on them, which mirror real world actions.

Most of the objects can be archived and deleted.

Generally speaking, archiving is useful in situations where the object has lived its useful life. Archiving gets the object out of the main UI but keeps its history, which is critical for historical tracking. Archived objects are accessible via either an archived tab or explicitly filtering for archived objects, which is important for auditing purposes. Un-archiving archived objects is always possible.

Deleting is used primarily in situations of incorrect data entry — the attributes on the object were entered wrong, for instance. And in fact it is not possible to delete objects that have history on them as there are then data dependencies that prevent it. Deleted objects are gone forever from the system.

The question is: for brand new objects (no history) should we allow archiving or disable it and only allow deleting?

We haven't come up with any compelling use case for archiving an object with no history.

We're debating between two approaches:

  1. Consistent behavior. Showing and allowing archiving on unused objects, while not obviously useful, reveals how the system works and allows users to understand the feature from the minute they create an object. There is no "state" to worry about or confuse people — no new button that shows up later on that object, and no confusion about when you can archive and when you can not.

  2. Simplifying the UI. Without a use case, showing and allowing this feature is clutter and adds to users' cognitive load.

How can we decide which approach is better? Best practices, or strategies to answering this question?

  • Is it true that you may only archive objects with history and only delete objects without? is there ever a situation where you can either delete OR archive a given object? if so, what state is that?
    – J. Dimeo
    Apr 29, 2017 at 0:20
  • New object, no history is the one case where we could allow both archiving AND deleting. Old objects with history can only be archived.
    – Drew Beck
    Apr 29, 2017 at 0:29
  • ... that's the use case in question though right? no other use case exists where the user can do both?
    – J. Dimeo
    Apr 29, 2017 at 1:07
  • Yes! That is correct.
    – Drew Beck
    Apr 29, 2017 at 1:17

1 Answer 1


I would recommend a single button with a dual-purpose word like "Remove" or "Hide". The tooltip or help text can explain:

This record will be archived with its full history and can be unarchived in the future


This record will be permanently deleted since it does not have history

depending on the situation. The reason why is that your user is wanting to remove that object from their view, regardless of what "type" of object it is, and there isn't a situation or use case where the user can or wants to perform both actions on the same object. Also, this accomplishes both goals of consistent behavior AND a simple UI.

The only downside I see is potentially being more confusing to power users who understand the difference between the actions, but I think that is mitigated by a tooltip, since those same users are also likely to discover the tooltip.

  • The thing is that Archived objects are still visible in a different interface — an archived tab, or by filtering explicitly for archived objects. They are important to keep around and to access for auditing purposes, but they need to be removed from the primary interface because their lifecycle is complete. Deleted objects are gone forever. I realize I didn't mention this in the question and I will edit to reflect this!
    – Drew Beck
    Apr 29, 2017 at 12:13
  • I don't feel like that changes my answer too much- the user wants to remove the object from their view. They don't care so much if it's an "archive" or "delete" action (at the time of deletion).
    – J. Dimeo
    Apr 29, 2017 at 18:37
  • 1
    Alternatively, not to rely on tooltips: there's no history = "Remove" + "Are you sure? Y/N", history = "Archive" + passive feedback, e.g. "Object archived, see the archived object" - link to the place where archived objects can be found.
    – JakubTutaj
    May 3, 2017 at 13:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.