Anytype is in an interesting early phase where, unlike most productivity apps I use, it actually has little or no need for a “notifications” system. But if I understand future plans right, then it will definitely need such a system eventually. So I’d like to open up some discussion on UI/UX and features we’d like to see in such a system and see if we can help shape its direction as it is being planned and initially developed.
Notification Sources
First, I think notifications will be necessary/useful for the following, at a minimum:
- Reminders, e.g. dates
- Application update notification and accessing change log after update
- Multi-user, e.g. changes to shared pages, @mentions, etc.
With that in mind, there are several types, contexts, or “levels” of notifications I can think of, and different ways to handle them all.
Notification Types
Immediate/Action-based Notifications: when you perform some action, sometimes it is good to let the user know the outcome, especially in the case of success or failure. For example, if you move a page, or delete, etc. These types of notifications are often handled with “toasts”: https://stackoverflow.com/questions/1348788/what-does-toast-mean
There are a couple things that distinguish Toasts from other types of notifications. 1: they pop-up automatically, but unobtrusively, usually in the bottom of the UI. 2: they can usually be optionally interacted with, for example to Undo the last action if it was accidental. 3: they usually disappear on their own after some short amount of time, e.g. 10 seconds. Thus they usefully inform the user and give them some small but important functionality, while not interrupting most normal use of the app. This is different from pop-ups for example.
Personal/Direct Notifications: these are notifications directly related to or targeted at the current user. Things like date reminders, @mentions, etc. In my view these are ideally handled separately from Activity Stream (see below), or at least can be given special highlights or something. These notifications can be expressed in pop-ups, notification icons, or even (in some systems) emailed to the user. Pop-ups may be a common way to express these types of notifications, and they are distinguished from Toasts in a couple possible ways. 1: they generally come up in the middle of the screen, or somewhere in the top third, to get attention. 2: they usually have some option to interact with them, either “mark as read” or, ideally, a link to where the notification originated, e.g. a page with a date, a page with an @mention, etc. 3: they generally need to be manually dismissed before continuing work (this could be as simple as clicking outside the pop-up though).
Activity Stream: generally speaking these will only be relevant to multi-user environments as they don’t normally pertain to changes one makes to their own data. This kind of notification is more broad and tends to be more “noisy”, and may or may not be an eventual feature of Anytype. But for example if you “subscribe to changes” on a given page or database record, you would want to see some notification of updates. This is often shown as an “activity stream”, and the user may be notified with some kind of small indicator “light” showing that there are unread notifications. Generally such notifications are not given priority and so do not appear in pop-ups or “toasts”, there tends to be too much activity, and it is often better seen and understood by a user in a linear “stream”.
Suggested Implementation
This is just my personal view of how it could work best in Anytype.
As I have outlined, there can be at least 3 types of notifications. And I’d like to see all 3 and some separation between them for reasons I partly outlined above. I appreciate good “toast” notifications, ClickUp shows some good examples for instance. These are short-term notifications that do not “persist” and briefly inform and present some option to the user.
The most critical type of notification, I think, is what I’ve called “Personal/Direct Notifications” above. These I think should either be in an easily-dismissed pop-up (optionally), or part of the activity stream but with some special characteristics. They could be a on different “tab” of the activity stream, for example, or shown in a different, more stand-out color (e.g. red vs. yellow), and if Activity Stream content is marked read automatically when viewed in the stream, personal notifications should probably require being manually dismissed. Personally I favor something like Notion’s approach here, with a tabbed interface for notifications/activity stream.
Finally, the Activity Stream, less critical but really nice to have, especially for mult-user environments. Again I think Notion shows some good ideas for this, although it is not necessarily the absolute best implementation. It is worth evaluating numerous products that have such a UI convention to decide on the best features.