Der Product Manager ist tot. Es lebe der Product Developer.
Die Person, die mit Figma-Entwürfen ins Meeting kommt und sagt 'baut das', hat keine Zukunft mehr. KI hat den Abstand...
7 Min. Lesezeit
17.02.2026, Von Stephan Schwab
Moderne Browser unterstützen mittlerweile alles, was für anspruchsvolle, reaktive Web-Oberflächen benötigt wird — ganz ohne React, Vue oder Angular. Web Components, Custom Elements, Shadow DOM und native Event-Systeme ermöglichen modulare, wiederverwendbare UI-Bausteine, die elegant miteinander kommunizieren. KI-Assistenten helfen dabei, diese Muster schneller als je zuvor zu erlernen.
Etwas Bemerkenswertes ist geschehen, während viele Entwickler nicht hinschauten. Die Web-Plattform selbst wurde fähig, das zu leisten, wofür Frameworks erfunden wurden.
Custom Elements ermöglichen die Definition eigener HTML-Tags mit eigenem Verhalten. Shadow DOM bietet Kapselung, die Komponentenstile und -struktur isoliert hält. Templates und Slots ermöglichen Kompositionsmuster. Und vielleicht am wichtigsten: Das native Event-System bietet einen robusten Mechanismus für die Kommunikation zwischen Komponenten ohne enge Kopplung.
Dies sind keine experimentellen Funktionen. Sie werden seit Jahren in jedem großen Browser ausgeliefert. Die Frage ist nicht mehr, ob sie funktionieren, sondern warum mehr Entwickler sie nicht nutzen.
Jedes Framework bringt versteckte Kosten mit sich. Da ist zunächst die Lernkurve. Aber es gibt auch die laufende Wartungslast: Major-Version-Upgrades, die Dinge kaputtmachen, veraltete Muster, von denen man migrieren muss, Build-Werkzeuge, die ständig aktualisiert werden müssen.
Web Components, die auf Plattform-Standards aufbauen, umgehen dies vollständig. Die Browser-Hersteller haben sich zu Abwärtskompatibilität verpflichtet, wie es Framework-Maintainer schlicht nicht können. Code, der vor einem Jahrzehnt nach Web-Standards geschrieben wurde, funktioniert heute noch. Das gilt nicht für Code, der für Angular 1, React-Klassenkomponenten oder Vue 2s Options API geschrieben wurde.
Für Software-Anbieter, die Produkte entwickeln, die jahrelang laufen müssen, ist diese Stabilität enorm wichtig. Es ist eine Sache weniger, die kaputtgehen kann, eine Abhängigkeit weniger, die zur Sicherheitslücke werden kann, eine Abstraktionsschicht weniger zwischen Code und Laufzeitumgebung.
Die Eleganz von Web Components zeigt sich am deutlichsten bei der Kommunikation zwischen Komponenten. Das native Custom-Events-System bietet alles, was für anspruchsvolle Komponenteninteraktion benötigt wird.
Eine Komponente tief in der UI-Hierarchie kann ein Event auslösen, das durch den DOM-Baum nach oben steigt:
this.dispatchEvent(new CustomEvent('item-selected', {
detail: { itemId: this.selectedId, metadata: this.itemData },
bubbles: true,
composed: true
}));
Jede übergeordnete Komponente — oder die Anwendungshülle selbst — kann auf dieses Event lauschen und reagieren. Es gibt keinen Bedarf für einen globalen State-Store, kein Prop-Drilling, keine Context-Provider. Das DOM selbst wird zur Kommunikationsinfrastruktur.
Komponenten können auch nach unten über Attribute und Properties kommunizieren. Wenn ein Elternelement ein Attribut ändert, wird der attributeChangedCallback des Kindes ausgelöst, was ihm die Möglichkeit gibt, zu reagieren. Für komplexere Daten ermöglichen Properties die direkte Übergabe von Objekten und Arrays.
Dies erzeugt einen natürlichen, vorhersehbaren Fluss: Daten nach unten über Properties und Attribute, Events nach oben durch das Bubbling-System. Es ist dasselbe Muster, das React populär gemacht hat, aber mit Web-Standards statt Bibliotheksabstraktionen.
Hier ist etwas, das viele Entwickler überrascht: Man muss nicht jedes Detail der Web-Components-Spezifikation beherrschen, bevor man nützliche Dinge bauen kann. Die Grundlagen sind bemerkenswert zugänglich.
Ein minimales Custom Element sieht so aus:
class TaskCard extends HTMLElement {
connectedCallback() {
this.innerHTML = `
<div class="task">
<h3>${this.getAttribute('title')}</h3>
<p>${this.getAttribute('description')}</p>
</div>
`;
}
}
customElements.define('task-card', TaskCard);
Das ist eine funktionierende Komponente. Sie ist nicht produktionsreif — es fehlt Reaktivität, Kapselung und ordentliche Lifecycle-Behandlung — aber sie zeigt, wie zugänglich der Einstiegspunkt ist. Von diesem einfachen Anfang aus kann man zu anspruchsvolleren Implementierungen iterieren, während das Verständnis wächst.
Hier transformieren moderne KI-Assistenten das Lernerlebnis. Man kann beschreiben, was eine Komponente tun soll, erhält eine funktionierende Implementierung und kann dann Fragen zu den Teilen stellen, die man nicht versteht. Die KI kann erklären, warum composed: true für Events wichtig ist, die Shadow-DOM-Grenzen überqueren müssen. Sie kann den Unterschied zwischen connectedCallback und constructor zeigen. Sie kann helfen, zu besseren Mustern umzugestalten, während die Anforderungen sich entwickeln.
Man muss nicht die gesamte MDN-Dokumentation zu Web Components lesen, bevor man die erste echte Komponente baut. Stattdessen kann man durch Tun lernen, mit einem KI-Partner, der die Spezifikation tiefgehend versteht und Fragen im Kontext beantworten kann.
Dieser Ansatz — erst bauen, dann tiefgehend verstehen — funktioniert bemerkenswert gut mit Web-Standards. Die Muster sind einfacher als Framework-Muster, weil es weniger Abstraktion gibt. Wenn etwas nicht funktioniert, ist der Suchraum für Fehler kleiner. Wenn man verstehen will, warum etwas funktioniert, gibt es weniger Schichten zu durchdringen.
Betrachten wir ein realistisches Szenario: ein Dashboard mit mehreren unabhängigen Panels, die auf einen gemeinsamen Filter reagieren müssen.
Ohne Frameworks könnte man dies mit einer einfachen ereignisgesteuerten Architektur strukturieren:
// FilterPanel löst Event aus, wenn sich Kriterien ändern
this.dispatchEvent(new CustomEvent('filters-changed', {
detail: { dateRange: this.selectedRange, categories: this.selectedCategories },
bubbles: true
}));
// Dashboard-Hülle lauscht und leitet an Kinder weiter
document.addEventListener('filters-changed', (e) => {
document.querySelectorAll('[data-filterable]').forEach(panel => {
panel.applyFilters(e.detail);
});
});
Jede Panel-Komponente implementiert ihre eigene applyFilters-Methode. Die Panels wissen nichts voneinander. Die Filter-Komponente weiß nichts von den Panels. Die Dashboard-Hülle bietet minimale Koordination. Komponenten können unabhängig entwickelt, getestet und wiederverwendet werden.
Dieses Muster skaliert. Wenn man mehr Panels hinzufügt, implementieren sie einfach die erwartete Schnittstelle. Wenn man mehr Event-Typen hinzufügt, wächst die Koordinationslogik proportional, nicht exponentiell.
Einer der praktischsten Vorteile von Web Components ist die Shadow-DOM-Kapselung. Die Stile einer Komponente dringen nicht nach außen, und globale Stile dringen nicht hinein (es sei denn, man erlaubt es explizit).
class StyledCard extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
}
connectedCallback() {
this.shadowRoot.innerHTML = `
<style>
.card { padding: 1rem; border-radius: 8px; background: #f5f5f5; }
h3 { margin: 0 0 0.5rem 0; color: #333; }
</style>
<div class="card">
<h3><slot name="title"></slot></h3>
<slot></slot>
</div>
`;
}
}
Diese Stile wirken nur auf diese Komponente. Man kann einfache, semantische Klassennamen verwenden, ohne sich um Kollisionen zu sorgen. Man kann Stile umgestalten, ohne Angst zu haben, anderswo etwas kaputtzumachen.
Das ist Kapselung, die tatsächlich kapselt. Es ist das, was CSS Modules, CSS-in-JS, BEM und unzählige andere Ansätze zu erreichen versucht haben — direkt in die Plattform eingebaut.
Web Components sind nicht immer die richtige Wahl. Wenn das Team React bereits tiefgehend kennt und damit schnell arbeitet, hat diese gemeinsame Expertise echten Wert. Wenn man etwas baut, das von Entwicklern gewartet wird, die Framework-Muster erwarten, könnten Web Components Reibung erzeugen.
Für neue Projekte jedoch — besonders kleinere Teams oder Einzelentwickler, die Produkte bauen, die jahrelang laufen müssen — verdienen Web Components ernsthafte Erwägung. Die reduzierte Komplexität, verbesserte Stabilität und kleineren Bundle-Größen schaffen echte Vorteile.
Und es gibt einen interessanten Hybridweg: Viele Frameworks arbeiten mittlerweile gut mit Web Components zusammen. Man kann Custom Elements schrittweise in eine bestehende React- oder Vue-Anwendung einführen. Man kann Web Components in Framework-spezifische Bindings einwickeln. Migration kann inkrementell statt revolutionär erfolgen.
Der Weg zum Bauen mit Web Components ist überraschend kurz:
Eine einfache Komponente bauen. Etwas mit einem Template, vielleicht ein oder zwei Attributen. Beobachten, wie sie sich in das DOM einhängt.
Interaktivität hinzufügen. Events innerhalb der Komponente behandeln. Das DOM als Reaktion aktualisieren. Die Direktheit des Arbeitens ohne Virtual-DOM-Abstraktion erleben.
Kommunikation implementieren. Eine Komponente ein Custom Event auslösen lassen. Eine andere darauf lauschen lassen. Spüren, wie natürlich das Event-System die Komponentenkoordination handhabt.
Mit Shadow DOM kapseln. Scoped Styles hinzufügen. Slots für Komposition nutzen. Schätzen, wie Kapselung das mentale Modell vereinfacht.
Iterieren und erweitern. Mehr Komponenten bauen. KI zu Hilfe nehmen, wenn man auf unbekanntes Terrain stößt. Die Lifecycle-Callbacks lernen, wenn man sie braucht.
Jeder Schritt lehrt etwas Nützliches. Jede gebaute Komponente erweitert das Verständnis. Und anders als Framework-Wissen, das veralten könnte, wird das Verständnis der Web-Plattform über Jahre akkumulieren.
Wir befinden uns in einem interessanten Moment. Die Plattform hat die Fähigkeiten eingeholt — und in mancher Hinsicht übertroffen —, die Frameworks vor einem Jahrzehnt unverzichtbar machten. Die Werkzeuge existieren. Die Browser-Unterstützung ist universell. Die Muster sind gut dokumentiert.
Was gefehlt hat, ist Schwung. Entwickler orientieren sich an dem, was populär ist, und Frameworks haben so lange die Wahrnehmung dominiert, dass viele die Alternative nie ernsthaft evaluiert haben.
Aber Trends ändern sich. Die Komplexität des JavaScript-Ökosystems ist als Problem anerkannt. Die Attraktivität einfacherer, stabilerer Grundlagen wächst, während Entwickler des ständigen Wechsels müde werden. KI-Assistenten machen das Erlernen neuer Ansätze schneller und weniger einschüchternd.
Web Components bieten etwas Wertvolles: einen Weg, moderne, anspruchsvolle Oberflächen mit Technologie zu bauen, die auch in Jahrzehnten noch funktionieren wird. Für Entwickler, die bereit sind, jenseits des Framework-Mainstreams zu erkunden, wartet ein ruhigerer, eleganterer Pfad.
Die Werkzeuge sind bereit. Die Browser sind bereit. Vielleicht ist es Zeit, neu zu entdecken, was die Web-Plattform kann.
Sprechen wir über Ihre reale Situation. Möchten Sie Auslieferung beschleunigen, technische Blockaden beseitigen oder prüfen, ob eine Idee mehr Investition verdient? Ich höre Ihren Kontext und gebe 1-2 praktische Empfehlungen. Ohne Pitch, ohne Verpflichtung. Vertraulich und direkt.
Zusammenarbeit beginnen