Consistency

missing-states

Detect form elements missing error, disabled, or required handling.

Flags interactive elements that ship without disabled, aria-invalid, or aria-required handling. Missing states is what separates a demo input from a production input — and what AI agents most often leave for "later".

Behavior

  • Fixable: No.
  • Suggestions: Yes.

Options

["error", {
  "requireDisabled": true,
  "requireAriaInvalid": true,
  "requireAriaRequired": true,
  "formElements": ["input", "select", "textarea", "button"]
}]

Examples

Bad:

<input type="text" />

Good:

<input type="text" disabled={isDisabled} aria-invalid={hasError} aria-required />

Related rules

Use it

Enable missing-states in your eslint.config.js:

import deslint from '@deslint/eslint-plugin';

export default [
  {
    plugins: { deslint },
    rules: {
      'deslint/missing-states': 'error',
    },
  },
];

Found a false positive? Report it on GitHub →

Back to all rules