At most one form library
Why it matters
Two form libraries mean two validation APIs, two error-display conventions, and two mental models for managing touched/dirty/submitting state. Developers copy-paste the wrong pattern, accessibility attributes drift between screens, and form-level test helpers multiply. Users experience inconsistent error messaging and focus behavior across forms, and your bundle ships both runtimes to every page even when only one is used on that route.
Severity rationale
High because inconsistent form behavior directly erodes accessibility compliance and user trust during critical conversion flows.
Remediation
Consolidate on one library, typically react-hook-form for shadcn projects. Run grep -rl "from 'formik'" src/ to enumerate every holdout, then rewrite each form component to the canonical pattern. Remove the loser with npm uninstall formik. Keep a reference implementation in src/components/forms/example-form.tsx that future contributors can copy, and delete any legacy resolver adapters from package.json once the migration is complete.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Multi-Session Drift Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from ai-slop-code-drift·automated