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

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:
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:
- Große Listen: Produktkataloge, Chat – 10.000 Einträge: Svelte ~58 FPS, React ~45 FPS.
- Häufige Updates: Live-Dashboards, Kurse – direkte Updates schlagen Virtual-DOM-Diff.
- 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?
| Szenario | Empfehlung | Grund |
|---|---|---|
| Große Enterprise-Apps | React | Ökosystem, Hiring |
| Performancekritisch | Svelte | kleines Bundle, schnell |
| Schnelle Prototypen | Svelte | wenig Code, schneller Start |
| Bestehendes Projekt | aktuelles Framework | Migrationskosten |
| Side Project | Svelte | Lernen 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
- Natürlicher Reaktivitätsfluss: kein
setState, keindispatch. - Kein State-Management-Framework nötig für mittlere Projekte.
- Scoped Styles: CSS pro Komponente.
- 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:
- Performancekritische UIs.
- Kleine Teams, Start-ups, interne Tools.
- 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:
- 2 Stunden offizielles Tutorial – interaktiv.
- Kleines Projekt neu in Svelte – Taschenrechner, Wetter, etwas Bekanntes.
- 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
Step 1: Svelte-Projekt anlegen und Dependencies installieren
Mit Vite starten: -
2
Step 2: Kernlogik in App.svelte
Reaktiver State mit $state: -
3
Step 3: TodoItem-Unterkomponente
$props: -
4
Step 4: Runes-Vorteile verstehen
$state: kein Setter, count++, 30–40 % weniger Code. -
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?
• 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?
$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?
• 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?
• 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?
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?
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
Frontend Framework
Wenn du über die Suche hier gelandet bist, kommst du am schnellsten weiter, indem du zum vorherigen oder nächsten Beitrag dieser Serie springst.
Vorheriger
Mein Blog mit Astro 5 neu gebaut: Lighthouse-Score von 68 auf 100
Echte Migrationserfahrung von Next.js zu Astro 5. Island-Architektur, Content Layer und SEO-Konfiguration im Detail – mit kopierbarer Optimierungs-Checkliste. Build-Zeit von 2 Minuten auf 18 Sekunden, Lighthouse-Performance von 68 auf 98.
Teil 2 von 6
Nächster
React-19-Formular noch 30 Zeilen Code? Mit Actions unter 30 Zeilen – 40 % Performance-Gewinn
Tiefgehende Analyse der 6 Kernfeatures von React 19: Actions, use()-Hook, Compiler und mehr. Praxisvergleich zeigt, wie Sie Formularverarbeitung vereinfachen, die Performance optimieren und Server Components sinnvoll einsetzen – basierend auf einer Woche Hands-on-Erfahrung.
Teil 4 von 6
Ähnliche Beiträge
Blog-Framework-Leitfaden 2025: Hugo, Astro oder Hexo – was passt zu Ihnen?

Blog-Framework-Leitfaden 2025: Hugo, Astro oder Hexo – was passt zu Ihnen?
Vue 3 + TypeScript Best Practices: Enterprise-Projektarchitektur-Leitfaden 2025


Kommentare
Melde dich mit GitHub an, um einen Kommentar zu hinterlassen