At most one icon library
Why it matters
Two icon libraries ship two SVG sprite sheets, two sets of stroke-width defaults, and two sizing APIs. Users see icons at different visual weights depending on which component rendered them — Lucide's 2px strokes next to React Icons' Font Awesome 1px strokes look mismatched at the same pixel size. Bundle size also grows unnecessarily since tree-shaking rarely eliminates a full icon package, and screen readers receive inconsistent aria-hidden and role attributes.
Severity rationale
Low because icon drift is cosmetic and bundle-weight, not functional, but it still shows on every page load.
Remediation
Pick one library (Lucide and Heroicons both work well for modern React apps) and migrate every import. Enumerate usage with grep -rl "from 'react-icons'" src/, then replace each icon one-for-one with a lucide-react equivalent. Remove the loser: npm uninstall react-icons. Document the canonical import path in src/components/ui/README.md so new contributors pick the right library on their first PR.
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