Diagnosticare e correggere i re-render lenti in React
Scopri perché un componente React è lento, misura con il Profiler e applica le correzioni giuste (posizione dello stato, memo, virtualizzazione, transizioni) con codice prima e dopo. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.
Avanzato · Codice · In attesa di revisione editoriale
Prompt
Agisci come specialista di prestazioni React che diagnostica prima di ottimizzare.
Contesto:
- Codice coinvolto: {{codice}}
- Sintomo osservato: {{sintomo}}
- Dati di misurazione (se presenti): {{misurazioni}}
- Versione di React: {{versione_react}}
Se il codice non basta a capire da dove arrivano props o stato, chiedimi i componenti padre o il context prima di proporre modifiche.
Consegna:
1. Ipotesi ordinate per probabilità sul perché dei re-render o del lavoro in eccesso (stato troppo in alto, valore del context che cambia a ogni render, oggetti o funzioni nuovi a ogni render, liste lunghe non virtualizzate, calcoli costosi nel render, key instabili).
2. Come confermare ogni ipotesi con il Profiler dei React DevTools (cosa registrare, cosa guardare nel flamegraph e in «perché è stato renderizzato») e, se utile, con il pannello Performance del browser.
3. Le correzioni, dalla più semplice alla più complessa: spostare lo stato in basso, passare il contenuto come children, dividere il context, useMemo/useCallback/memo solo dove la misurazione lo giustifica, useDeferredValue o useTransition per i campi di testo, virtualizzazione delle liste.
4. Codice prima e dopo per ogni modifica applicata, con l'effetto atteso.
5. Come verificare il miglioramento con la stessa misurazione e quale soglia considerare sufficiente.
6. Cosa non fare: avvolgere tutto in memo, ottimizzare senza misurare o sacrificare la leggibilità per guadagni minimi.
Vincoli:
- Non inventare tempi né miglioramenti percentuali; se non ho misurazioni, spiega come ottenerle e lascia [DA COMPLETARE].
- Se la versione usa React Compiler, tieni conto che memorizza già automaticamente e adatta i consigli.
- Mantieni identico il comportamento funzionale.
Formato: diagnosi, piano di misurazione, modifiche con blocchi di codice e una checklist finale di verifica.Come usarlo
- Incolla il componente lento e i suoi padri diretti. 2. Descrivi il sintomo con precisione (quale azione, quanto ci mette, su quale dispositivo). 3. Registra una sessione del Profiler, incolla ciò che vedi e applica le modifiche una alla volta misurando ogni volta.
Esempio d'uso
Codice: TabellaOrdini.tsx con 2000 righe e un filtro di testo · Sintomo: digitare nel filtro è lento su un portatile di fascia media · Misurazioni: nessuna · Versione: React 18.
Esempio di risultato
Ipotesi (dalla più alla meno probabile)
- Ogni tasto filtra tutte le 2000 righe e le ri-renderizza nello stesso render urgente.
- Le righe non sono memoizzate e ricevono oggetti nuovi a ogni render.
- Manca la virtualizzazione: il DOM contiene tutte le 2000 righe.
Prima misura
In React DevTools → Profiler, registra mentre digiti 5 lettere. Cerca commit lunghi in TabellaOrdini e attiva «Record why each component rendered». Durata per commit prima della modifica: [DA COMPLETARE].
Modifica 1: separare la digitazione dal filtro
import { memo, useDeferredValue, useMemo, useState } from 'react';
export function TabellaOrdini({ ordini }: { ordini: Ordine[] }) {
const [filtro, setFiltro] = useState('');
const filtroDifferito = useDeferredValue(filtro);
const visibili = useMemo(
() => ordini.filter((o) => o.cliente.toLowerCase().includes(filtroDifferito.toLowerCase())), // [DA COMPLETARE: campo reale]
[ordini, filtroDifferito],
);
return (
<>
<input value={filtro} onChange={(e) => setFiltro(e.target.value)} aria-label="Filtra ordini" />
<Righe ordini={visibili} />
</>
);
}
const Righe = memo(function Righe({ ordini }: { ordini: Ordine[] }) {
return <table><tbody>{ordini.map((o) => <RigaOrdine key={o.id} ordine={o} />)}</tbody></table>;
});
Il campo si aggiorna subito e la lista viene ricalcolata con priorità più bassa; memo evita di ri-renderizzare le righe finché il valore differito non cambia. Se resta lento, il passo successivo è la virtualizzazione…
Dati chiave
- Categoria
- Programmazione e sviluppo · React
- Tipo di output
- Codice
- Livello
- Avanzato
- Pensato per
- ChatGPT, Claude, Gemini e Microsoft Copilot
- Verificato in
- In attesa di verifica editoriale
- Variabili
- Codice coinvolto, Sintomo, Dati di misurazione e Versione di React
- Lingua
- Italiano
- Prezzo
- Gratuito, senza registrazione
- Aggiornato
- 07/11/2026
Domande frequenti
Devo mettere useMemo e useCallback ovunque?
No. Hanno un costo proprio e complicano il codice. Usali quando il Profiler mostra che un calcolo o un re-render specifico pesa, o quando serve un riferimento stabile perché memo funzioni.
Quando serve virtualizzare una lista?
Quando centinaia o migliaia di elementi complessi vengono renderizzati insieme e il Profiler o il pannello Performance mostrano che il costo viene dal montaggio di quei nodi. Con liste brevi raramente conviene.
A cosa serve questo prompt?
Scopri perché un componente React è lento, misura con il Profiler e applica le correzioni giuste (posizione dello stato, memo, virtualizzazione, transizioni) con codice prima e dopo.
Con quali strumenti di IA funziona?
È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.
Come personalizzo il prompt?
Clicca su «Personalizza» e compila le variabili (Codice coinvolto, Sintomo, Dati di misurazione e Versione di React). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.
Serve esperienza per usarlo?
È di livello avanzato: è pensato per persone con esperienza nell'argomento, in grado di valutare e regolare il risultato.
Questo prompt è gratuito?
Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.
Posso fidarmi dell'output dell'IA?
Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.