Skip to main content

Rules Overview

CognitiveLint ships 17 rules across 6 UX dimensions. Each rule is grounded in published UX research and outputs findings with a confidence score that modulates the severity deduction.

Cognitive Load — 30% weight​

Rules that detect interfaces overwhelming working memory.

cognitive-load/excessive-primary-actions​

Too many primary call-to-action buttons on a single view overwhelms users with choice paralysis (Hick's Law).

Default severity: High
Default threshold: 2 primary actions
Option: maxPrimaryActions (default: 2)


cognitive-load/long-forms​

Forms with too many fields exceed working memory limits (Miller's Law: 7±2 items).

Default severity: Medium
Default threshold: 7 fields
Option: maxFields (default: 7)


cognitive-load/filter-overload​

Too many filter controls create decision paralysis and obscure the core content.

Default severity: Medium
Default threshold: 5 filters
Option: maxFilters (default: 5)


cognitive-load/dense-tables​

Wide tables with excessive columns force horizontal scrolling and make scanning impossible.

Default severity: Medium
Default threshold: 8 columns
Option: maxColumns (default: 8)


Trust & Confidence — 20% weight​

Rules that catch UI undermining user trust.

trust/unexplained-disabled​

Disabled UI elements without visible explanation violate Nielsen's Heuristic #1 (Visibility of System Status). Users can't tell if it's a bug or intentional.

Default severity: High


trust/ownership-ambiguity​

UI that doesn't clearly indicate which user or entity owns displayed data creates anxiety, especially in multi-tenant products.

Default severity: Medium


trust/missing-ownership​

Data tables and lists that show records without an owner indicator make it impossible to distinguish "mine" from "shared" or "theirs".

Default severity: Low


Feedback — 15% weight​

Rules that catch missing system status signals.

feedback/missing-loading-state​

Async operations (useQuery, useSWR, fetch, await) without a loading state leave users wondering if their action registered.

Default severity: High
Detects: isLoading, loading, isPending, isFetching patterns


feedback/missing-empty-state​

Data containers without an empty-state message leave users staring at a blank screen with no explanation.

Default severity: Medium


feedback/missing-success-feedback​

Mutations (useMutation, form submissions) without visible success confirmation leave users unsure if their action worked.

Default severity: Medium
Detects: toast, notification, snackbar, onSuccess, alert patterns


feedback/no-progress-indicator​

Long operations without progress indicators violate Heuristic #1 — users can't estimate how long to wait.

Default severity: Low


Discoverability — 15% weight​

Rules that find hidden or inaccessible features.

Data-heavy views (tables, lists) without a search or filter mechanism force users to scroll through potentially hundreds of records.

Default severity: Medium


discoverability/hidden-primary-action​

The most important action buried inside a dropdown or overflow menu violates Heuristic #4 (Consistency and Standards) — primary actions should always be visible.

Default severity: High


discoverability/empty-navigation​

Navigation items that are empty or have no content create dead ends in the user journey.

Default severity: Low


Consistency — 10% weight​

Rules that catch terminology inconsistency.

consistency/inconsistent-button-labels​

Submit actions labeled differently across forms (Save, Submit, Confirm, Apply) violate Heuristic #4 (Consistency and Standards) and increase cognitive friction.

Default severity: Medium


Error Prevention — 10% weight​

Rules that flag dangerous UX patterns.

error-prevention/destructive-no-confirm​

Delete, remove, or irreversible actions without a confirmation dialog violate Heuristic #5 (Error Prevention). One misclick can cause data loss.

Default severity: Critical


error-prevention/no-undo​

Destructive operations without an undo mechanism leave users with no recovery path.

Default severity: High


error-prevention/modal-nesting​

Modals opened from within other modals create confusing navigation stacks. Users lose orientation and the back button breaks.

Default severity: High
Known limitation: May false-positive on Radix UI, Headless UI, or PatternFly component library patterns


error-prevention/confirmation-fatigue​

Excessive confirmation dialogs throughout a single flow cause users to click through without reading (the "click OK" reflex), defeating their purpose.

Default severity: Medium


Disabling rules​

In your config file:

export default {
rules: {
'error-prevention/modal-nesting': 'off',
'trust/missing-ownership': 'off',
},
};