Skip to main content

useRenderTracker

Description and use case​

useRenderTracker helps identify components that render too often and why. Pass tracked props to log changed keys and optionally trigger warnings when a render threshold is reached.

API signature​

function useRenderTracker(
props?: Record<string, unknown>,
options?: UseRenderTrackerOptions,
): RenderInfo;

Parameters​

NameTypeRequiredDescription
propsRecord<string, unknown>NoObject to diff against previous render using Object.is per key.
options.namestringNoLabel in console output. Defaults to "Component".
options.enabledbooleanNoEnable/disable tracking (dev true, prod false by default).
options.warnAtnumberNoWarn once render count reaches threshold.

Return value​

FieldTypeDescription
countnumberTotal render count while tracking is enabled.
lastRenderTimenumberperformance.now() timestamp of latest render.

Live interactive demo (StackBlitz)​

GitHub Pages does not serve the isolation headers required for embedded StackBlitz WebContainers. Open the demo in StackBlitz to run it interactively.

Code example​

import { useRenderTracker } from 'react-perf-hooks';

type Props = {
userId: string;
filters: Record<string, string>;
};

export function UserTable({ userId, filters }: Props) {
const { count } = useRenderTracker({ userId, filters }, { name: 'UserTable', warnAt: 10 });

return <p>Render count: {count}</p>;
}

Companion article​