GH GambleHub

Error hierarchy and priority highlighting

1) Why you need an error hierarchy

The mistake is not just "red text." This is a controlled signal that should:
  • explain what went wrong
  • show why it matters,
  • suggest what to do next,
  • prioritize if there are several errors.
  • The error hierarchy reduces cognitive load, speeds up correction and increases step conversion (registration, payments, KYC).

2) Severity model

We recommend 5 grades - from informing to blocking problems:

1. Info - "Profile is incomplete, can be completed later." Does not block.

2. Notice - "The limit is almost exhausted." We recommend action.

3. Warning - "Format mismatch, data partially saved." Can interfere.

4. Error - "Invalid format/required field is empty." Blocks a specific action.

5. Critical - "Payment Denied/Security Risk." Blocks the script, requires an immediate step.

Rules:
  • One screen - one main status.
  • For multiple errors: show critical from above and scroll stably to the first error.

3) Principles of priority highlighting

1. Visual hierarchy: color/icon/thickness/contrast increase with criticality.
2. Spatial proximity: an error near the field/zone to which it belongs.
3. Focus and scroll: auto-scroll to the first error + focus to the problem field.
4. One main callout: general banner/alert about a critical problem + local prompts.
5. Token sequence: colors/icons/fonts for Info/Warning/Error are unchanged throughout the product.
6. Lifetime: local errors - not fixed yet; banners - before closing/fixing.

7. Do not confuse states: "empty ≠" "error," "waiting" ≠ "error."

4) Visual language (UI tokens)

Colors:
  • Info - neutral blue/gray,
  • Notice - amber/yellow,
  • Warning - orange,
  • Error - red,
  • Critical - rich red + contrasting background.
  • Icons: info ⓘ, notice, error/, success.
Containers:
  • Inline message below the field (minimum frame).
  • Row-callout per line/card.
  • Page-alert (banner) - for general/critical.
  • Microanimations: soft appearance, without "jerking" the layout.

5) Error texts: formula and examples

Formula: What's wrong + How to fix + (Why/constraint).

"Invalid date format. Enter in DD format. MM. YYYY"

"The file is too large (max. 10 MB). Please download a smaller file"

"Insufficient level of verification. Take KYC - it takes ~ 2 minutes"

"The payment was denied by the bank. Try another method or contact your bank"

Anti-patterns: "Error 400," "Something went wrong," humor in stressful steps.

6) Hierarchy in complex forms (registration/ACC/payments)

1. Inline validation on blur: we catch local errors right away.
2. Global check for submit: show the "Correct marked fields" banner and the list/anchors.

3. Error navigation: keyboard/tab, "Go to error # 1/# N."

4. Order of correction: first blocking (Error/Critical), then Warning/Notice.
5. Save Context - Input is not lost when an error occurs.

7) Specificity of scenarios

7. 1 Payments/withdrawals

Critical: rejection by provider/bank, suspicious activity.
Error: card/IBAN field, limits on amount/frequency.
Warning: slow network/timeout.

Text: "Payment denied by bank. Try another method or contact your bank. The fee has not been charged"

7. 2 CCS/safety

Critical: document forged/blocked country/multi-account.
Error: unreadable document/date mismatch.

Text: "The photo of the document is blurred. Upload a sharper image in good light"

7. 3 Search/filters

This is not a mistake, but a zero result.

Text: "No results for "{query}." Remove the "Provider: X" filter or try "{alt}." [Reset Filters]"

8) Availability (A11y) and specifications

Errors are declared to the screener: aria-live = "assertive" for critical, "polite" for others.
Fields with error: aria-invalid =" true," aria-descripedby per message.
Focus moves to the first error; tabbing order preserves logic.
Contrast by WCAG AA; the icon does not replace text.
The text should be read aloud without losing meaning.

9) Localization and legal accuracy

Avoid jargon and cultural metaphors.

Agree on the terms (glossary): "payment rejected," "limit exceeded," "verification."

Specify terms and restrictions in local format: "up to 15 minutes," currencies/dates.

10) Quality metrics

Error rate by field/step.
Time-to-Fix.
Drop-off after an error (how much they leave without fixing it).
Recurrence by user/session.
Support calls by error type.
Step conversion before/after changes in hierarchy.

A/B ideas:
  • Auto-scrolling and focus vs color/text only.
  • The exact wording of the reason vs general.
  • Backlight order (banner → inline first) vs (inline only).
  • Adds a Show Requirements link next to the error.

11) Pre-release checklist

  • Each error has a level (Info/Notice/Warning/Error/Critical).
  • The color/icon/container corresponds to the level.
  • There is scrolling to the first error and focus shifting.
  • The message explains what/how/why.
  • Terms match glossary; localization verified.
  • Availability: aria attributes, contrast, readability aloud.
  • Data is not lost on error.
  • The "zero result" and "waiting" statuses are not marked as errors.

12) Before/after examples

Date form

Before: "Error 400"

After: "Invalid date format. Use DD. MM. YYYY"

Payment

Before: "Payment failed"

After: "The payment was denied by the bank. Try another method or contact your bank. The fee has not been charged"

KYC

Before: "Document not accepted"

After: "The document could not be recognized. Upload a photo without glare, corners and text are visible"

Zero search (not an error!)

Before: "Error: nothing found"

After: "There are no results for "live roulette." Remove the "High-limit" filter or try "roulette." [Reset Filters]"

13) Design system components

``

Пропсы: `message`, `severity`, `ariaDescribedBy`, `compact`.
Render: text + icon, color by 'severity'.

``

Пропсы: `title`, `description`, `severity`, `actions[]`.
Options: 'info | notice | warning | error | critical'.

``

List of errors with anchors to fields, keyboard navigation, "Go to # 1."

'' (logic)

Field/form/step rules, priorities, schemas (for example, JSON-Schema), message localization.

14) Quick phrase patterns

SituationMessage
Required field"Please fill in this field."
Phone format"Please enter a number in the format + 380..."
Password"Minimum 8 characters, one number and one letter."
Transaction limitYou have exceeded the limit for this amount. Please select a smaller amount or complete advanced verification"
Unavailable method"The method is not available in your region due to provider rules."
Network/Timeout"Unable to connect to the server. Check your network or try again"

15) Process embedding

Design the texts simultaneously with the validation logic.
Store lines in i18n next to components, versionize.
In the PR checklist: level compliance, aria attributes, correct localization.
Regularly review metrics errors and support feedback.

Final cheat sheet

Digitize levels: Info → Critical.
Show the priority visually and in focus.
Explain the correction briefly and specifically.
Don't call emptiness a mistake.
Measure and improve: error rate, Time-to-Fix, drop-off.

Contact

Get in Touch

Reach out with any questions or support needs.We are always ready to help!

Telegram
@Gamble_GC
Start Integration

Email is required. Telegram or WhatsApp — optional.

Your Name optional
Email optional
Subject optional
Message optional
Telegram optional
@
If you include Telegram — we will reply there as well, in addition to Email.
WhatsApp optional
Format: +country code and number (e.g., +380XXXXXXXXX).

By clicking this button, you agree to data processing.