The MUI documentation has a table of benchmark cases here. But the different cases aren't clear to me. Please explain what the differences are with real examples between the following:
<Div>
<StyledDiv>
<Box sx={…}>
I am assuming these correlate to:
<Box>
<Box mb={2}>
<Box sx={{mb:2}>
If this is correct and you are focusing on performance, then you should favor system properties over the sx
property. However, only a few MUI components support system properties
while all support sx
. This has led my team to using Box
in combination with the component
property thinking it is better for performance, 181ms instead of 296 ms. For example,
- Instead of
<Paper sx={{mb:2}}>
- We use
<Box component={Paper} mb={2}>
Inspecting the components using React Dev Tools, it seems like the system properties are converted directly into the sx
property meaning my team's decision is not better for performance and does not correlate to <StyledDiv>
.
The Box
with mb={2}
passed as a property in turn renders a div styled
that has mb:2
inside the sx
property.
It is also worth noting, that the <Box component={Paper} mb={2}>
approach rather than <Paper sx={{mb:2}}>
while it doesn't create additional DOM elements there are additional components.
versus
So should you favor system properties
over the sx
property or not?