Restyle & Refactor Flash Messaging#374
Conversation
davidborland
left a comment
There was a problem hiding this comment.
This looks much nicer IMO. A couple of questions:
-
Does the error display have a max height? Is it scrollable? Just wondering if there might be a situation where there are enough errors that some might get cut off, either due to max heigh on the error display, or a screen with a low y resolution.
-
Is the error message cut and pastable? I presume so, but wanted to double check.
i'd be happy to implement these ideas. |
|
I think (1) is the most important, as I believe the primary problem the client was having was not being able to see all of the errors. I would consider (2) a nice to have, but not as crucial. |
|
@mbwatson Can you upload a screenshot with the changes? |
|
@davidborland yep, here's one! you'll see i've opted to tuck them off to the right side. on a large screen size, when the tray fills up with notifications, the overflow scroll was not too user friendly when these were full-width. however, it does flip to full-width on a smaller screen size. the higher contrast text and color changes are what you saw previously.
|
|
This looks the same as the previous "after" screenshot to me. Is there a difference between them? Could you show an example of what it looks like with the scroll? |
|
yeah i replaced the "after" image in the original description with the new "after" image. you can step through the edited version to see the original. you can see the scrolling container in this recording: Screencast.from.2026-05-05.07-44-22.webm |
|
Ah, okay. I was thinking the individual error message components would be scrollable, but the container that holds the error messages is scrollable? That probably make sense if the issue is multiple error messages stacking, as opposed to a single error message that has too many lines such that it gets cut off. |

Summary
Restyles and refactors the flash message (snackbar notification) system to improve UX, styling, and maintainability.
Changes
FlashMessage component — Reworked styling: messages now use bordered, light-tinted backgrounds (
color-mix) instead of fully solid fills, with dark text for better readability. Added a dedicatedWarningIconfor warning-type messages. Auto-hide duration is now type-aware (success/info auto-dismiss; warning/error persist until manually closed), supporting reading longer error messaging. Layout updated to span the content area instead of being small and centered.FlashMessageContext — Replaced
useState-based queue withuseCallback-drivenaddFlashMessage/removeFlashMessagefunctions. Each message now receives a uniqueidfor stable removal. Added auseFlashMessagingcustom hook with a guard for usage outside the provider.FlashMessageContainer — Now receives
messagesandonCloseas props, rendering the list internally instead of accepting children. Supports adisableAutoHideprop for debugging.DropZone — Minor formatting fix: newline after the "Error uploading file:" header for cleaner multi-line error display.
these screenshots show the busiest error message returned from the API, before and after this PR:
before

after
