DEV Community

Cover image for Why you should NOT use Material-UI

Why you should NOT use Material-UI

GaelFerrand on February 16, 2021

Introduction Material-UI is a popular components library (a competitor of Reactstrap that unifies React and Material Design, the desig...
Collapse
 
gmartigny profile image
Guillaume Martigny

It would be very interesting to dive in the "Why". What is the cause of this performance loss ? Is it due to <Box> only ? Can you avoid it somehow ? etc

Collapse
 
gaelferrand profile image
GaelFerrand

I agree 100%! But I wanted to keep this article short (and didn't quite succeed did I?). Material for another article I guess ?

Collapse
 
mengboi profile image
MengBoi

It's quite short and precise. I love it.

Collapse
 
eddielewis_92 profile image
Eddie Le

Great post @gaelferrand ! I wish I read this earlier so that I wouldn't feel like banging my head on the wall. Thanks to React MUI, I surprised myself finding out my to-be-upgraded portfolio site performance score (lighthouse) were 46% and 6% on desktop and mobile respectively.

Frankly, I just have no idea where to start fixing after spending lots of time with MUI. Maybe I should be seriously thinking about rewriting all those styles using good old SCSS(?!)🤔

Collapse
 
bilalmohib profile image
Muhammad Bilal Mohib-ul-Nabi

Brother use tailwind css you will be amazed by performance

Collapse
 
nodejsdeveloperskh profile image
node.js.developers.kh

But what about reinventing the wheel again and again for each project? Do not wanna spend too much time on this things that does not make too much difference when thinking about them in terms of business value and delivering something to the end user. It is just taking too much time to write, test, and let's not forget to maintain.

Thread Thread
 
bilalmohib profile image
Muhammad Bilal Mohib-ul-Nabi

The way to use is such that whenever you need a component specific to a thing which is used very frequently such that a Accordion or something like that then only use that component from mui otherwise use only tailwind css. Thats it.

Collapse
 
antialias profile image
Thomas Hallock

I'm disappointed that your investigation stops as soon as you remove the MUI components, and that without any further investigation, you decide that MUI is just a bad library and should be avoided by everyone.

Did you put any effort into figuring out why the component was killing rendering performance? I'm guessing you had some variable that was affecting the JSS object, which in turn was causing the dynamic stylesheets to be updated on every scroll event. Just a guess.

Collapse
 
bilalmohib profile image
Muhammad Bilal Mohib-ul-Nabi

What I do is nowadays i dont use mui at every component. Using every component of mui would make application too slow its 100% right so instead i try to avoid to use mui as much as i can instead i use tailwind css as much as i can and only use mui special stylish components like textbox or sidebar or buttons which has ripple effect instead I dont use mui. I prefer tailwind css more.

Collapse
 
isggwp profile image
Indra Susila

everybody know mui has

  • lack of documentation about custom styles components,
  • lack performance improvement
Collapse
 
gaelferrand profile image
GaelFerrand • Edited

Thanks for the kind words, and of course, there's a bit of click-baiting here, you're a 100% right, Material-UI is by no means a dead-end. That said, I think it's important to keep in mind that behind its very practical and polished components-library, it has performances issues. Some teams might consider it too big of an issue to go with it!

Collapse
 
joedotnot profile image
joedotnot

It is a dead-end for me, in the same way, Angular is a dead-end for me.. I made the conscious decision to ignore anything that says "material-UI" or "Angular" and focus my time wisely on other things; Using MUI is like learning a new language of "tags". I am happy with plain Html / jsx and CSS. (or another simpler framework like plain bootstrap)

Collapse
 
nodejsdeveloperskh profile image
node.js.developers.kh

Hmm, I am onboard with bootstrap but do not think we can leverage Bootstrap to develop and ship features and business values as fast as MUI with a fairly good enough acceptable UI/UX. Can we? Just looking for an answer about what others do if they do not use MUI.

Collapse
 
miketalbot profile image
Mike Talbot ⭐

I had a similar problem with Box etc, mostly based on the fact that the way MUI uses JSS causes vast numbers of things to be added as styles, constantly... In fact in my app "insertBefore" for a style was taking 60% of the rendering time, and goodness knows how much the rest was doing. I found a reasonably easy fix by replacing box with my own version and changing makeStyles from MUI to my own version that caches better. Performance is massively improved.

Collapse
 
jwp profile image
John Peters

Material UI does have a github site and they promise to watch all issue submissions. Please create an issue.

Collapse
 
gaelferrand profile image
GaelFerrand

Performance issues have been submitted before (I put the link of a PR in the article). They're working on it and hopefully sometime soon the lib will be solid

Collapse
 
ramirezsandin profile image
Jorge

I'll start considering other options for future projects. More than 42 simple items in a list and you'll start noticing the performance issues.

If you are thinking about using infinite scroll with MUI forget about that, it's going to be horrible performance and supper laggy.

I've even tried to use some virtualization options, but they are laggy per se if the items have a little bit of more than 2 nodes in the inner layout.

Really unhappy with this 😪

Collapse
 
cadams profile image
Chad Adams

I don’t use it because I don’t want my site to look like google. Also not a fan of material design.

Collapse
 
nodejsdeveloperskh profile image
node.js.developers.kh

Then antd? I am just really looking for an answer about what others do, you cannot reinvent the wheel again and again, can you? I really need to find a good lib to use in my app, any suggestion?

Collapse
 
molnfront profile image
Göran Svensson

And now that it's 2022 and it's called MUI, how does it compare now?

Collapse
 
oliviertassinari profile image
Olivier Tassinari • Edited

Material UI v5 was benchmarked to be much faster than Material UI v4 in the case considered by the blog post. You can read this comment for more details: github.com/mui/material-ui/issues/....

(MUI is the name of the organization, Material UI is one of the open source projects)

Collapse
 
bilalmohib profile image
Muhammad Bilal Mohib-ul-Nabi

What I do is nowadays i dont use mui at every component. Using every component of mui would make application too slow its 100% right so instead i try to avoid to use mui as much as i can instead i use tailwind css as much as i can and only use mui special stylish components like textbox or sidebar or buttons which has ripple effect instead I dont use mui. I prefer tailwind css more.

Collapse
 
__manucodes profile image
manu

Yes,
I agree with you...
Have you tried Vuetify?

Collapse
 
zhnedyalkow profile image
Zhitomir Oreshenski

This comment is irrelevant with this post. Thanks

Collapse
 
talorlanczyk profile image
TalOrlanczyk

As far as i know vuetify is for Vue only

Collapse
 
gaelferrand profile image
GaelFerrand

Does it work with React ?

Collapse
 
nodejsdeveloperskh profile image
node.js.developers.kh

So what would you suggest? build the wheel again and again or coming up with our own framework? I am just thinking of a way to work faster on what matter and not spend too much time on what does not.