Lange Tasks im Main Thread
Große JavaScript-Tasks blockieren den Browser dabei, eine Interaktion schnell zu beginnen oder abzuschließen. Sie können aus First-Party-Bundles, Plugins oder Drittanbieter-Scripts kommen.
Schlechtes INP bedeutet, dass die Seite nach einer Nutzerinteraktion zu lange braucht, um visuell zu reagieren. In WordPress liegt die Ursache meist in Main-Thread-Arbeit: Plugin-JavaScript, Page-Builder-Widgets, Drittanbieter-Tags, teure DOM-Updates oder mehrere kleine Handler auf demselben Klick. Ich trace die Interaktion und reduziere die Arbeit darum herum.
INP beobachtet Interaktionslatenz über einen Besuch hinweg. Dadurch reagiert die Metrik besonders empfindlich auf JavaScript-Arbeit, die sich nach dem Laden ansammelt – Marketing-Tags, Slider, Builder, Filter, Validierung und große DOM-Updates.
Große JavaScript-Tasks blockieren den Browser dabei, eine Interaktion schnell zu beginnen oder abzuschließen. Sie können aus First-Party-Bundles, Plugins oder Drittanbieter-Scripts kommen.
Ein Click Handler, der Layout Reads/Writes durchführt, über ein großes DOM iteriert oder Komponenten synchron initialisiert, kann Processing Delay erzeugen.
Analytics, Consent, Chat, Ads und Experimentation-Scripts können genau dann denselben Main Thread belegen, wenn der Nutzer interagieren will.
Mega Menus, Filter, Popups und Builder-Widgets können teure Style-/Layout-/Paint-Arbeit auslösen, wenn sie viele Nodes hinzufügen, entfernen oder verändern.
Manche Plugins initialisieren komplexe Widgets beim ersten Einsatz. Arbeit zu verzögern ist nur sinnvoll, wenn der erste Nutzerklick nicht die komplette Initialisierung bezahlen muss.
AJAX-Suche, Filter und Checkout vermischen Browser- und Netzwerk-/Serverlatenz, daher kann schlechte Reaktionsfähigkeit Frontend- und Backend-Profiling zusammen erfordern.
Ich reproduziere das langsame Menü, den Filter, das Formular, die Suche oder Checkout-Aktion in DevTools und – wo verfügbar – in Felddaten/RUM. So wird keine Zeit auf Scripts verschwendet, die mit der tatsächlich langsamen Interaktion nichts zu tun haben.
Das Event in Input Delay, Handler Processing und Presentation Delay zerlegen, statt den finalen INP-Wert als eine undurchsichtige Zahl zu behandeln.
Scripts identifizieren, die vor und während der Interaktion laufen, und sie auf Theme-Code, Plugins oder Drittanbieter zurückführen.
Listener Stacks und Komponenten-Code auf synchrone Arbeit, Forced Layout und wiederholte DOM-Operationen prüfen.
Große oder tief verschachtelte Strukturen machen Style-/Layout-Updates teurer, besonders bei Buildern, Mega Menus und facettierten Filtern.
Ausführung von Consent/Analytics/Chat messen und nicht-kritische Arbeit soweit möglich aus interaktionssensitiven Zeitfenstern verschieben.
Bei Filtern, Suche und Checkout Browser-Handler-Zeit von Request-/Server-Zeit und Response Rendering trennen, damit die richtige Ebene optimiert wird.
Ziel ist nicht, wahllos jedes Script zu verzögern. Ziel ist, kritische Interaktionen responsiv zu halten und gleichzeitig Analytics, Consent und Anwendungsfunktionalität zu bewahren.
Felddaten-Hinweise und geschäftskritische Flows nutzen – Menü, Produktfilter, Add to Cart, Checkout, Suche, Formular – statt zufällige Klicks zu testen.
Scripts von Seiten entladen, auf denen sie nicht gebraucht werden, und doppelte oder veraltete Libraries/Widget-Codes entfernen, wenn sicher.
Lange synchrone Arbeit refaktorieren, DOM-Churn reduzieren und nicht dringende Arbeit so schedulen, dass der Browser früher visuelles Feedback painten kann.
Menüs, Filter, Popups und Builder-Widgets vereinfachen, die teures Layout oder wiederholte Initialisierung auslösen.
Marketing-, Chat- und Experimentation-Code mit bewussten Prioritäten und Consent-Verhalten laden und anschließend bestätigen, dass Measurement weiter funktioniert.
Nach Produktions-Minification-/Cache-/CDN-Einstellungen erneut testen, weil Script-Reihenfolge und Timing von Staging abweichen können.
Die Übergabe mappt schlechtes INP auf konkrete Scripts/Komponenten, damit zukünftige Änderungen gegen dieselben Interaktionspfade geprüft werden können.
Das konkrete Event und die Main-Thread-Arbeit, die für die langsame Antwort verantwortlich sind.
Theme-/Plugin-/Drittanbieter-Quellen, die mit Long Tasks rund um die Interaktion verknüpft sind.
Gezieltes Entladen, Refactoring, Scheduling oder Komponentenänderungen.
Klare Entscheidung darüber, was sofort, nach Consent, im Idle oder nur auf benötigten Seiten geladen wird.
Menüs, Filter, Formulare, Add-to-Cart und Checkout-Verhalten nach JavaScript-Änderungen validiert.
Wie der Trace reproduziert wird und was überwacht werden soll, während sich Felddaten ansammeln.
Bei kombinierten LCP-, INP- und CLS-Problemen nutze den vollständigen WordPress-Core-Web-Vitals-Service.
Für Core Web Vitals gilt Interaction to Next Paint von 200 Millisekunden oder weniger am 75. Perzentil als gut. Felddaten sind das Ziel; Lab-Interaction-Traces zeigen, warum eine Aktion langsam ist.
Page Caching kann Serverantwort und initiales Laden verbessern, aber die meisten INP-Probleme entstehen durch Main-Thread-Interaktionsarbeit nach dem Laden. JavaScript, DOM/Layout und Drittanbieter-Scripts brauchen separate Aufmerksamkeit.
Langsamere mobile CPUs machen lange JavaScript-Tasks und DOM-Arbeit sichtbarer. Eine Interaktion, die auf einer Desktop-Workstation okay wirkt, kann auf Mittelklasse-Smartphones den Grenzwert überschreiten.
Es gibt keine verlässliche universelle Liste. Builder, Slider, Popups, Chat, Consent, Analytics, Filter und Formulare können je nach Konfiguration beitragen. Trace die konkrete Interaktion und mappe das ausgeführte Script auf seine Quelle.
Nein. Teure Initialisierung auf die erste Interaktion zu verschieben kann INP sogar verschlechtern. Delay-Strategien sollten nicht-kritische Arbeit von interaktionssensitiven Momenten fernhalten.
Bei Interaktionen, die auf Netzwerkrequests warten – Filter, Suche, Checkout – umfasst die wahrgenommene Antwort Browser- und Serverarbeit. Der Trace sollte diese Ebenen vor der Optimierung trennen.