Primer Design System is GitHub's component library. If you've used GitHub.com, you've seen Primer - every button, form, and input field uses these components.
Primer exists because GitHub got tired of their UI looking like shit across different teams. Every component follows the same patterns so you can't fuck up the interface. It's their internal system made public, which means you get components that have been stress-tested by 100+ million developers doing weird stuff you never thought of.
How Primer is Split Up
Primer has three parts because GitHub learned the hard way that one-size-fits-all design systems are bullshit:
Primer Product UI - 50+ React components for building actual applications. Current version is around v37. Components like ActionList, TreeView, and DataTable that don't completely shit themselves when you're displaying thousands of repository entries.
Primer Brand UI - Marketing site components because using product components for landing pages makes everything look like a developer tool. Nobody wants their marketing site to look like a GitHub issue tracker.
Octicons - 300+ icons designed for developer workflows. These aren't generic icons - they cover things like merge conflicts and CI status that regular icon libraries ignore.
The CSS Modules Migration That Actually Mattered
Version 37 ditched styled-components for CSS Modules, which was huge. GitHub wasn't following trends - their engineering team was pissed about bundle size bloat and shitty runtime performance.
What they fixed:
- Bundle sizes got ~30% smaller
- No more runtime CSS generation killing page loads
- Build times stopped sucking
- CSS debugging that doesn't make you want to quit
The dependencies now:
@primer/react
- Main components@primer/primitives
- Design tokensstyled-components@5.x
- Legacy shit they're trying to kill
Revolutionary concept, I know - only took the industry 10 years to figure out designers and devs should use the same specs.
Why Primer is Different
Most design systems are academic bullshit. Primer runs GitHub.com, which means 100+ million developers use it daily. When a Primer component breaks, it breaks for more developers than most companies will ever see.
Real-world edge cases it handles:
- File trees with 10,000+ files (try that with Material-UI)
- Code review threads that span months
- Repository settings with hundreds of options
- Notification feeds processing thousands of events daily
Companies like OpenProject migrated specifically because it's battle-tested. When your design system survives GitHub's scale, you know it won't shit itself the moment you hit production traffic.