Design wechseln

Was ist shadcn/ui? Vergleich und Auswahl: shadcn/ui vs. MUI, Chakra & Ant Design

Einleitung: Letzten Monat habe ich ein älteres Projekt übernommen – in der package.json stand Material-UI 5.x, und mir wurde mulmig. Nicht, weil MUI schlecht wäre, sondern weil das Design komplett anders aussehen sollte als Material Design. Ich dachte mir: Schon wieder ein Kampf mit dem MUI-Theme-System. Dann fiel mir shadcn/ui ein – die Bibliothek, bei der ich beim ersten Mal dachte: „Genau das wollte ich.“


1. shadcn/ui: Eine Komponentenbibliothek, die keine ist

1.1 Die Copy-&-Own-Philosophie

shadcn/ui ist interessant – es ist schlicht kein npm-Paket.

Du wirst keinen Befehl wie npm install shadcn-ui finden. Stattdessen bekommst du Komponentencode, den du direkt in dein Projekt kopierst. Kopieren, einfügen – und der Code gehört dir.

Ehrlich gesagt war ich anfangs skeptisch: Code in mein Projekt kopieren – geht das nicht durcheinander?

In der Praxis ist der Ansatz überraschend überzeugend.

Das klassische Muster sieht so aus: Paket installieren → Komponente importieren → Styling über Props und Theme → bei Sonderwünschen Workarounds: Wrappen, Styles überschreiben, Umwege bauen.

shadcn/ui kürzt diesen Weg ab. Du willst etwas ändern? Bearbeite den Komponentencode. Er liegt in deinem Projekt – keine Black Box.

1.2 Technische Architektur: Drei Schichten

Der Stack von shadcn/ui besteht aus drei Ebenen:

Unten: Radix UI

Unstyled Komponenten-Primitive. „Unstyled“ heißt: Verhalten und Barrierefreiheit ja, Aussehen nein. Bei einem Dialog kümmert sich Radix um:

  • Öffnen/Schließen
  • Fokus-Management (Tab-Navigation)
  • ARIA-Attribute (Screenreader)
  • Tastatur (Esc zum Schließen)

Styling? Keins – blankes Blatt.

Mitte: Tailwind CSS

Radix liefert das Gerüst, Tailwind die Oberfläche. Jede shadcn/ui-Komponente ist mit Tailwind-Utility-Klassen gestylt. Du änderst die Klassen direkt – ohne Overrides.

Oben: Deine Anpassungen

Das ist der Kern: Der Code liegt bei dir. Keine API-Grenzen, keine Props, die nicht reichen.

// shadcn/ui Button (Code liegt in deinem Projekt)
const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
  ({ className, variant, size, ...props }, ref) => {
    return (
      <button
        className={cn(buttonVariants({ variant, size, className }))}
        ref={ref}
        {...props}
      />
    )
  }
)

// Anpassen? Einfach direkt im Code
// z. B. eigene Animation
const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
  ({ className, variant, size, ...props }, ref) => {
    return (
      <button
        className={cn(
          buttonVariants({ variant, size, className }),
          "transition-all duration-300 hover:scale-105" // direkt ergänzen
        )}
        ref={ref}
        {...props}
      />
    )
  }
)

Kein sx prop, kein styled() – einfach Klassen anpassen.

1.3 Performance: Die Zahlen sprechen

Der Performance-Vorteil von shadcn/ui ist spürbar.

Daten von Bundlephobia:

BibliothekBundle-Größe (minified)GZIP
shadcn/ui (on demand)~50–100 KB~15–30 KB
Material-UI Kernpaket335,3 KB93,7 KB
Chakra UI~200 KB~60 KB
150KB
shadcn/ui tatsächliches Bundle
Mittelgroßes Projekt
335KB
MUI Kernpaket
minified
40-60%
Größenunterschied
shadcn kleiner als MUI
Source: Bundlephobia + Praxisdaten

Warum so klein? Du packst nur genutzte Komponenten ein. Kein CSS-in-JS-Runtime-Overhead – Tailwind wird beim Build verarbeitet.

In einem Mittelgroßen Projekt sank das Bundle nach Migration von MUI zu shadcn/ui von ca. 1,2 MB auf rund 600 KB. Deutlicher Unterschied.

1.4 Der Preis: Wartung liegt bei dir

shadcn/ui ist nicht perfekt.

Code in der Hand heißt: Wartung in der Hand.

Bei MUI reicht oft npm update für Security-Fixes. Bei shadcn/ui mergst du Upstream-Änderungen manuell in deine Komponenten.

Klein oder groß – je mehr du anpasst, desto mehr Merge-Aufwand. Und Advanced Components wie DataGrid, Charts oder komplexe Date Picker fehlen – Drittanbieter oder Eigenbau nötig.


2. Die drei Klassiker

shadcn/ui ist der Newcomer – zuerst die „Oldtimer“.

2.1 Material-UI: Enterprise-Favorit

Material-UI (heute MUI) gibt es seit 2014 – eine der ältesten React-Bibliotheken.

Klare Stärken:

Komponentenvielfalt. DataGrid, Charts, Date Picker, TreeView, Autocomplete – Enterprise-Bedarf ist abgedeckt. In einem Projekt sparte uns allein die MUI-Pro-Version schätzungsweise zwei Monate Entwicklung.

Reifes Designsystem. Google Material Design, Figma-Files, reibungslose Designer-Dev-Zusammenarbeit.

Starkes Ökosystem. Viele Stack-Overflow-Antworten, offizielle Templates, Theme-Marketplace.

Aber auch Schwächen:

Großes Bundle. 335 KB Kernpaket – auch bei wenigen Komponenten bleibt die Basis. Tree Shaking hilft, heilt aber nicht alles.

Schwer anzupassen. Weicht das Design stark von Material ab, wird es mühsam. Ein Projekt mit komplett non-Material-Design kostete uns eine Woche Theme-Konfiguration und Style-Overrides – der Code wuchs, die Wartung wurde schwerer.

Material-Look bleibt. Auch mit neuen Farben und Fonts: Ripple-Effekte, Schatten, Input-Animationen – der Material-Charakter bleibt spürbar.

// MUI Button – Steuerung über variant und color
<Button variant="contained" color="primary">
  Klick mich
</Button>

// Vollständig custom? So geht's
<Button
  sx={{
    background: 'linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)',
    borderRadius: 3,
    border: 0,
    color: 'white',
    height: 48,
    padding: '0 30px',
    boxShadow: '0 3px 5px 2px rgba(255, 105, 135, .3)',
  }}
>
  Custom Button
</Button>

2.2 Chakra UI: Developer Experience

Chakra UI kam später – die Developer Experience überzeugt.

Kernidee: Barrierefreiheit (a11y) ist Standard, nicht optional. WAI-ARIA, Tastatur, Fokus, Screenreader – out of the box.

Schnelle Entwicklung. Style Props wie HTML-Attribute:

// Chakra UI – Styling in Props
<Box bg="tomato" p={4} borderRadius="md" boxShadow="lg">
  <Text fontSize="xl" fontWeight="bold" color="white">
    Hello World
  </Text>
</Box>

Prototypen gehen schnell, oft ohne separate CSS-Dateien.

Schlankes Theme. Eine Config für Farben, Fonts, Abstände – Dark Mode oft eine Zeile.

Grenzen:

Nur React. Vue oder Svelte? Chakra fällt weg.

Weniger Komponenten als MUI – komplexe Data-Display-Komponenten brauchen Extras.

Runtime-Styling. Chakra berechnet Styles zur Laufzeit – in hochfrequenten Szenarien (Live-Dashboards) kann das bremsen.

2.3 Ant Design: Enterprise-Standard in China

Ant Design von Alibaba – in China sehr verbreitet.

Umfangreiche Enterprise-Komponenten. Tabellen, Formulare, Upload, Tree – Table mit Sortierung, Filter, Pagination, Fixed Columns, Virtual Scroll.

Gute i18n. Viele Sprachen eingebaut.

Chinesische Doku. Für lokale Teams ein großer Pluspunkt.

Schwächere Anpassbarkeit. Starkes eigenes Design, schwer komplett umzustylen. Less-basiert – in Tailwind-Projekten oft umständlich.


3. Tiefenvergleich: Sieben Dimensionen

3.1 Bundle-Größe

Praxisdaten (Bundlephobia + echte Projekte):

BibliothekKern-BundleProduktions-Build
shadcn/uikein Kernpaket, on demand150–200 KB
Material-UI335 KB300–400 KB
Chakra UI200 KB180–250 KB
Ant Design300 KB+280–350 KB

Warum shadcn/ui so klein?

  1. Kein Kernpaket – nur genutzte Komponenten
  2. Kein CSS-in-JS zur Laufzeit
  3. Tailwind purged ungenutzte Styles beim Build

Migration MUI → shadcn/ui: Bundle oft 40–50 % kleiner – auf Mobile spürbar.

3.2 Anpassungsflexibilität

shadcn/ui führt hier.

shadcn/ui: Quellcode in der Hand – direkt ändern, keine Prop- oder Override-Fragen.

MUI: Theme und sx prop – mächtig, aber oft umständlich; Theme hat Lernkurve.

Chakra UI: Style Props flexibel, tiefe Anpassungen an komplexen Komponenten begrenzt.

Ant Design: Am stärksten eingeschränkt – Theme-Variablen reichen selten für komplett neues Look & Feel.

3.3 Developer Experience

Lernkurve:

  • Chakra UI: am flachsten
  • MUI: mittel – viele Komponenten und APIs
  • Ant Design: mittel bis steil – viele Optionen
  • shadcn/ui: am steilsten – Radix, Tailwind, direkte Code-Änderungen

Dokumentation:

  • MUI: sehr ausführlich
  • Chakra UI: klar und praxisnah
  • Ant Design: starke chinesische Doku inkl. Design Guidelines
  • shadcn/ui: wächst, aber noch dünner als die Klassiker

Community:

  • MUI: größte Community, meiste SO-Antworten
  • Ant Design: starke chinesische Community
  • Chakra UI: mittel, wächst
  • shadcn/ui: jung, schnell wachsend – GitHub Stars nahe MUI

3.4 Barrierefreiheit

Chakra UI: Am stärksten – WAI-ARIA überall, starke Tastaturnavigation.

shadcn/ui: Radix-Basis – sehr gut für a11y.

MUI: Solide, WAI-ARIA-konform.

Ant Design: Mittelfeld – komplexe Komponenten mit Lücken bei Tastatur.

3.5 Komponentenumfang

MUI: Am meisten – inkl. DataGrid, Charts, Date Picker (Pro teils kostenpflichtig).

Ant Design: Sehr umfangreich für Enterprise.

Chakra UI: Mittel – Advanced Components extern.

shadcn/ui: Am wenigsten – Basics (Button, Input, Dialog, Table); Community-Erweiterungen verfügbar.

3.6 Langfristige Wartung

Auto- vs. manuelle Updates:

  • MUI / Chakra / Ant Design: npm update
  • shadcn/ui: manuelles Mergen

Kontrolle vs. Komfort:

  • Klassiker: bequem, weniger Kontrolle – Bugs warten auf Upstream oder Fork
  • shadcn/ui: maximale Kontrolle, mehr Aufwand – Bugs selbst fixen

Migrationskosten: Zwischen Bibliotheken immer hoch – Auswahl langfristig treffen.

3.7 Einsatzszenarien

SzenarioEmpfehlungGrund
Eigenes Designsystemshadcn/uiQuellcode, volle Freiheit
Enterprise-BackendMUI oder Ant DesignViele Komponenten, schneller Start
Schneller Prototyp / MVPChakra UITempo, klare Doku
Mobile / Performanceshadcn/uiKleinste Bundles
Hohe a11y-AnforderungenChakra UI oder shadcn/uia11y eingebaut
Figma im TeamMUIOffizielles Figma UI Kit

4. Entscheidungsrahmen

4.1 Drei Fragen zuerst

Frage 1: Wie „unique“ ist dein Design?

  • Komplett eigen → shadcn/ui
  • Nahe Material Design → MUI
  • Modern, wenig Customizing → Chakra UI
  • Enterprise mit vielen Tabellen/Formularen → Ant Design

Frage 2: Wie groß ist das Projekt?

  • Klein / MVP → Chakra UI oder shadcn/ui
  • Mittel bis Enterprise → MUI oder Ant Design
  • Performance-kritisch → shadcn/ui

Frage 3: Was kennt das Team?

  • Tailwind → shadcn/ui
  • Material Design → MUI
  • Geschwindigkeit → Chakra UI
  • Chinesisches Enterprise-Team → Ant Design

4.2 Persönliche Empfehlung

Neues Projekt:

Mein Default ist shadcn/ui.

Gründe:

  • Tailwind ist Standard – shadcn/ui passt perfekt
  • Beste Performance, kleinste Bundles
  • Volle Kontrolle, keine Black Box
  • Langfristig planbarer (Code bei dir)

Ausnahmen:

  • Komplexe Tabellen/Charts, keine Zeit für Drittanbieter → MUI
  • Strenge a11y, wenig Erfahrung → Chakra UI
  • Chinesisches Enterprise mit lokaler Doku → Ant Design

Bestehendes Projekt:

Migration lohnt selten ohne klaren Grund (Performance, Customizing, neues Designsystem). Wenn doch: shadcn/ui relativ gut schrittweise – Komponenten einzeln ersetzbar.


5. Migration in der Praxis: MUI → shadcn/ui

5.1 Schritte

Schritt 1: Bestand aufnehmen

Welche MUI-Komponenten nutzt du?

  • Button, Input, Select → shadcn hat Entsprechungen
  • DataGrid, Charts → Drittanbieter oder Eigenbau

Schritt 2: Mapping

// Mapping-Tabelle
const componentMap = {
  'Button': 'Button',          // 1:1
  'TextField': 'Input',        // anderer Name, ähnliche Funktion
  'Dialog': 'Dialog',          // 1:1
  'Select': 'Select',          // 1:1
  'Table': 'Table',            // Basis-Table, ohne Advanced Features
  'DataGrid': '???'            // Ersatz z. B. TanStack Table
}

Schritt 3: Schrittweise ersetzen

Nicht alles auf einmal – eine Seite, testen, erweitern.

Schritt 4: Styling migrieren

MUI Theme-Variablen → Tailwind Config
sx prop → Tailwind-Klassen

// MUI
<Button sx={{ mt: 2, mb: 1, backgroundColor: 'primary.main' }}>
  Absenden
</Button>

// shadcn/ui
<Button className="mt-8 mb-4 bg-primary">
  Absenden
</Button>

5.2 Hinweise

  1. Anderes Styling-System: MUI theme + sx vs. Tailwind – alles „übersetzen“.

  2. Advanced Components: Kein DataGrid in shadcn – TanStack Table; Charts: Recharts oder Chart.js.

  3. Animationen: MUI Ripple/Transitions eingebaut – bei shadcn Tailwind transition / animate- nutzen.

  4. Testen! Besonders Formulare und Dialoge nach der Migration.

5.3 Migrationsaufwand (Erfahrungswerte)

  • Klein (≤10 Seiten): 1–2 Wochen
  • Mittel (10–30 Seiten): 2–4 Wochen
  • Groß (30+ Seiten): 4–8 Wochen, je nach Advanced Components

6. Fazit und Ausblick

Es gibt keine „beste“ Bibliothek – nur die passende für dein Projekt.

shadcn/ui eröffnet eine neue Option: nicht nur „Bibliothek nutzen“, sondern „Code besitzen“. Für Teams mit Fokus auf Performance und Customizing ein starker Magnet.

MUI, Chakra UI und Ant Design haben eigene Stärken: MUIs Ökosystem, Chakras DX und a11y, Ant Designs Enterprise-Tiefe und Lokalisierung.

Entscheidend: Anforderungen kennen, Stärken vergleichen, bewusst wählen.

Noch unsicher?

Probier shadcn/ui aus.

Der Ansatz unterscheidet sich spürbar von klassischen Bibliotheken – das Gefühl, den Code wirklich zu besitzen, ist überzeugend.


Referenzen

Offizielle Dokumentation:

Vergleichsartikel:

Community:

GitHub (Stand September 2025):

  • shadcn/ui: ~94,6k Stars
  • Material-UI: ~96,6k Stars
  • Chakra UI: ~39,7k Stars
  • Ant Design: ~96,0k Stars


Basierend auf Daten und Praxiserfahrung von September 2025 bis März 2026. Bibliotheken entwickeln sich schnell – aktuelle Docs prüfen.

FAQ

Was ist der größte Unterschied zwischen shadcn/ui und klassischen Komponentenbibliotheken?
shadcn/ui ist kein npm-Paket, sondern eine Sammlung kopierbarer Komponenten. Der Quellcode landet direkt in deinem Projekt – du behältst die volle Kontrolle. Klassische Bibliotheken passen sich über Props und Theme an, mit API-Grenzen; bei shadcn/ui änderst du den Komponentencode direkt – ohne Black Box.
Für welche Projekte eignet sich shadcn/ui?
Besonders geeignet für:

• Vollständig eigenes Designsystem
• Teams mit Tailwind-CSS-Erfahrung
• Projekte mit Fokus auf Performance und Bundle-Größe
• Moderne Frameworks wie Next.js oder Remix
• Langfristige Projekte mit voller Code-Kontrolle
Wann sollte man Material-UI wählen?
MUI empfiehlt sich bei:

• Enterprise-Backends und Admin-Oberflächen
• Bedarf an umfangreichen Komponenten (DataGrid, Charts, Date Picker)
• Teams mit Material-Design-Erfahrung
• Zeitdruck und schnelle Lieferung
• Zusammenarbeit mit Designern (offizielles Figma UI Kit)
Ist die Migration von MUI zu shadcn/ui aufwendig?
Der Aufwand hängt von der Projektgröße ab:

• Kleine Projekte (bis 10 Seiten): 1–2 Wochen
• Mittlere Projekte (10–30 Seiten): 2–4 Wochen
• Große Projekte (30+ Seiten): 4–8 Wochen

Hauptaufwand: Styling-System (sx prop → Tailwind-Klassen) und Ersatz für Advanced Components.
Welche Nachteile hat shadcn/ui?
Die wichtigsten:

• Updates manuell pflegen (kein npm update für neue Features)
• Weniger Advanced Components (DataGrid, Charts brauchen Drittanbieter)
• Steilere Lernkurve (Radix-Primitive und Tailwind verstehen)
• Community und Doku noch dünner als bei MUI
Welche Bibliothek bietet die beste Barrierefreiheit?
Chakra UI führt: Jede Komponente hat eingebautes WAI-ARIA. shadcn/ui basiert auf Radix UI – ebenfalls sehr gut. MUI erfüllt WAI-ARIA-Standards. Ant Design liegt im Mittelfeld; bei komplexen Komponenten fehlt teils vollständige Tastaturnavigation.

9 Min. Lesezeit · Veröffentlicht am: 26. März 2026 · Aktualisiert am: 13. Juli 2026

Kommentare

Melde dich mit GitHub an, um einen Kommentar zu hinterlassen

Easton BlogEaston Blog