Googles Core Web Vitals er ikke lenger valgfritt for SEO i 2026. Disse metrikkene påvirker direkte søkerangeringer, og INP (Interaction to Next Paint) har blitt den mest utfordrende for WordPress-nettsteder. Mens LCP og CLS kan fikses med bildeoptimalisering og plassreservasjoner i layout, krever INP at du tenker fundamentalt nytt om hvordan JavaScript kjøres på sidene dine.
INP erstattet FID (First Input Delay) som Core Web Vital i mars 2024. Forskjellen er betydelig: FID målte bare den første interaksjonen, mens INP måler hver interaksjon gjennom hele sidebesøket. Et nettsted kunne score bra på FID, men samtidig ha elendig INP - og det er nettopp situasjonen for mange WordPress-nettsteder.
Forstå Core Web Vitals i 2026
De tre metrikkene som teller
| Metrikk | Hva den måler | Bra | Trenger forbedring | Dårlig |
|---|---|---|---|---|
| LCP (Largest Contentful Paint) | Lastehastighet | < 2,5s | 2,5-4s | > 4s |
| INP (Interaction to Next Paint) | Responsivitet | < 200ms | 200-500ms | > 500ms |
| CLS (Cumulative Layout Shift) | Visuell stabilitet | < 0,1 | 0,1-0,25 | > 0,25 |
Hvorfor INP er vanskeligst å fikse
LCP handler primært om serverhastighet og bildeoptimalisering - velkjente problemer med tydelige løsninger. CLS handler om å reservere plass til dynamisk innhold - en CSS- og HTML-disiplin. INP handler derimot om effektiviteten til JavaScript-kjøring - et fundamentalt vanskeligere problem fordi det krever forståelse av nettleserens hovedtråd, oppgaveplanlegging og hendelseshåndtering.
WordPress-nettsteder er spesielt sårbare for dårlig INP av flere grunner:
- Plugin-bloat - hver plugin kan legge til JavaScript som blokkerer hovedtråden
- Page buildere - Elementor, Divi og WPBakery legger til tunge frontend-rammeverk
- Tredjepartsskript - analytikk, annonser, chat-widgets og sosiale embeds konkurrerer alle om tid på hovedtråden
- jQuery-avhengighet - mange WordPress-temaer og plugins er fortsatt avhengige av jQuery, som legger til over 85KB blokkerende JavaScript
- Ingen code splitting - tradisjonelle WordPress-temaer laster all JavaScript på hver eneste side
Hvordan INP fungerer
Interaksjonens livssyklus
Når en bruker klikker på en knapp, tapper en lenke eller trykker på en tast, behandler nettleseren det i tre faser:
- Inndataforsinkelse - tiden mellom den fysiske interaksjonen og det øyeblikket nettleseren begynner å kjøre hendelsesbehandleren (forårsaket av at hovedtråden er opptatt med andre oppgaver)
- Behandlingstid - tiden det tar å kjøre alle hendelsesbehandlere for denne interaksjonen
- Presentasjonsforsinkelse - tiden det tar å rendre den visuelle oppdateringen etter at hendelsesbehandlerne er ferdige
INP = Inndataforsinkelse + Behandlingstid + Presentasjonsforsinkelse
Metrikken fanger den verste interaksjonen (nærmere bestemt 98. persentilen) gjennom hele sidebesøket. Det betyr at en eneste treg interaksjon kan ødelegge INP-scoren din, selv om alle andre interaksjoner er raske.
Hva teller som en interaksjon
Ikke alle brukerhandlinger utløser INP-måling. Her er hva som teller:
- Klikk på knapper, lenker, vippebrytere og menyer
- Tap på mobilskjerm (touch-hendelser)
- Tastetrykk i inndatafelt, søkebokser og tekstområder
- IKKE scrolling (scroll måles separat og påvirker ikke INP)
- IKKE hovring (musepeker over et element utløser ikke INP alene)
Denne distinksjonen er viktig. Mange utviklere optimaliserer scroll-ytelse og tror de forbedrer INP, men det er to helt forskjellige ting. INP handler om diskrete brukerhandlinger som klikk og tastetrykk.
Måle INP på WordPress-nettsteder
Google Search Console (feltdata)
Den viktigste datakilden for INP-måling. Naviger til Core Web Vitals → Mobil/Datamaskin i Search Console. Her ser du ekte brukerdata for INP aggregert over 28 dager. Sider grupperes etter URL-mønster og klassifiseres som Bra, Trenger forbedring eller Dårlig.
Search Console gir deg et helhetsbilde av hvordan hele nettstedet presterer. Start alltid her for å identifisere hvilke sidegrupper som har problemer. Mobildata er spesielt viktig fordi mobile enheter har svakere prosessorer, noe som gjør INP-problemer mer merkbare.
PageSpeed Insights (lab + felt)
Skriv inn en URL og få både:
- Feltdata - ekte brukermålinger fra Chrome UX Report (CrUX)
- Labdata - simulerte målinger fra Lighthouse
For INP er feltdata langt viktigere enn labdata. Labtester utløser kanskje ikke de samme interaksjonene som ekte brukere gjennomfører. Et nettsted kan ha perfekte lab-resultater, men dårlig INP i felten fordi reelle brukere klikker på elementer som utløser tung JavaScript.
PageSpeed Insights viser også hvilke skript som blokkerer hovedtråden og gir spesifikke anbefalinger for forbedring.
Chrome DevTools (feilsøking)
Åpne DevTools → Performance-panelet → klikk Record → interager med siden → klikk Stop. Se etter:
- Lange oppgaver (gule/røde søyler) - enhver oppgave over 50ms blokkerer hovedtråden og gjør interaksjoner trege
- Hendelsesbehandlere - hvor lang tid hvert klikk eller tap bruker på å bli behandlet
- Layout thrashing - tvungne synkrone layout-beregninger under interaksjoner som tvinger nettleseren til å beregne layout gjentatte ganger
I Performance-panelet kan du klikke på individuelle interaksjoner for å se nøyaktig hva som forårsaket forsinkelsen. Se etter «Long Task»-markører og sjekk hvilke skript som kjører i den perioden.
WordPress-spesifikke INP-fikser
1. Utsett ikke-kritisk JavaScript
Den mest effektive enkeltfiksen. De fleste WordPress-plugins laster JavaScript i <head>, noe som blokkerer hovedtråden før siden i det hele tatt er ferdig rendret:
<!-- Før: blokkerende -->
<script src="plugin-slider.js"></script>
<!-- Etter: utsatt -->
<script src="plugin-slider.js" defer></script>
Plugins som har størst utbytte av utsetting:
- Analytikk (GA4, GTM) - legg til
defereller last viarequestIdleCallback - Chat-widgets (Intercom, Tawk.to) - last etter brukerscroll eller etter 5 sekunder
- Sosiale embeds (Facebook, Twitter) - last kun når de er synlige (bruk Intersection Observer)
- Slidere og karuseller - utsett initialisering til de er synlige i viewporten
Ved å utsette disse skriptene frigjør du hovedtråden slik at den kan reagere raskt på brukerinteraksjoner i stedet for å bruke tid på å laste kode brukeren kanskje aldri trenger.
2. Fjern ubrukt plugin-JavaScript
Revidering av hvilke plugins som faktisk trenger frontend-JavaScript er avgjørende. Mange plugins laster skript på hver eneste side, selv om funksjonaliteten bare trengs på én:
# List alle innkøede skript på en side
wp eval 'global $wp_scripts; foreach($wp_scripts->queue as $s) echo $s . "\n";'
Vanlige syndere:
- Contact Form 7 laster JavaScript og CSS på hver eneste side, men skjemaet finnes bare på kontaktsiden → betinget lasting med
is_page() - WooCommerce sin cart fragments AJAX-forespørsel kjører på alle sider → deaktiver på sider utenfor butikken
- Gutenberg blokk-CSS/JS lastes for alle blokker, selv de som ikke brukes på gjeldende side → fjern ubrukte blokkstiler
For hver plugin som laster frontend-JavaScript, still deg selv spørsmålet: trenger denne siden virkelig dette skriptet? Svaret er overraskende ofte nei.
3. Bryt lange oppgaver
Enhver JavaScript-oppgave over 50ms blokkerer hovedtråden og gjør at brukerinteraksjoner må vente. Bruk scheduler.yield() (moderne nettlesere) eller setTimeout (fallback) for å dele opp lange oppgaver i mindre biter:
// Bryt en lang løkke i mindre deler
async function processItems(items) {
for (const item of items) {
processItem(item);
// Gi hovedtråden tilbake til nettleseren mellom elementer
if (navigator.scheduling?.isInputPending?.()) {
await scheduler.yield();
}
}
}
scheduler.yield() er spesielt kraftig fordi det lar nettleseren behandle ventende brukerinteraksjoner mellom hver oppgavedel. Dette betyr at selv om nettstedet ditt har tung JavaScript-prosessering, vil klikk og tastetrykk bli behandlet uten merkbar forsinkelse.
For eldre nettlesere som ikke støtter scheduler.yield() kan du bruke setTimeout med 0ms forsinkelse som fallback:
function yieldToMain() {
return new Promise(resolve => setTimeout(resolve, 0));
}
4. Bruk passive hendelseslyttere
Scroll- og touch-hendelseslyttere kan blokkere nettleseren fra å scrolle jevnt. Ved å markere dem som passive forteller du nettleseren at hendelsesbehandleren ikke kommer til å kalle preventDefault(), noe som lar nettleseren scrolle umiddelbart uten å vente:
// Før: blokkerende
element.addEventListener('touchstart', handler);
// Etter: passiv (forteller nettleseren at scrolling ikke vil bli forhindret)
element.addEventListener('touchstart', handler, { passive: true });
Denne endringen er spesielt viktig for mobilbrukere, der touch-hendelser er den primære interaksjonsformen. Mange WordPress-temaer og plugins registrerer touch-lyttere uten å markere dem som passive, noe som fører til treg scrolling og dårligere INP.
5. Optimaliser DOM-størrelse
Store DOM-trær (over 1500 elementer) bremser hver eneste interaksjon fordi nettleseren må beregne stiler og layout på nytt for flere elementer hver gang noe endres:
- Fjern unødvendige wrapper-div-er som page buildere ofte genererer
- Lazy-load innhold under folden med Intersection Observer
- Bruk virtuell scrolling for lange lister (for eksempel produktlister i nettbutikker)
- Forenkle page builder-oppsett ved å bruke færre nestede seksjoner og kolonner
En typisk Elementor-side kan ha 3000–5000 DOM-elementer. Ved å forenkle oppsettet og fjerne unødvendige nestede containere kan du ofte halvere dette tallet, noe som gir merkbar forbedring i INP.
6. Eliminer jQuery der det er mulig
jQuery legger til 85KB JavaScript og blokkerer hovedtråden under initialisering. Mange WordPress-temaer inkluderer jQuery selv om de knapt bruker det. Moderne JavaScript gir de samme mulighetene uten ekstra bibliotek:
// jQuery: document.ready
$(function() { /* ... */ });
// Moderne: DOMContentLoaded
document.addEventListener('DOMContentLoaded', () => { /* ... */ });
// jQuery: velg elementer
$('.my-class');
// Moderne: querySelectorAll
document.querySelectorAll('.my-class');
// jQuery: legg til hendelse
$('.btn').on('click', function() { /* ... */ });
// Moderne: addEventListener
document.querySelector('.btn').addEventListener('click', () => { /* ... */ });
// jQuery: AJAX
$.ajax({ url: '/api', success: function(data) { /* ... */ } });
// Moderne: fetch
fetch('/api').then(res => res.json()).then(data => { /* ... */ });
Å erstatte jQuery med native JavaScript er ikke alltid en enkel jobb, spesielt på nettsteder med mange plugins som er avhengige av det. Start med å identifisere om temaet ditt faktisk trenger jQuery. Hvis det eneste som bruker jQuery er et par enkle velgere og hendelseslyttere, er det verdt å skrive dem om.
Avansert INP-optimalisering
Web Workers for tunge beregninger
Flytt CPU-intensive operasjoner bort fra hovedtråden til en Web Worker. Dette er spesielt nyttig for databehandling, sortering av store lister eller komplekse beregninger som ellers ville blokkert interaksjoner:
// main.js - flytt prosessering til en worker
const worker = new Worker('heavy-task.js');
worker.postMessage(data);
worker.onmessage = (event) => updateUI(event.data);
// heavy-task.js - kjører i egen tråd
self.onmessage = (event) => {
const result = performHeavyCalculation(event.data);
self.postMessage(result);
};
Web Workers kjører i en separat tråd, noe som betyr at selv om beregningen tar flere sekunder, vil brukerens klikk og tastetrykk fortsatt bli behandlet umiddelbart. Hovedtråden forblir fri til å håndtere interaksjoner.
Content visibility for innhold utenfor skjermen
Fortell nettleseren at den kan hoppe over rendering av innhold som ikke er synlig ennå. Dette reduserer arbeidet nettleseren må gjøre under interaksjoner, fordi færre elementer må beregnes:
/* Hopp over rendering for seksjoner under folden */
.below-fold-section {
content-visibility: auto;
contain-intrinsic-size: 0 500px;
}
content-visibility: auto lar nettleseren utsette rendering av elementer til de er i nærheten av viewporten. contain-intrinsic-size gir nettleseren et estimat av størrelsen, slik at scrollbare ikke hopper rundt. Denne teknikken kan dramatisk redusere renderings-arbeidet og forbedre INP, spesielt på lange sider med mye innhold.
requestIdleCallback for ikke-presserende arbeid
Utsett ikke-essensielt arbeid til perioder der nettleseren er ledig. Dette sikrer at viktige interaksjoner alltid prioriteres:
// Last analytikk i en ledig periode
requestIdleCallback(() => {
loadGoogleAnalytics();
}, { timeout: 3000 }); // fallback: last innen 3 sekunder uansett
// Initialiser ikke-kritiske UI-elementer når nettleseren har tid
requestIdleCallback(() => {
initializeSocialShareButtons();
initializeLazyImages();
});
requestIdleCallback er ideell for oppgaver som analytikk-initialisering, forhåndshenting av ressurser og oppsett av ikke-kritiske UI-komponenter. Timeout-parameteren sikrer at arbeidet blir utført innen en viss tid, selv om nettleseren aldri blir helt ledig.
Headless-fordelen for INP
Tradisjonell WordPress sender alt innhold sammen med store mengder JavaScript til nettleseren. Headless-arkitektur snur dette på hodet ved å skille frontend fra backend, noe som gir full kontroll over hvor mye JavaScript som faktisk sendes til brukeren.
Astro: INP tilnærmet null
Astro sender null JavaScript som standard. På sider uten interaktive komponenter gjelder ikke INP i det hele tatt, fordi det ikke finnes noe som blokkerer hovedtråden. Selv med interaktive «islands» (øyer) lastes JavaScript kun for de spesifikke komponentene som trenger det - resten er statisk HTML.
For et WordPress-nettsted som bruker Astro som frontend betyr dette at bloggsider, informasjonssider og landingssider kan ha en INP på tilnærmet null, mens interaktive elementer som søkefelt, filtre og skjemaer lastes isolert uten å påvirke resten av siden.
Next.js: React Server Components
Next.js med React Server Components rendrer brukergrensesnittet på serveren og sender kun nødvendig klient-JavaScript. Kombinert med automatisk code splitting laster hver side bare den JavaScripten den faktisk trenger.
App Router i Next.js gjør dette spesielt effektivt ved å la deg velge nøyaktig hvilke komponenter som skal kjøre på klienten (med 'use client'-direktivet) og hvilke som kun rendres på serveren.
Ytelsessammenligning
| Tilnærming | Typisk INP | JavaScript lastet |
|---|---|---|
| Tradisjonelt WordPress + plugins | 300-800ms | 500KB-2MB |
| Optimalisert WordPress (utsatte skript) | 150-300ms | 200-500KB |
| Next.js (App Router + RSC) | 50-150ms | 50-200KB |
| Astro (statisk + øyer) | 0-50ms | 0-50KB |
Forskjellen er dramatisk. Et tradisjonelt WordPress-nettsted med en håndfull plugins kan enkelt sende over 1MB JavaScript til nettleseren. Astro sender i mange tilfeller ingen JavaScript i det hele tatt. Denne forskjellen oversettes direkte til bedre INP-scorer og dermed bedre brukeropplevelse og søkerangeringer.
Sjekkliste for INP-optimalisering
- Sjekk Search Console Core Web Vitals for gjeldende INP-scorer
- Identifiser sider med dårligst INP ved hjelp av PageSpeed Insights
- Utsett all ikke-kritisk JavaScript (
deferellerasync) - Last plugin-skript betinget - kun på sider som faktisk trenger dem
- Fjern eller erstatt jQuery-avhengig kode der det er mulig
- Legg til
{ passive: true }på scroll- og touch-hendelseslyttere - Bryt lange oppgaver med
scheduler.yield()ellersetTimeout - Lazy-load innhold under folden og tredjepartsembeds
- Reduser DOM-størrelse til under 1500 elementer
- Vurder migrering til Astro eller Next.js for den mest dramatiske forbedringen
- Overvåk felt-INP i Search Console i 28 dager etter endringer
Konklusjon
INP er Core Web Vital-metrikken som skiller nettsteder som føles raske fra de som føles trege. Mens LCP måler lastehastighet og CLS måler visuell stabilitet, måler INP hvordan nettstedet føles når du interagerer med det. Et nettsted kan lastes raskt og se stabilt ut, men likevel føles tregt hvis klikk og tastetrykk ikke gir umiddelbar respons.
For WordPress-nettsteder krever veien til god INP disiplinert JavaScript-styring: utsett det du kan, fjern det du ikke trenger, og bryt opp det som gjenstår i korte oppgaver. Hver enkelt plugin, hvert tredjepartsskript og hver hendelseslytter påvirker hvordan responsivt nettstedet føles.
Investering i INP-optimalisering gir direkte avkastning i form av bedre søkerangeringer, høyere brukerengasjement og bedre konverteringsrater. Hvert millisekund med INP-forbedring gjør nettstedet ditt mer responsivt, og Google belønner det med bedre synlighet i søkeresultatene.
For nettsteder der tradisjonell WordPress-optimalisering ikke er nok, kan et arkitekturskifte til Headless med Astro eller Next.js gi den mest dramatiske forbedringen - fra hundrevis av millisekunder ned til nesten null.
Trenger du hjelp med å optimalisere Core Web Vitals? Se våre WordPress hastighetsoptimaliseringstjenester eller kontakt oss for en gratis ytelsesanalyse.


