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
form-labelsEvery form input must have an associated label.autocomplete-attributeRequire autocomplete on identity and payment form fields.aria-validationForbid invalid ARIA roles and unknown aria-* attributes.
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 →