{"slug": "base-ui", "name": "Base UI", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 4, "commenters": 9, "warners": 1, "score": 3.663, "rising": -1.31, "first": "2025-12-12", "latest": "2026-09-14", "why": "base ui has generally better primitives and is being actively developed", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 3, "compare": 1, "warn": 1}, "spark": [0, 0, 0, 2, 0, 1, 0, 0, 1, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "base ui has generally better primitives and is being actively developed", "kind": "", "icon": true, "domain": "base-ui.com", "github_repo": null, "official_url": "https://base-ui.com/", "pricing": "", "aliases": ["Base UI"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 780664496, "item_id": 48791531, "url": "https://news.ycombinator.com/item?id=48791531", "by": "Topfi", "date": "2026-07-04", "stance": "recommend", "quote": "found the primitives very pleasant to work with", "excerpt": "That's great. Started using Base UI early on via 9ui [0] and found the primitives very pleasant to work with, especially if one wants to compose more complex components from other Base UI components. Maybe Shad can reduce some of the dependencies they rely on now. [0] https://www.9ui.dev", "context": "", "use_case": "UI component primitives", "switched_from": "", "story": "Shadcn/UI now defaults to Base UI instead of Radix"}, {"id": 767303009, "item_id": 47956438, "url": "https://news.ycombinator.com/item?id=47956438", "by": "try-working", "date": "2026-04-29", "stance": "recommend", "quote": "you could just check out shadcn, coss, base ui etc. they have component libraries to study", "excerpt": "you could just check out shadcn, coss, base ui etc. they have component libraries to study", "context": "", "use_case": "", "switched_from": "", "story": "Laws of UX"}, {"id": 752188609, "item_id": 47011788, "url": "https://news.ycombinator.com/item?id=47011788", "by": "nickradford", "date": "2026-02-13", "stance": "recommend", "quote": "base ui has generally better primitives and is being actively developed", "excerpt": "Hey! I didn't realize this wasn't even posted by the creator of the library. Building shit and launching is hard, don't let it dissuade you from putting stuff out there though! Also, check out base-ui. Radix is fine, but base ui has generally better primitives and is being actively developed", "context": "", "use_case": "", "switched_from": "", "story": "LiftKit \u2013 UI where \"everything derives from the golden ratio\""}, {"id": 751301824, "item_id": 46956364, "url": "https://news.ycombinator.com/item?id=46956364", "by": "re-thc", "date": "2026-02-09", "stance": "recommend", "quote": "Check out Base UI (or React Aria) instead.", "excerpt": "> Rebuilding with radix primitives Check out Base UI (or React Aria) instead.", "context": "", "use_case": "", "switched_from": "", "story": "LiftKit \u2013 UI where \"everything derives from the golden ratio\""}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 740175136, "item_id": 46260946, "url": "https://news.ycombinator.com/item?id=46260946", "by": "troupo", "date": "2025-12-13", "stance": "warn", "quote": "The example in Field is even more egregious", "excerpt": "> The point is that it works out of the box (i.e. with no additional styling) Then you wouldn't have to remove default styling for it to \"work out of the box\". > I don't understand your argument. The default styling that you have to remove for the input to stop being invisible is just yet another example in a long, long, long line of CSS design systems that absolutely hate text input and their users: https://base-ui.", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Base UI v1.0 Unstyled UI Components from the Creators of Radix and MUI"}]}], "who": [], "tags": [], "use_cases": ["ui component primitives", "unstyled ui components"], "compared": [{"slug": "radix", "name": "Radix", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "shadcn-ui", "name": "shadcn/ui", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=46952118", "title": "LiftKit \u2013 UI where \"everything derives from the golden ratio\"", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=46245401", "title": "Show HN: Base UI v1.0 Unstyled UI Components from the Creators of Radix and MUI", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49699159", "title": "Show HN: Neobrutalism.dev \u2013 Just added Base UI support and added new color theme", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48791328", "title": "Shadcn/UI now defaults to Base UI instead of Radix", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48196556", "title": "Show HN: Cladd \u2013 React UI kit for editors, dashboards, and dense app UIs", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47951137", "title": "Laws of UX", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"neutral": 1, "warn": 1}, "2026-01": {"neutral": 1}, "2026-02": {"recommend": 2}, "2026-03": {}, "2026-04": {"recommend": 1}, "2026-05": {"compare": 1}, "2026-06": {}, "2026-07": {"recommend": 1}, "2026-08": {}, "2026-09": {"neutral": 1}, "2026-10": {}}, "quotes": [{"id": 795218320, "item_id": 49701145, "url": "https://news.ycombinator.com/item?id=49701145", "by": "wpm", "date": "2026-09-14", "stance": "neutral", "quote": "64 components, charts and star shapes for React and Tailwind v4. Built on shadcn/ui and Base UI.", "excerpt": "Neo doesn't mean it can just be a completely different thing, it means its a modern take on the same thing from before but slightly evolved. Neo-Classicism still looks like Classicism. Neo Nazis are still Nazis. If I create something called Neo-Cuisine, you'd expect the result to be edible. If I see something calling itself \"Neo-Brutalist Architecture\", I'd expect it to look like Brutalism, or have some hallmark of t", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Neobrutalism.dev \u2013 Just added Base UI support and added new color theme"}, {"id": 780664496, "item_id": 48791531, "url": "https://news.ycombinator.com/item?id=48791531", "by": "Topfi", "date": "2026-07-04", "stance": "recommend", "quote": "found the primitives very pleasant to work with", "excerpt": "That's great. Started using Base UI early on via 9ui [0] and found the primitives very pleasant to work with, especially if one wants to compose more complex components from other Base UI components. Maybe Shad can reduce some of the dependencies they rely on now. [0] https://www.9ui.dev", "context": "", "use_case": "UI component primitives", "switched_from": "", "story": "Shadcn/UI now defaults to Base UI instead of Radix"}, {"id": 771145171, "item_id": 48196573, "url": "https://news.ycombinator.com/item?id=48196573", "by": "nolimits4web", "date": "2026-05-19", "stance": "compare", "quote": "Headless primitives like Radix or Base UI hand you behavior", "excerpt": "Some more on the why and how - Cladd started as the internal UI inside t0ggles (my project-management tool) because none of the popular options handled dense application UIs well. Most UI kits hand you the same surface color at every nesting level. Put a card inside a card inside a popover and you end up writing one-off CSS to fake the depth contrast. Headless primitives like Radix or Base UI hand you behavior and as", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Cladd \u2013 React UI kit for editors, dashboards, and dense app UIs"}, {"id": 767303009, "item_id": 47956438, "url": "https://news.ycombinator.com/item?id=47956438", "by": "try-working", "date": "2026-04-29", "stance": "recommend", "quote": "you could just check out shadcn, coss, base ui etc. they have component libraries to study", "excerpt": "you could just check out shadcn, coss, base ui etc. they have component libraries to study", "context": "", "use_case": "", "switched_from": "", "story": "Laws of UX"}, {"id": 752188609, "item_id": 47011788, "url": "https://news.ycombinator.com/item?id=47011788", "by": "nickradford", "date": "2026-02-13", "stance": "recommend", "quote": "base ui has generally better primitives and is being actively developed", "excerpt": "Hey! I didn't realize this wasn't even posted by the creator of the library. Building shit and launching is hard, don't let it dissuade you from putting stuff out there though! Also, check out base-ui. Radix is fine, but base ui has generally better primitives and is being actively developed", "context": "", "use_case": "", "switched_from": "", "story": "LiftKit \u2013 UI where \"everything derives from the golden ratio\""}, {"id": 751301824, "item_id": 46956364, "url": "https://news.ycombinator.com/item?id=46956364", "by": "re-thc", "date": "2026-02-09", "stance": "recommend", "quote": "Check out Base UI (or React Aria) instead.", "excerpt": "> Rebuilding with radix primitives Check out Base UI (or React Aria) instead.", "context": "", "use_case": "", "switched_from": "", "story": "LiftKit \u2013 UI where \"everything derives from the golden ratio\""}, {"id": 747245801, "item_id": 46702862, "url": "https://news.ycombinator.com/item?id=46702862", "by": "rutagandasalim", "date": "2026-01-21", "stance": "neutral", "quote": "Base-ui", "excerpt": "yo, i\u2019m 17 and been building projects for a while. every \u201cnext big boilerplate\u201d i tried either broke, felt outdated, or forced me to rebuild the same stuff again and again. i\u2019d lose weeks wiring auth, payments, seo, and ai just to launch something simple. so i built my own \u2014 shipfree. it\u2019s a modern next.js saas boilerplate made for this new agentic + llm era. built on next.js / bun / drizzle / prisma / tailwind / str", "context": "", "use_case": "", "switched_from": "", "story": "I'm 17, built shipfree because every SaaS boilerplate I tried was trash"}, {"id": 740175136, "item_id": 46260946, "url": "https://news.ycombinator.com/item?id=46260946", "by": "troupo", "date": "2025-12-13", "stance": "warn", "quote": "The example in Field is even more egregious", "excerpt": "> The point is that it works out of the box (i.e. with no additional styling) Then you wouldn't have to remove default styling for it to \"work out of the box\". > I don't understand your argument. The default styling that you have to remove for the input to stop being invisible is just yet another example in a long, long, long line of CSS design systems that absolutely hate text input and their users: https://base-ui.", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Base UI v1.0 Unstyled UI Components from the Creators of Radix and MUI"}, {"id": 739930209, "item_id": 46245638, "url": "https://news.ycombinator.com/item?id=46245638", "by": "jasonthorsness", "date": "2025-12-12", "stance": "neutral", "quote": "I'll take a look at this one too for future stuff.", "excerpt": "I love unstyled UI components since you get complete visual control but accessibility still works and that's so easy to screw up and not notice it's broken. I've used Tailwind headless UI (https://headlessui.com/) and it's great, I'll take a look at this one too for future stuff.", "context": "", "use_case": "unstyled UI components", "switched_from": "", "story": "Show HN: Base UI v1.0 Unstyled UI Components from the Creators of Radix and MUI"}]}