How to globally provide real-time feedback for async operations?
Preface
I'm working on designs for a web application where users can create data-processing workflows that get executed asynchronously from the server. Most of the time workflows will run in perpetuity unless an error is encountered or the user disables it. When a user enables a workflow it may or may not be executed immediatedly; warnings and errors generated during workflow execution are added to log which can be retrieved via API. The ideal state is that there are no enabled workflows in a faulty state, errors are the exception.
Since workflows are executing asynchronously the user could be working in any part of the application when a warning or error is generated.
There is a dedicated log page available from the main navigation where users can go to view and filter through all application logs.
Question
How can I provide feedback to users that workflows are encountering warnings or errors, regardless of where they are in the application, and then direct them to fix the issue?
What we tried
Approach | Aversion |
---|---|
Display a toast card for each warning or error | There could be multiple workflows in an failing state and each individual one could throw tens of warnings/errors in a short period of time easily overwhelming toast card timing. |
Use the browser's Notification API | Only works in HTTPS contexts which our application isn't guaranteed to do. Users may never see the the prompt based off of their browser settings. |
Add a sticky panel to the bottom of the viewport to display the log at all times | This consumes a ton of space and drastically reduces the working viewport height. It feels very reminiscent of an old Win32 app, complete with split panels. |
Add the log to the contextual sidebar | We have a contextual sidebar that only appears when needed. It displays lists of objects to be used with some complex in-line controls. Adding the log here means the panel would appear on all pages and clutter the purpose/intent of the panel. |