Hi HN. I'm one of the creators of MUI. The whole team is very excited to be sharing the results of the last two years of our work!<p>The last time we were on HN was 7 years ago with <a href="https://news.ycombinator.com/item?id=8582439" rel="nofollow">https://news.ycombinator.com/item?id=8582439</a>! Back then, the community got hooked up in the integration of two shiny new trends: React and Material Design. A lot has changed in the React community since then.<p>In v5, we have focused on improving the customization experience, making the components as flexible as possible.
You can find the following improvements:<p>- We have a new rebrand that distinguishes ourselves from Material Design: <a href="https://mui.com/blog/material-ui-is-now-mui/" rel="nofollow">https://mui.com/blog/material-ui-is-now-mui/</a>.<p>- We have moved from JSS to emotion, using the styled-components API as a primitive. This was a highly requested change from the community: <a href="https://github.com/mui-org/material-ui/issues/6115" rel="nofollow">https://github.com/mui-org/material-ui/issues/6115</a><p>- We have introduced styling props, and a sx prop: <a href="https://mui.com/system/basics/" rel="nofollow">https://mui.com/system/basics/</a><p>- We have a growing set of alpha unstyled components, e.g. <a href="https://mui.com/components/autocomplete/#useautocomplete" rel="nofollow">https://mui.com/components/autocomplete/#useautocomplete</a><p>- We have incorporated a company, sustaining over 10 people.<p>- We have introduced an advanced data grid: <a href="https://mui.com/components/data-grid/demo/" rel="nofollow">https://mui.com/components/data-grid/demo/</a><p>Thanks!
I absolutely love this library. I've used several ui toolkits before, and mui is my favorite. It's consistent, very well made, focused on react and responsible with not introducing unexpected breaking changes (unlike another popular library which I used to use).<p>Also, I was surprised how well the codemod worked with the migration to v5. I've migrated a large code base and almost didn't have to do anything.<p>The only thing I'm not a big fan of is that using the new 'sx' prop, the styling becomes very specific to the library. But I guess it's more of an issue with the fragmented state of styling in react. I think it'll stick with the 'styled' api since it's more generic.<p>Great job and thank you!
Having used Material UI in the turbulent days of v1, I can't say I've had a good experience.<p>- Custom styling with JSS was an underdocumented nightmare<p>- The Grid system had many gotchas, especially with flexible columns in flexbox<p>- "Private" components had to be used or replaced in Table components to enable sorting<p>- JSS generated classnames changed if you included material-ui-based components in a separate library<p>I'm not really trying to harp on the developers here, but I've had to re-implement basically all the material-ui components I've had to use, because it was infeasible to update the library due to the amount of changes required.
Reading through the styling part and working with mui4 and other widget libraries in the past - and seeing the 5 solutions listed that basically do the same thing - holly shit how did it get to this point...<p>I got the value of JSX even if it felt messy - but the css-in-js becoming popular on frontend is one of the why I switched to full backend roles now.<p>And when he says that changing the implementation of a styling solution improves component performance 5x ... at what point is it OK for a fancy styling abstraction layer that serves no real purpose (it was just as shit to customise as any other solution, doubt it made people significantly more productive, and they said it was a maintenance burden to maintain abstraction layers) suck up that much performance ? Even the "fast" path is order of magnitude slower compared to good old CSS...
I think Material UI (and the whole ecosystem of Javascript libraries of which it's a part) are drastically underestimating the costs that churn imposes on their users. I say this as a developer of a codebase currently on material-UI v3, looking at v4 and v5, having bounced off the task of upgrading a few times and currently thinking it's probably not worth it.<p>Material-UI v3 had an issue (which I think v4 and v5 probably still have?) where CSS-in-JS winds up retranslating Javascript blocks into CSS and adding them to every SSR, and then retranslating them again on the client as part of the pageload, which wasn't performant enough for us. So we set up a system where we would pregenerate a static stylesheet with deterministic names, and serve that as a cacheable resource. Then v4 comes along and all of the CSS-in-JS related wiring is different, so our static stylesheet thing would have to be rewritten, and then v5 comes along and it's been redone <i>again</i>, and it doesn't look like I want to touch this without some signal that it's stabilized.
I really like the theme you are using for the new documentation and the customized themed components you are showing on the landing page <a href="https://mui.com/" rel="nofollow">https://mui.com/</a>. Are these themes publicly available somewhere?
When I read this quicly I thought 'Material-UI is merging with Xiaomi's MIUI [1]' - and I suspect I will not be the only one making this mistake...<p>[1] <a href="https://home.miui.com/" rel="nofollow">https://home.miui.com/</a>