Design wechseln

React langweilig? Svelte 5: halb so viel Code, doppelte Performance (mit vollständigem Tutorial)

Easton editorial illustration: state-management shelf

Warum ich wieder ein neues Framework lerne

Als ich die Svelte-Dokumentation öffnete, war mein erster Impuls: Nein. Alle paar Jahre kommt ein Framework und sagt „diesmal ist es anders“ – oft nur neues Label, gleiche Idee. Das React-Projekt läuft, warum umsatteln?

Das erste Codebeispiel hat mich stutzig gemacht. Counter-Komponente: In React brauchen Sie useState, setCount und dürfen den State nicht direkt mutieren. In Svelte? let count = $state(0), dann count++. Fertig.

Dieses „Weniger ist mehr“ hat mich drei Stunden Tutorial-Kette ausgelöst – nicht wegen Komplexität, sondern wegen Einfachheit. Wenn Sie unter „Framework-Müdigkeit“ leiden: Dieser Artikel erklärt Svelte 5 und die Denkweise der Compile-Time-Optimierung – sie hat mein Verständnis von Frontend-Frameworks verändert.

Was ist Svelte? Die Essenz eines Compile-Time-Frameworks

Zuerst eine Alltagsmetapher für Compile-Time vs. Runtime:

React ist wie Lieferservice: Jede Lieferung bringt Besteck, Servietten, Verpackung, Plastiktüte. Virtual DOM und Reconciliation müssen zur Laufzeit mit – ob Sie sie brauchen oder nicht. Ergebnis: 42 KB React-Basis, selbst für „Hello World“.

Svelte ist wie selbst kochen: Zutaten vorbereiten (Code schreiben), in der Pfanne braten (kompilieren), auf den Tisch kommt reines Gericht (natives JS) – ohne Ballast. Finales Bundle oft nur 1,6 KB.

Klingt übertrieben – in meinen Messungen stimmt es. Dieselbe Todo-App in React und Svelte:

145KB
React-Bundle-Größe
Mit Tree Shaking optimiert
5.2KB
Svelte-Bundle-Größe
Compile-Time-Optimierung, 96 % kleiner
800ms
Svelte Time-to-Interactive
Test unter 3G
1100ms
React Time-to-Interactive
Test unter 3G

Noch greifbarer: First Load unter 3G (viele Nutzer sind noch auf 3G):

300 ms klingen wenig – für Shop-Startseiten oder News kann das 5–10 % mehr Absprünge bedeuten.

Was bringt Svelte 5 gegenüber Svelte 4? Kernstück: Runes – neue reaktive API. Bundle noch 15–30 % kleiner, Code lesbarer.

Aber: React-Projekt nicht sofort umschreiben. Svelte ersetzt React nicht – unterschiedliche Philosophien. React: „Ökosystem und Flexibilität für alles“. Svelte: „Performance und Klarheit für den Fokus“. Wahl hängt vom Szenario ab.

Runes im Detail: die Magie des Compilers

Das Herzstück von Svelte 5 sind Runes – der Name klingt etwas nerdig, in der Praxis fühlt es sich sehr gut an.

$state: endlich ohne Setter

React:

// React: immer Setter im Kopf behalten
const [count, setCount] = useState(0)
function increment() {
  setCount(count + 1) // Closure-Fallen beachten
}

Svelte 5:

// Svelte 5: wie natives JS
let count = $state(0)
function increment() {
  count++ // Compiler übernimmt Reaktivität
}

Beim ersten $state suchte ich nach dem Setter – den gibt es nicht. Der Compiler analysiert den Code und fügt Dependency-Tracking und Updates ein.

In Projekten 30–40 % weniger Code – besonders bei Formularen ohne lange handleXXXChange-Ketten.

$derived: automatisches Dependency-Tracking

useMemo und vergessene oder überladene Dependency-Arrays kennen Sie vermutlich.

Svelte $derived kümmert sich darum:

// React: Dependency-Arrays manuell
const doubled = useMemo(() => count * 2, [count])
const quadrupled = useMemo(() => doubled * 2, [doubled])
// Svelte 5: Compiler trackt automatisch
let doubled = $derived(count * 2)
let quadrupled = $derived(doubled * 2)

Bei einem Angebotssystem mit vielen Eingabefeldern: React – zwei Zeilen Dependencies, ständig Angst vor vergessenen Feldern. Svelte – Compiler erledigt das.

Kurz: Sie schreiben Logik, Reaktivität macht der Compiler.

$effect: Nebenwirkungen ohne Hook-Chaos

useEffect gehört zu den schwierigsten React-Hooks – Dependencies, Cleanup, Timing.

Svelte $effect:

// React: cleanup per return
useEffect(() => {
  const subscription = someAPI.subscribe()
  return () => {
    subscription.unsubscribe()
  }
}, [/* Dependencies */])
// Svelte 5: automatisches Cleanup
$effect(() => {
  const subscription = someAPI.subscribe()
  // Beim Unmount räumt der Compiler auf
})

Für API-Polling, WebSocket, Local Storage – weniger Sorge vor Memory Leaks.

$props: typsichere Komponenten-Props

// React
function TodoItem({ todo, onToggle }) {
  // PropTypes oder TypeScript manuell
}
// Svelte 5: Destrukturierung
<script>
  let { todo, onToggle } = $props()
  // TypeScript eingebaut
</script>

Wenig spektakulär, aber angenehm im Alltag – offizielle TypeScript-Unterstützung ohne Extra-Setup.

Svelte vs. React/Vue: keine Religionskriege, sondern Wahl

Sollten Sie wechseln? Framework ist Werkzeug – elegantes jQuery schlägt chaotisches React.

Lernkurve

Svelte: HTML + CSS + JS, Web-Standard. Ein Absolvent nach zwei Tagen Tutorial schrieb selbstständig Komponenten.

React: JSX, Hooks, Immutability, Reconciliation – oft 1–2 Wochen bis echtes Verständnis.

Vue: dazwischen; Templates intuitiver, eigene Konzepte (Direktiven, computed, watch).

Performance

Ehrlich: Bei kleinen Apps merkt man kaum einen Unterschied.

Deutlich wird es hier:

58 FPS
Svelte bei 10.000 Listeneinträgen
React ~45 FPS – direkte Updates schneller als Virtual-DOM-Diff
  1. Große Listen: Produktkataloge, Chat – 10.000 Einträge: Svelte ~58 FPS, React ~45 FPS.
  2. Häufige Updates: Live-Dashboards, Kurse – direkte Updates schlagen Virtual-DOM-Diff.
  3. Mobiles schwaches Netz: kleines Bundle zählt.

Daten aus JS-Framework-Benchmarks 2025 – in Ihrem Projekt selbst messen.

Ökosystem: ausgereift vs. schlank

Svelte ist kleiner als React – klar gesagt.

  • npm/Woche: Svelte ~500.000 vs. React ~20 Mio.
  • Stack Overflow: Svelte ~12.000 vs. React ~500.000
  • UI-Bibliotheken: React Hunderte, Svelte Dutzende

Trotzdem: aktive Community, Rich Harris antwortet mitunter auf Discord. Toolchain modern: Vite, SvelteKit, TypeScript – kein Webpack-Loader-Dschungel.

Wann Svelte?

SzenarioEmpfehlungGrund
Große Enterprise-AppsReactÖkosystem, Hiring
PerformancekritischSveltekleines Bundle, schnell
Schnelle PrototypenSveltewenig Code, schneller Start
Bestehendes Projektaktuelles FrameworkMigrationskosten
Side ProjectSvelteLernen und Experimentieren

Team tief in React – ohne Performance-Schmerz nicht wechseln. Neues Projekt, kleines Team, Neugier: Svelte lohnt sich.

30-Minuten-Praxis: Todo-App mit Svelte 5

Genug Theorie – wir bauen eine Todo-App und spüren Runes.

Projektstruktur

svelte-todo/
├── src/
│   ├── lib/
│   │   └── TodoItem.svelte  // Einzelne Todo-Komponente
│   ├── App.svelte           // Haupt-App
│   └── main.js              // Einstieg
└── package.json

Kern: App.svelte

<script>
  // Runes: knapp und mächtig
  let todos = $state([])
  let input = $state('')
  // $derived trackt todos automatisch
  let remaining = $derived(
    todos.filter(t => !t.done).length
  )
  function addTodo() {
    if (input.trim()) {
      todos.push({
        id: Date.now(),
        text: input,
        done: false
      })
      input = ''
    }
  }
  function toggleTodo(id) {
    const todo = todos.find(t => t.id === id)
    if (todo) {
      todo.done = !todo.done
    }
  }
  function deleteTodo(id) {
    todos = todos.filter(t => t.id !== id)
  }
</script>
<div class="app">
  <h1>Meine Aufgaben</h1>
  <div class="input-area">
    <input
      bind:value={input}
      placeholder="Neue Aufgabe hinzufügen..."
      onkeydown={(e) => e.key === 'Enter' && addTodo()}
    />
    <button onclick={addTodo}>Hinzufügen</button>
  </div>
  <p class="stats">
    Noch {remaining} Aufgaben offen
  </p>
  <ul class="todo-list">
    {#each todos as todo}
      <TodoItem
        {todo}
        onToggle={() => toggleTodo(todo.id)}
        onDelete={() => deleteTodo(todo.id)}
      />
    {/each}
  </ul>
</div>
<style>
  .app {
    max-width: 600px;
    margin: 0 auto;
    padding: 20px;
  }
  .input-area {
    display: flex;
    gap: 10px;
    margin-bottom: 20px;
  }
  input {
    flex: 1;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
  }
  button {
    padding: 10px 20px;
    background: #0066cc;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  }
  .stats {
    color: #666;
    margin-bottom: 10px;
  }
  .todo-list {
    list-style: none;
    padding: 0;
  }
</style>

Unterkomponente: TodoItem.svelte

<script>
  let { todo, onToggle, onDelete } = $props()
</script>
<li class="todo-item">
  <label>
    <input
      type="checkbox"
      checked={todo.done}
      onchange={onToggle}
    />
    <span class:done={todo.done}>
      {todo.text}
    </span>
  </label>
  <button class="delete-btn" onclick={onDelete}>
    Löschen
  </button>
</li>
<style>
  .todo-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px;
    border-bottom: 1px solid #eee;
  }
  label {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
  }
  .done {
    text-decoration: line-through;
    color: #999;
  }
  .delete-btn {
    padding: 5px 10px;
    background: #ff4444;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
  }
</style>

Starten

npm create vite@latest svelte-todo -- --template svelte
cd svelte-todo
npm install
npm run dev

Unter http://localhost:5173 läuft die Todo-App.

Wichtige Punkte

  1. Natürlicher Reaktivitätsfluss: kein setState, kein dispatch.
  2. Kein State-Management-Framework nötig für mittlere Projekte.
  3. Scoped Styles: CSS pro Komponente.
  4. Kleines Build: npm run build – oft ~5 KB.

Fallstrick: In Svelte 4 brauchte todos.push() ein Reassignment – Svelte 5 reicht push. Wichtiger Unterschied zu Svelte 4.

Einfachheit täuscht nicht über Architektur hinweg – aber Sie konzentrieren sich auf Fachlogik statt State-Paradigmen.

Ökosystem, Community und Zukunft

Ökosystem

Trotz kleinerer Community ist vieles da:

  • SvelteKit: offizielles Full-Stack-Framework (SSR, SSG, API-Routen).
  • Komponentenbibliotheken: Svelte Material UI, Carbon, Skeleton UI.
  • Toolchain: Vite, Prettier, ESLint.
  • Adoption: Spotify, Square, NYT, Apple intern.

Discord: Core-Team und Rich Harris diskutieren aktiv – das bieten große Frameworks selten.

Lernressourcen

  • Offizielles Tutorial: interaktiv, ~80 % der Konzepte.
  • Discord: schnelle, qualitativ gute Antworten.
  • GitHub: viele Beispiele im offiziellen Repo.
  • Chinesische Ressourcen: auf Juejin/Zhihu – für DE-Leser eher EN-Doku und Tutorial.

Trend

Svelte wird kein Mainstream, bleibt wichtige Option.

Reacts Ökosystem-Moat ist tief – Enterprise wechselt selten. Chancen für Svelte:

  1. Performancekritische UIs.
  2. Kleine Teams, Start-ups, interne Tools.
  3. Bildung – guter Einstieg ins Frontend.

Svelte 5 ist produktionsreif; TypeScript wird stärker.

Svelte boostet den Lebenslauf selten – erweitert aber Ihr Denken. Nach Compile-Time-Ideen schreiben Sie React bewusster performanceorientiert.

Fazit: ein Wochenende investieren

Kernbotschaft: Svelte lohnt ein Wochenende zum Kennenlernen.

Nicht sofort alles umschreiben – stattdessen:

  1. 2 Stunden offizielles Tutorial – interaktiv.
  2. Kleines Projekt neu in Svelte – Taschenrechner, Wetter, etwas Bekanntes.
  3. Nicht sofort im Team pushen – erst selbst prüfen, ob es passt.

Frameworks behaupten „revolutionär“ – wertvoll sind die Ideen dahinter: Compile-Time, klare API, Performance.

Technik dient dem Produkt. React-Probleme löst Svelte oft auch – Wahl: Team, Szenario, Bauchgefühl.

Performance, weniger Boilerplate, Neugier? Öffnen Sie https://svelte.dev/tutorial.

Zwei Stunden – vielleicht finden Sie ein Werkzeug, das wirklich passt.

Todo-App mit Svelte 5 von null – kompletter Ablauf

Runes-System ($state, $derived, $effect) am Todo-Praxisprojekt lernen

Estimated time: PT30M

  1. 1

    Step 1: Svelte-Projekt anlegen und Dependencies installieren

    Mit Vite starten:
  2. 2

    Step 2: Kernlogik in App.svelte

    Reaktiver State mit $state:
  3. 3

    Step 3: TodoItem-Unterkomponente

    $props:
  4. 4

    Step 4: Runes-Vorteile verstehen

    $state: kein Setter, count++, 30–40 % weniger Code.
  5. 5

    Step 5: Build und Performance

    npm run build – oft ~5 KB (96 % kleiner als React).

FAQ

Wie groß ist der Performance-Unterschied zwischen Svelte 5 und React? Konkrete Zahlen?
Bundle-Volumen im Vergleich:
• Dieselbe Todo-App einmal in React, einmal in Svelte
• React-Version 145 KB (mit Tree Shaking), Svelte-Version 5,2 KB (96 % kleiner)

First-Load-Geschwindigkeit:
• Unter 3G: Svelte nach 800 ms interaktiv, React nach 1100 ms
• 300 ms Unterschied können bei E-Commerce-Startseiten oder News-Portalen 5–10 % höhere Absprungrate bedeuten

Rendering großer Datenmengen:
• Bei 10.000 Datensätzen: Svelte 58 FPS, React 45 FPS

Svelte 5 gegenüber Svelte 4: Bundle nochmals 15–30 % kleiner, Lesbarkeit besser.

Ehrlich gesagt: Bei kleinen Projekten fällt der Unterschied kaum auf – bei einer Todo-App merkt der Nutzer React vs. Svelte kaum. Bei großen Listen, häufigen State-Updates und schwachem Mobilnetz wird er deutlich.
Was ist das Runes-System in Svelte 5? Unterschied zwischen $state, $derived und $effect?
Runes ist die zentrale Neuerung in Svelte 5 – eine komplett neue reaktive API.

$state:
• Definiert reaktiven State, kein Setter nötig – Variable direkt ändern (let count = $state(0), dann count++)
• Compiler übernimmt Reaktivität; in Projekten 30–40 % weniger Code
• Besonders bei Formularen: kein handleXXXChange mehr

$derived:
• Berechnete abgeleitete Werte, automatisches Dependency-Tracking (let doubled = $derived(count * 2))
• Sehr hilfreich bei komplexen Formularberechnungen

$effect:
• Nebenwirkungen; Compiler räumt automatisch auf, kein manuelles return cleanup
• Beispiel: $effect(() => { const subscription = someAPI.subscribe() })
• Weniger Speicherlecks – ideal für API-Polling, WebSocket, Local-Storage-Sync

$props:
• Komponenten-Props per Destrukturierung (let { todo, onToggle } = $props())
• TypeScript-Unterstützung eingebaut
Lernkurve Svelte vs. React – womit sollten Einsteiger starten?
Svelte:
• HTML + CSS + JS, näher an Web-Standards
• Ein frisch Absolvierter nach dem offiziellen Tutorial schrieb nach zwei Tagen selbstständig Komponenten

React:
• JSX, Hooks-Regeln, immutabler State, Reconciliation
• Wirkliches Verständnis braucht oft 1–2 Wochen intensives Lernen
• Unzählige „XX React-Tipps, die Sie nicht kannten“-Artikel zeigen die Tiefe

Vue:
• Dazwischen; Templates intuitiver als JSX, eigene Konzepte (Direktiven, computed, watch)

Für Einsteiger ist Svelte oft leichter – Syntax näher am Web-Standard. React hat reiferes Ökosystem und mehr Jobs – Ziel entscheidet.

Schneller Einstieg, persönliche oder performancekritische Projekte: Svelte. Großkonzern, Enterprise: React.
Wie steht das Svelte-Ökosystem im Vergleich zu React?
Svelte heute:
• npm ~500.000 Downloads/Woche (React ~20 Mio.)
• Stack Overflow ~12.000 Fragen (React ~500.000)
• Weniger Drittanbieter-Komponentenbibliotheken (React: Hunderte)

Nicht nur Nachteil:
• Kleine, aktive Community – auf Discord antwortet Rich Harris (Svelte-Autor) mitunter persönlich
• In der React-Welt undenkbar

Moderne Toolchain:
• Vite nativ, SvelteKit als offizielles Full-Stack-Framework, TypeScript eingebaut
• Kein Webpack-Loader-Zoo wie bei React

Echte Adoption:
• Spotify interne Tools, Square Händler-Backend, NYT interaktive Charts, Apple interne Projekte

Ökosystem schwächer als React, aber solide Basis:
• SvelteKit, Material UI / Carbon / Skeleton UI, Vite, Prettier, ESLint

Viele Third-Party-Libraries nötig: eher React. Performance und Klarheit: Svelte.
Wann Svelte statt React wählen?
Svelte:
1) Performancekritisch (Game-UI, Live-Dashboards, Mobile)
2) Schnelle Prototypen
3) Persönliche Projekte / Side Projects
4) Kleine Teams, Start-ups, interne Tools

React:
1) Große Enterprise-Apps, reifes Ökosystem, leichter Hiring
2) Bestehende React-Codebases – Migration oft zu teuer
3) Projekte mit vielen UI-Bibliotheken

Entscheidungsmatrix:
• Team tief in React – ohne starken Performance-Schmerz nicht wechseln
• Neues Projekt, kleines Team, Neugier: Svelte lohnt sich

Persönliche Einschätzung:
• Svelte wird kein Mainstream, bleibt wichtige Option
• Reacts Ökosystem-Moat ist tief
• Chancen: Performance, kleine Teams, Bildung
Svelte 5 vs. Svelte 4 – Unterschiede und Upgrade?
Kern-Upgrade: Runes – neue reaktive API.

Bundle:
• Svelte 5 vs. 4: 15–30 % kleiner, bessere Lesbarkeit

Wichtiger Unterschied:
• Svelte 4: nach todos.push() Reassignment nötig (todos = [...todos, newTodo])
• Svelte 5: direkt push (todos.push(newTodo))

API:
• Svelte 4: $: doubled = count * 2
• Svelte 5: let doubled = $derived(count * 2)

Stabilität:
• Svelte 5 produktionsreif, TypeScript wird stärker

Upgrade:
• Neues Projekt: direkt Svelte 5
• Svelte 4: schrittweise Migration, Versionen können koexistieren

Lernen:
• Interaktives offizielles Tutorial deckt ~80 % ab
• Discord-Community antwortet schnell und qualitativ

8 Min. Lesezeit · Veröffentlicht am: 24. Nov. 2025 · Aktualisiert am: 14. Juli 2026

Ähnliche Beiträge

Kommentare

Melde dich mit GitHub an, um einen Kommentar zu hinterlassen

Easton BlogEaston Blog