Interaction to Next Paint (INP)

Pubblicato: 6 maggio 2022, ultimo aggiornamento: 9 settembre 2025

Browser Support

  • Chrome: 96.
  • Edge: 96.
  • Firefox Technology Preview: supported.
  • Safari: not supported.

Source

I dati di utilizzo di Chrome mostrano che il 90% del tempo di un utente su una pagina viene trascorso dopo il caricamento. Pertanto, è importante misurare attentamente la reattività durante l'intero ciclo di vita della pagina. Questo è ciò che valuta la metrica INP.

Una buona reattività significa che una pagina risponde rapidamente alle interazioni. Quando una pagina risponde a un'interazione, il browser presenta un feedback visivo nel frame successivo che disegna. Il feedback visivo ti indica, ad esempio, se un articolo che aggiungi a un carrello della spesa online viene effettivamente aggiunto, se un menu di navigazione mobile è stato aperto, se i contenuti di un modulo di accesso vengono autenticati dal server e così via.

Alcune interazioni richiedono naturalmente più tempo di altre, ma per quelle particolarmente complesse è importante fornire rapidamente un feedback visivo iniziale per comunicare all'utente che qualcosa sta accadendo. Il frame successivo che il browser visualizzerà è la prima opportunità per farlo.

Pertanto, l'intento di INP non è misurare tutti gli effetti finali di un'interazione, come i recuperi di rete e gli aggiornamenti dell'interfaccia utente da altre operazioni asincrone, ma il tempo in cui viene bloccato il successivo rendering. Ritardando il feedback visivo, gli utenti potrebbero avere l'impressione che la pagina non risponda abbastanza rapidamente. L'INP è stato sviluppato per aiutare gli sviluppatori a misurare questa parte dell'esperienza utente.

Nel seguente video, l'esempio sulla destra fornisce un feedback visivo immediato che indica l'apertura di una sezione a fisarmonica. La scarsa reattività è illustrata nell'esempio a sinistra e mostra come può creare esperienze utente scadenti.

Un esempio di reattività scarsa rispetto a una buona. A sinistra, le attività lunghe impediscono l'apertura della sezione a fisarmonica. L'utente fa clic più volte pensando che l'esperienza sia interrotta. Quando il thread principale recupera, elabora gli input ritardati, causando l'apertura e la chiusura impreviste della sezione a fisarmonica. A destra, una pagina più reattiva apre la sezione a fisarmonica rapidamente e senza problemi.

Questa guida spiega come funziona l'INP, come misurarlo e indica le risorse per migliorarlo.

Che cos'è INP?

L'INP è una metrica che valuta l'adattabilità complessiva di una pagina alle interazioni degli utenti osservando la latenza di tutti i clic, tocchi e interazioni da tastiera che si verificano durante la visita di un utente a una pagina. Il valore INP finale corrisponde all'interazione più lunga osservata, ignorando i valori anomali.

Dettagli su come viene calcolato l'INP

L'INP viene calcolato osservando tutte le interazioni effettuate con una pagina. Per la maggior parte dei siti, l'interazione con la latenza peggiore viene segnalata come INP.

Tuttavia, per le pagine con un numero elevato di interazioni, problemi casuali possono causare un'interazione con latenza insolitamente elevata su una pagina altrimenti reattiva. Più interazioni si verificano in una determinata pagina, più è probabile che ciò accada.

Per fornire una misurazione più precisa della reattività effettiva per le pagine con un numero elevato di interazioni, ignoriamo l'interazione più elevata ogni 50 interazioni. La stragrande maggioranza delle esperienze sulla pagina non ha più di 50 interazioni, quindi viene segnalata più spesso l'interazione peggiore. Il 75° percentile di tutte le visualizzazioni di pagina viene quindi riportato come di consueto, il che elimina ulteriormente i valori anomali per fornire un valore che la stragrande maggioranza degli utenti sperimenta o migliore.

Un'interazione è un gruppo di gestori di eventi che vengono attivati durante lo stesso gesto logico dell'utente. Ad esempio, le interazioni "tocco" su un dispositivo touchscreen includono più eventi, come pointerup, pointerdown e click. Un'interazione può essere guidata da JavaScript, CSS, controlli del browser integrati (come gli elementi del modulo) o una combinazione di questi.

La latenza di un'interazione è costituita dalla durata più lunga di un gruppo di gestori di eventi che guidano l'interazione, dal momento in cui l'utente inizia l'interazione al momento in cui il browser è in grado di disegnare un frame. In rari casi, potrebbe non esserci alcun frame da disegnare, ma l'interazione termina quando il browser sarebbe in grado di disegnare un frame.

Qual è un buon punteggio INP?

È difficile assegnare etichette come "buono" o "scarso" a una metrica di reattività. Da un lato, vuoi incoraggiare pratiche di sviluppo che diano la priorità a una buona reattività. D'altra parte, devi tenere conto del fatto che esiste una notevole variabilità nelle funzionalità dei dispositivi utilizzati dagli utenti per stabilire aspettative di sviluppo raggiungibili.

Per garantire esperienze utente con una buona reattività, una buona soglia da misurare è il 75° percentile dei caricamenti di pagina registrati sul campo, segmentati su dispositivi mobili e computer:

  • Un valore INP inferiore o pari a 200 millisecondi indica che una pagina ha una buona reattività.
  • Un INP superiore a 200 millisecondi e inferiore o uguale a 500 millisecondi indica che la reattività di una pagina richiede miglioramenti.
  • Un INP superiore a 500 millisecondi indica una scarsa reattività della pagina.
I valori INP buoni sono pari o inferiori a 200 millisecondi, quelli scarsi sono superiori a 500 millisecondi e tutti gli altri richiedono miglioramenti.
I valori INP ottimali sono pari o inferiori a 200 millisecondi. I valori scadenti sono superiori a 500 millisecondi.

Che cosa contiene un'interazione?

Un diagramma che mostra un'interazione sul thread principale. L'utente esegue un input durante l'esecuzione delle attività di blocco. L'input viene ritardato fino al completamento di queste attività, dopodiché vengono eseguiti i gestori di eventi pointerup, mouseup e click, quindi viene avviato il rendering e il lavoro di disegno fino alla presentazione del frame successivo.
Il ciclo di vita di un'interazione. Si verifica un ritardo di input fino all'avvio dei gestori di eventi, possibilmente causato da fattori quali attività lunghe nel thread principale. Vengono quindi eseguiti i callback del gestore eventi dell'interazione e si verifica un ritardo prima della presentazione del frame successivo.

Il principale motore dell'interattività è spesso JavaScript, anche se i browser forniscono interattività tramite controlli non basati su JavaScript, come caselle di controllo, pulsanti di opzione e controlli basati su CSS.

Ai fini dell'INP, vengono osservati solo i seguenti tipi di interazione:

  • Fare clic con un mouse.
  • Toccando un dispositivo con touchscreen.
  • Premendo un tasto su una tastiera fisica o sullo schermo.

Le interazioni avvengono nel documento principale o negli iframe incorporati nel documento, ad esempio facendo clic su Riproduci in un video incorporato. Gli utenti finali non sapranno cosa si trova in un iframe o meno, pertanto è necessario l'INP all'interno degli iframe per misurare l'esperienza utente per la pagina di primo livello. Poiché le API web JavaScript non hanno accesso ai contenuti degli iframe, questo potrebbe essere visualizzato come una differenza tra CrUX e RUM.

Le interazioni possono essere costituite da più eventi. Ad esempio, una sequenza di tasti include gli eventi keydown, keypress e keyup. Gli eventi Tocca interazioni contengono gli eventi pointerup e pointerdown. L'evento con la durata più lunga all'interno dell'interazione è quello che contribuisce alla latenza totale dell'interazione.

Rappresentazione di un'interazione più complessa contenente due interazioni. Il primo è un evento mousedown, che produce un frame prima che il pulsante del mouse venga rilasciato, il che avvia un ulteriore lavoro fino a quando non viene presentato un altro frame come risultato.
Rappresentazione di un'interazione con più gestori di eventi. La prima parte dell'interazione riceve un input quando l'utente fa clic su un pulsante del mouse. Tuttavia, prima di rilasciare il tasto del mouse, viene visualizzato un frame. Quando l'utente rilascia il pulsante del mouse, deve essere eseguita un'altra serie di gestori di eventi prima che venga presentato il frame successivo.

Come mostrato nel diagramma, la durata dell'elaborazione di INP include tutti i callback del gestore di eventi all'interno di quel frame. In questo modo, il ritardo di input è il tempo che precede la gestione di qualsiasi callback per un'interazione, la durata dell'elaborazione è il tempo necessario per l'esecuzione di tutti i callback e il ritardo di presentazione è il tempo che intercorre tra l'esecuzione dei callback e la presentazione del frame sullo schermo dell'utente.

L'INP della pagina viene calcolato quando l'utente esce dalla pagina. Il risultato è un singolo valore rappresentativo della reattività complessiva della pagina durante il suo ciclo di vita. Un INP basso indica che una pagina ha risposto in modo affidabile all'input utente.

In che modo INP è diverso dal First Input Delay (FID)?

INP è la metrica successiva a First Input Delay (FID). Sebbene entrambe siano metriche di reattività, FID misurava solo il ritardo di input della prima interazione su una pagina. INP migliora la metrica FID osservando tutte le interazioni su una pagina, a partire dal ritardo di input, fino al tempo necessario per eseguire i gestori di eventi e infine fino a quando il browser non ha visualizzato il frame successivo.

Queste differenze fanno sì che INP e FID siano tipi diversi di metriche di reattività. Mentre FID era una metrica di reattività al caricamento progettata per valutare la prima impressione della pagina sull'utente, INP è un indicatore più affidabile dell'adattabilità complessiva, indipendentemente dal momento in cui si verificano le interazioni nella vita di una pagina.

Cosa succede se non viene segnalato alcun valore INP?

È possibile che una pagina non restituisca alcun valore INP. Ciò può accadere per una serie di motivi, tra cui:

  • La pagina è stata caricata, ma l'utente non ha mai fatto clic, toccato o premuto un tasto sulla tastiera.
  • La pagina è stata caricata, ma l'utente ha interagito con essa utilizzando gesti non misurati, ad esempio lo scorrimento o il passaggio del mouse sopra gli elementi.
  • Si accede alla pagina tramite un bot, ad esempio un crawler di ricerca o un browser headless, per cui non è stato creato uno script per interagire con la pagina.

Come misurare l'INP

L'INP può essere misurato sia sul campo sia in laboratorio, nella misura in cui è possibile simulare interazioni utente realistiche.

Sul campo

Idealmente, il tuo percorso di ottimizzazione dell'INP inizierà con i dati sul campo. Nel migliore dei casi, i dati sul campo del monitoraggio utenti reali (RUM) ti forniranno non solo il valore INP di una pagina, ma anche dati contestuali che evidenziano quale interazione specifica è responsabile del valore INP stesso, se l'interazione si è verificata durante o dopo il caricamento della pagina, il tipo di interazione (clic, pressione di tasti o tocco) e altri tempi preziosi che possono aiutarti a identificare quale parte dell'interazione influiva sulla reattività.

Se il tuo sito web è idoneo per l'inclusione nel Report sull'esperienza utente di Chrome (CrUX), puoi ottenere rapidamente i dati sul campo per l'INP tramite CrUX in PageSpeed Insights (e altri Segnali web essenziali). Come minimo, puoi ottenere un'immagine a livello di origine dell'INP del tuo sito web, ma in alcuni casi puoi anche ottenere dati a livello di URL.

Tuttavia, anche se CrUX può dirti se esiste un problema, non può dirti qual è la causa. Una soluzione RUM può aiutarti a scoprire maggiori dettagli su pagine, utenti o interazioni utente che presentano problemi di reattività. La possibilità di attribuire l'INP a singole interazioni evita congetture e sprechi di energie.

Nel laboratorio

Idealmente, dovresti iniziare a eseguire i test nel lab una volta che i dati sul campo suggeriscono che una pagina ha interazioni lente. I dati sul campo renderanno molto più semplice il lavoro di riproduzione delle interazioni problematiche nel lab.

Tuttavia, è del tutto possibile che tu non disponga di dati concreti. Sebbene l'INP possa essere misurato in alcuni strumenti di laboratorio, il valore INP risultante per una pagina durante i test di laboratorio dipenderà dalle interazioni eseguite durante il periodo di misurazione. I comportamenti degli utenti possono essere imprevedibili e molto variabili, il che significa che i test in laboratorio potrebbero non rilevare le interazioni problematiche nello stesso modo in cui possono farlo i dati sul campo. Inoltre, alcuni strumenti di laboratorio non segnalano l'INP di una pagina perché osservano solo il caricamento di una pagina senza interazioni. In questi casi, il Total Blocking Time (TBT) potrebbe essere una metrica proxy ragionevole per INP, ma non è un sostituto di INP in sé.

Anche se gli strumenti di laboratorio presentano limitazioni per quanto riguarda la valutazione dell'INP di una pagina, esistono alcune strategie per riprodurre le interazioni lente in laboratorio. Le strategie includono il monitoraggio dei flussi utente comuni e il test delle interazioni durante il percorso, nonché l'interazione con la pagina durante il caricamento, quando il thread principale è spesso più occupato, per identificare le interazioni lente durante questa parte cruciale dell'esperienza utente.

Misurare l'INP in JavaScript

Per misurare l'INP in JavaScript, devi misurare i tempi degli eventi per tutte le interazioni e poi prendere il 98° percentile di tutte queste interazioni al momento dello scaricamento della pagina. Puoi fare riferimento al codice sorgente della libreria JavaScript web vitals, che contiene un'implementazione di riferimento su come viene calcolato l'INP.

Nella maggior parte dei casi, il valore INP corrente al momento dello scaricamento della pagina è il valore INP finale per quella pagina, ma esistono alcune importanti eccezioni, come indicato nella sezione successiva. La libreria JavaScript web vitals tiene conto di questi aspetti il più possibile, nei limiti delle API web.

Differenze tra la metrica e l'API

  • Le voci event inferiori a 104 millisecondi non vengono segnalate per impostazione predefinita utilizzando gli osservatori delle prestazioni. Questo valore predefinito può essere modificato quando viene registrato un osservatore delle prestazioni utilizzando il parametro durationThreshold, ma anche questo ha un valore minimo di 16 millisecondi. Per questo motivo, è consigliabile osservare anche la voce first-input, che è anch'essa una voce di temporizzazione dell'evento, ma è garantito che sia osservabile anche quando la sua durata è inferiore a durationThreshold. In questo modo, le pagine con interazioni riportano sempre un valore INP.
  • Il calcolo perfetto dei percentili richiede tecnicamente di conservare tutti i campioni in memoria, il che può essere costoso. Tuttavia, puoi approssimare i percentili, in particolare quelli molto elevati come il 98° percentile, mantenendo un piccolo elenco delle N interazioni peggiori. 10 è una scelta comune.
  • Se una pagina viene ripristinata dalla cache back-forward, il relativo valore INP deve essere reimpostato su zero, poiché gli utenti lo percepiscono come una visita di pagina distinta.
  • L'API non segnala le voci event per le interazioni che si verificano all'interno degli iframe, ma la metrica sì, in quanto fanno parte dell'esperienza utente della pagina. Ciò può essere visualizzato come una differenza tra CrUX e RUM. Per misurare correttamente l'INP, devi prenderli in considerazione. I subframe possono utilizzare l'API per segnalare le proprie voci event-timing al frame principale.

Oltre a queste eccezioni, l'INP presenta una maggiore complessità perché misura l'intero ciclo di vita di una pagina:

  • Gli utenti potrebbero tenere aperta una scheda per un periodo di tempo molto lungo: giorni, settimane, mesi. Infatti, un utente potrebbe non chiudere mai una scheda.
  • Sui sistemi operativi mobile, i browser in genere non eseguono callback di scaricamento della pagina per le schede in background, il che rende difficile segnalare il valore "finale".

Per gestire questi casi, l'INP deve essere segnalato ogni volta che una pagina è in background, oltre a ogni volta che viene scaricata (l'evento visibilitychange copre entrambi gli scenari). I sistemi di analisi che ricevono questi dati dovranno quindi calcolare il valore INP finale nel backend.

Anziché memorizzare e gestire autonomamente tutti questi casi, gli sviluppatori possono utilizzare la libreria JavaScript web-vitals per misurare l'INP, che tiene conto di tutto ciò che è stato menzionato in precedenza, ad eccezione del caso dell'iframe:

import {onINP} from 'web-vitals';

// Measure and log INP in all situations
// where it needs to be reported.
onINP(console.log);

Come migliorare l'INP

È disponibile una raccolta di guide sull'ottimizzazione dell'INP per guidarti nel processo di identificazione delle interazioni lente sul campo e nell'utilizzo dei dati di laboratorio per identificare le cause e ottimizzarle.

Log delle modifiche

Occasionalmente, vengono rilevati bug nelle API utilizzate per misurare le metriche e a volte nelle definizioni delle metriche stesse. Di conseguenza, a volte è necessario apportare modifiche, che possono essere visualizzate come miglioramenti o regressioni nei report e nelle dashboard interni.

Per aiutarti a gestire questa situazione, tutte le modifiche all'implementazione o alla definizione di queste metriche verranno visualizzate in questo changelog.

Se hai feedback su queste metriche, invialo nel gruppo Google web-vitals-feedback.

Verifica le tue conoscenze

Qual è l'obiettivo principale della metrica INP?

Per misurare il tempo necessario per visualizzare i primi contenuti di una pagina.
Errato: questa descrizione si riferisce a First Contentful Paint
Per quantificare la stabilità visiva di una pagina e ridurre al minimo gli spostamenti imprevisti del layout.
Errato. Questa risposta descrive il Cumulative Layout Shift.
Per valutare il tempo necessario affinché una pagina diventi completamente interattiva.
Errato: questo è correlato al tempo di interattività, ma INP si concentra in modo specifico sulla reattività all'input utente
Per ridurre al minimo il tempo che intercorre tra l'inizio di un'interazione da parte di un utente e il rendering del frame successivo, per tutte o la maggior parte delle interazioni avviate dall'utente.
Esatto!

Quali dei seguenti tipi di interazione vengono osservati ai fini del calcolo dell'INP? (Seleziona tutte le opzioni pertinenti)

Fare clic con un mouse.
Esatto!
Scorrere la pagina con la rotellina del mouse o il trackpad.
Errato: l'INP non tiene conto dello scorrimento
Toccando un touchscreen.
Esatto!
Passando il cursore del mouse sopra gli elementi.
Errato: INP non considera il passaggio del mouse
Premere un tasto sulla tastiera.
Esatto!
Aumentare o diminuire lo zoom nella pagina.
Errato: INP non tiene conto dello zoom

Come viene definita la "latenza" di un'interazione per INP?

Il tempo necessario al browser per elaborare i gestori di eventi di un'interazione.
Errato: questo valore tiene conto solo della durata dell'elaborazione, non del ritardo di input o del tempo necessario per presentare il frame successivo
Il tempo medio necessario affinché tutte le interazioni su una pagina producano una risposta visiva.
Errato: l'INP si concentra sull'interazione più lunga, non sulla media
Il tempo necessario al browser per iniziare a elaborare i gestori di eventi associati a un'interazione.
Errato: questo valore tiene conto solo del ritardo di input, non del tempo di elaborazione e rendering
Il tempo che intercorre dall'inizio dell'interazione al momento in cui il frame successivo viene presentato completamente.
Esatto!

Qual è la differenza tra INP e FID?

INP misura il tempo necessario per visualizzare i primi contenuti di una pagina, mentre FID misura la reattività all'input utente.
Errato: questa descrizione si riferisce al First Contentful Paint, non all'INP
L'INP considera l'intera durata di tutte le interazioni, mentre il FID misura solo il ritardo di input della prima interazione.
Esatto!
INP e FID misurano timestamp diversi in cui una pagina diventa interattiva.
Errato: INP e FID misurano la velocità con cui la pagina risponde alle interazioni, indipendentemente dal momento in cui si verificano.
Non c'è alcuna differenza: INP e FID sono solo due nomi diversi per la stessa metrica.
Errato: hanno definizioni distinte

In quali circostanze i dati INP potrebbero non essere disponibili per una pagina in strumenti come PageSpeed Insights?

La pagina utilizza una libreria di misurazione delle prestazioni personalizzata che non segnala i dati INP.
Errato: l'INP viene misurato automaticamente utilizzando le API della piattaforma web e non si basa sulle pagine che segnalano autonomamente le proprie prestazioni tramite librerie personalizzate.
Non sono disponibili dati di interazione sufficienti degli utenti di Chrome per calcolare un valore INP significativo nel set di dati CrUX.
Esatto!
Gli utenti hanno interagito con la pagina solo scorrendo e passando il mouse sopra, azioni che non vengono prese in considerazione per l'INP.
Esatto!
La pagina è creata utilizzando un framework che esegue l'ottimizzazione automatica per INP, quindi non è necessario segnalarlo.
Errato: i framework possono essere utili per INP, ma la metrica è comunque pertinente e viene segnalata se sono disponibili dati

Qual è la strategia più efficace per riprodurre interazioni lente in un ambiente di laboratorio?

Simulazione di un dispositivo di fascia alta con una connessione di rete lenta e inaffidabile per creare condizioni difficili.
Errato: anche se la rete può svolgere un ruolo, è più probabile che le funzionalità del dispositivo espongano interazioni lente
Testare le interazioni solo dopo che la pagina è stata caricata completamente ed è inattiva.
Errato: potrebbero mancare interazioni lente durante il caricamento
Interagisci con la pagina durante il caricamento e segui i flussi utente comuni per identificare potenziali colli di bottiglia.
Esatto!
Concentrandosi su interazioni complesse e casi limite che difficilmente verranno riscontrati dalla maggior parte degli utenti.
Errato: i flussi utente comuni sono più pertinenti per identificare i problemi INP tipici

Questo quiz è stato generato da Gemini 1.5 e rivisto da persone. Condividi il tuo feedback