Docs

Arbitration

Documentation

Arbitration

How SpryUI decides which message to show when more than one message matches.

How winners are picked

Snippettext
Comparator order (highest precedence first):
1) priority (descending numeric)
2) type rank (MODAL > BANNER > TOAST)
3) message id (lexicographic)
4) stable sort fallback preserves original order for exact ties

SpryUI uses the same ordering each time, so a refresh does not randomly change which message wins.

Arbitration matrix

  • Winning modal suppresses: other modals, toasts, and fixed banners in top/bottom rails.
  • Fixed banners suppress centered fixed toast rails in the same top or bottom rail.
  • Corner toasts are ordered by priority, then message id.

Modal exclusivity

Exactly one modal can be active. The highest-ranked modal is selected, and all suppressed competitors are recorded with explicit reasons.

Debug suppression metadata

Snippettext
Suppression reason keys:
- arbitration.modal.suppressed_by_modal
- arbitration.modal.suppresses_overlay
- arbitration.modal.suppresses_fixed_banner
- arbitration.rail.fixed_banner_suppresses_fixed_toast

Debug overlay receives suppressed message IDs plus reason keys to make winner selection traceable.