HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mui
material-ui
JavaScript2014–2026
mui / material-ui

material-ui

Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.

27Distinct people
31Mentions
1Explicit recommenders
99.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

My feeling as a frontend dev was that Material Design You is just run of the mill enshittification at Google. Around the time that came out, Google also started to hide more…

solardev used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year31 dated mentions

Observed mentions: 2014-11-07 15:49:11 UTC to 2026-01-07 12:06:17 UTC.

0123452014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC110
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC413
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC202
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC514
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC202
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC523
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC523
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC000
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC110

What Hacker News says

31 sources

Show HN: Typique – a bundler-independent, zero-runtime CSS-in-TS library

Hi HN! I’ve been following zero-runtime CSS-in-JS/TS libraries for a while and noticed that most of them end up overwhelmed by bundler compatibility issues. A good summary of these problems is in the final status report [1] of Pigment CSS — MUI’s attempt in this space. As someone working on TypeScript tooling, I started wondering whether this problem could be approached from a different angle: instead of relying on bundler plugins, use TypeScript types to define styles, and TypeScript tooling to provide locally scoped class and CSS variable names. This led to Typique — a library built as a TypeScript plugin. It provides IDE integration (completion, diagnostics, quick fixes) and emits plain CSS without any dependence on bundler or framework. It’s early, but already usable; I’ve been using it in a couple of personal projects. Feedback, ques
Read the rest
tions, and skepticism are very welcome. Thanks for reading. [1] https://github.com/mui/material-ui/issues/45759#issuecomment...
2 points · Open discussion
> [0, 1, 2, -1, 10, 11, 12, 13, 14, -1, 26, 27, 28] What is that supposed to represent in terms of pagination? Are they cursors...? > I didn't think the code that generated the HTML from that was really worth testing because it was so superficial. For what it's worth (as a frontend person), pagination is traditionally one of the trickier things for us to make sure is working correctly. Off-by-one mistakes can happen for example (especially with zero-indexed items). Or sometimes the prev/next buttons don't correctly use the same math as the page 1, 2, 3, etc. buttons. It gets even harder if you don't know the total length in the beginning, or if you allow multiple page sizes or sorts/filters, or use lazy loading, etc. For those reasons I try to use a ready-built lib like MUI where all that is already tested internally (like https://github
Read the rest
.com/mui/material-ui/blob/next/packages/mui-ma... or https://github.com/mui/material-ui/blob/next/packages/mui-ba...), but we still add our own automated and manual tests in our own usages. But then again I'm bad at math and division, lol, so maybe it's just my own weakness.
In Ask HN: Is there a React test framework that actually works?
solardev·Jan 14, 2024Recommendation phrase
My feeling as a frontend dev was that Material Design You is just run of the mill enshittification at Google. Around the time that came out, Google also started to hide more buttons in the UI, made the drop down shade much more clumsy, got rid of the excellent Pixel fingerprint scanner, etc. It felt to me like some other busy body design team had to show innovation and so made Material You adopt your wallpaper colors (in some ugly variation). It was like the MySpaceification of Android. Material Design spawned some of my favorite projects, like MUI: https://mui.com/ That tracks Material v2 (pre you) and IMO is the best web UI currently available. There's some tentative work on adding Material You, but I hope they don't. It's a step backward IMO, form over function and against the original spirit of Material as a usability design library.
Read the rest
In Ask HN: What's the point of Material Design You?
Some libraries will create code mods to assist in transitions. For example I've used some MUI codemods in the past to make transitions to newer versions of the library more seamless [1]. There are also codemods to say move from underscore to lodash and vice versa (been a while and can't find them at the moment). ASTs [2] are pretty cool in this regard. Especially if you write your code in a manner that easier to automate against. [1] https://github.com/mui/material-ui/blob/master/packages/mui-... [2] https://en.wikipedia.org/wiki/Abstract_syntax_tree
In Why is front-end development so unstable? (2018)
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! The last time we were on HN was 7 years ago with https://news.ycombinator.com/item?id=8582439! 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. In v5, we have focused on improving the customization experience, making the components as flexible as possible. You can find the following improvements: - We have a new rebrand that distinguishes ourselves from Material Design: https://mui.com/blog/material-ui-is-now-mui/. - We have moved from JSS to emotion, using the styled-components API as a primitive. This was a highly requested change from the community: https://github.com/mui-org/material-ui/issues/
Read the rest
6115 - We have introduced styling props, and a sx prop: https://mui.com/system/basics/ - We have a growing set of alpha unstyled components, e.g. https://mui.com/components/autocomplete/#useautocomplete - We have incorporated a company, sustaining over 10 people. - We have introduced an advanced data grid: https://mui.com/components/data-grid/demo/ Thanks!
In Material-UI is releasing v5 and rebrands to mui.com
I'm trying to respond in good faith, even though I feel you unnecessarily resorted to trying to condescend me. You wrote: > there is a difference between two APIs > that both still work and having one > stable API. As I explained, "this is the direct effect of high levels of backwards compatability. You can't change APIs; you have to create new APIs and then deprecate previous APIs." I thought my point was obvious, but will explain it with more words: If never making breaking changes to APIs is a strict requirement, all API changes must be additive. That means backwards compatibility entails the existence of more than one API to do the same thing. It seemed like you were insisting that there should be "one stable API" that never needs changes instead of "two APIs that both still work" and this is unrealistic for something that has
Read the rest
existed and responded to changes in use for ~25 years. > if it has any kind of external > dependencies or it relies on anything > that could change about the language, > platform or other parts of your own > code, then there is always a risk that > it will later break This is a useful point. For dependencies that never make breaking changes you will be OK. But if the dependencies you have are likely to change and likely to be upgraded elsewhere in the codebase and potentially might make breaking changes, we should consider them a risk to the project. I agree that this should be highlighted -- but, in the context of what you were talking about, which was with regards to code that uses old features of React, you are incorrect. As I mentioned to you, compatibility packages exist for all old React lifecycle methods and deprecated patterns. Therefore, by design, you are not being forced to upgrade the patterns in old parts of your codebase. I am trying to make specific claims about concrete things that I can evidence. The existence of compatability packages for features that have been deprecated for 5 years invalidates a specific argument about needing to upgrade old React code due to changes in the API. > You've made several claims like that, > but in the absence of data there's no > way to know whether you're correct. > For example, preset-env has been in > production for 3+ years now and had > an extended beta/RC phase before that. > It's true that it defaults to ES5 if > you don't configure it, but the Babel > docs explicitly recommend that you do. > [..] > But it will take more than an unsupported > assertion to convince me that this has > been the norm for most web development > for quite some time. If it defaults to ES5 why are you asking for me to provide evidence as to whether companies have generally targetted IE11? It is the default; it is very unlikely that there is a majority of people that are configuring it... > But it will take more than an unsupported > assertion to convince me that this has > been the norm for most web development > for quite some time. My claims are the following: 1. ES5 has been the default for front-end packages published to NPM since it was released (https://twitter.com/_developit/status/1289317757146693632). (I'm linking to Jason Miller's tweets since he has been the one most obssessively pushing for this to change. The problem we've all been having is that the `package.json` fields do not make it explicit what syntax a package is using.) 2. IE11 is in rapid decline (https://twitter.com/TheRealNooshu/status/1348955568459968515) and only recently have big corporations dropped support for it (Atlassian (March 2020): https://blog.developer.atlassian.com/retiring-ie11-support-f... ; Microsoft 365 (August 2021): https://docs.microsoft.com/en-us/lifecycle/announcements/m36... ; LinkedIn, Twitter, etc (2020): https://twitter.com/swyx/status/1260627626739130369). As I said "most only dropped IE11 this year". I guess I was off by one year, but I was talking about recent announcements. For context, this was to evidence my opinion that the JavaScript community has been very slow moving and careful to output code that is executable by old browsers to the extent that we've supported a browser released in 2013 and used a syntax released in 2009. > And these kinds of things are advanced > tooling, in your view? Check back to my text and you will see that I made no such claim. You claimed that "the language doesn't provide much to help with building large-scale software and maintaining it over the long term" so I demonstrated that we have all of the necessary tooling to do so and invalidated this. > We had those in our IDEs for building > desktop software back in the last > century. Except they were automating > rewriting millions of lines of code [...] Can you point me towards examples of the usage of AST rewriting tools that are actively being used by open-source library maintainers in other ecosystems to help their consumers do upgrades in large code-bases (e.g. I can see that `clang` has AST tooling, but I don't see examples online of this being widely used: https://devblogs.microsoft.com/cppblog/exploring-clang-tooli...). Within the JavaScript ecosystem this is quite popular (1. https://github.com/reactjs/react-codemod ; 2. https://github.com/mui-org/material-ui/tree/HEAD/packages/ma... ; 3. https://github.com/emotion-js/emotion/tree/main/packages/esl... ; etc.) Teams that maintain huge codebases have tooling to safely automate their upgrades and the best library maintainers provide their consumers with these AST transformations. > Don't tell that to anyone who uses > React Router. Or who builds their app > with Webpack. Or Babel, as you mentioned. I agree that those particular libraries haven't been maintained well (they make extraordinarily large changes in major versions to the extent that sometimes it might as well be a whole new library). > I encourage you to look at what is considered the norm > and acceptable practice in fields where better quality > and greater longevity are more highly valued. If we > built security libraries or the embedded software > controlling industrial machinery the way a lot of > online companies build their web apps, we'd be lucky > to survive the night. I think your argument has been a moving target. Originally, you pointed your finger at React saying it has a stability problem, so we showed you that they've been incredibly good at keeping backwards compatibility and that you could upgrade your version of React to regain access to the ecosystem's newest libraries built on top of new APIs without needing to rewrite your legacy code through the usage of compatability packages. Then you implied that it was an overall JavaScript ecosystem stability problem, so I showed you the level of effort that TC39 and the brower maintainers go to keep backwards compatability. And I showed you that most in our ecosystem have been carefully supporting the lowest commmon demominator users for almost a decade by producing web apps that work in IE 11 and packages that first-class ES5 syntax, and gave you examples of big webapps that only recently broke from this tradition. Now you are pointing at exceptional cases involving particular poorly maintained libraries and tools, and telling me that we lack tooling to deal with scale (which is a separate concern). If you don't think Webpack and React Router are good citizens with regard to their API stability and this annoys you because you like to be on the latest/greatest then don't use them. I and many others also specifically avoid these libraries/tools and yet don't paint the whole ecosystem with this one brush. (On the topic of tooling, it has only been very recently that we've been getting tooling that can deal with high-scale development, however it is happening now.) * * * I think that possibly what you're noticing is the second-order effect of more and more usages of JavaScript and web technologies causing new APIs to steadily be added to the web with the old APIs remaining forevermore. The original APIs were made to display and navigate documents. As the years have passed more and more APIs have been released to support more complex types of applications and this resulted in overall churn in user-space as library creators iterate to produce better domain-specific APIs. We provide a high-level of user-facing stability despite this. I don't think it is fair to compare what we are trying to achieve to what is important when controlling industrial machinery. The use cases of that are much more static, while in 2021 people on the Web are creating tools like Figma (https://www.figma.com/), Office 365 (https://www.office.com/), Buerli (https://buerli.io/), and Spline (https://spline.design/). This is very far diverged from where we started and the fact it has been achieved without breaking the web is impressive. It's also quite clear to me that high-quality tools like these aren't achievable without the creation of impressive and scalable tooling (some of which has been released to the public). OK, let's agree to disagree...
In Modern Javascript: Everything you missed over the last 10 years (2020)
Read the rest
In Finding Critical Open Source Projects
Just as an example, the code for Button in both frameworks: ========================================== Chakra: 215 lines https://github.com/chakra-ui/chakra-ui/blob/master/packages/... Typical comment line in chakra is clear and useful: "If added, the button will show an icon after the button's label" ========================================== Material: 415 lines with a lot of boilerplate: https://github.com/mui-org/material-ui/blob/master/packages/... Typical comment line in material is redundant and overly specific: Styles applied to the root element if `size="large"` and `variant="outlined"`
In Chakra UI – Modular and accessible UI components for React apps

Showing the 15 most recent of 31 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.