How Framework Sprawl Happens
Year 1: "We'll use Material UI, it has everything."
Year 2: "This new feature needs Radix for the dropdown."
Year 3: "The contractor used Chakra, we'll migrate later."
Year 4: "Why is our bundle 2MB?"
See it in action
Types of Sprawl We Detect
Multiple UI Libraries
Using Radix AND Chakra AND MUI in the same project
Impact: Massive bundle bloat, inconsistent UX
Framework Mixing
React components alongside jQuery or vanilla JS
Impact: Hydration issues, maintenance nightmare
CSS-in-JS Sprawl
Styled-components, Emotion, AND Tailwind together
Impact: Conflicting styles, specificity wars
State Management Chaos
Redux + MobX + Zustand + Context in one app
Impact: Unpredictable state, debugging hell
The Bundle Size Impact
Using all three = ~465KB just for UI components.
Pick one = ~45-120KB depending on choice.
Plan Your Migration
{
"primary": {
"library": "@radix-ui",
"imports": 47,
"recommendation": "Keep as primary"
},
"secondary": [
{
"library": "@chakra-ui/react",
"imports": 12,
"components": ["Button", "Modal", "Toast"],
"migrationEffort": "medium",
"recommendation": "Replace with Radix equivalents"
},
{
"library": "@mui/material",
"imports": 3,
"components": ["DataGrid"],
"migrationEffort": "low",
"recommendation": "Replace with @tanstack/table + Radix"
}
]
}