Simple React Render Tracker
A powerful and lightweight tool for tracking and debugging React component renders. Monitor render counts, visualize render frequency with heatmaps, and get notifications for excessive renders.
Features
- 🔍 Track component render counts
- 📊 Visual heatmap of render frequency
- ⚡ Performance impact warnings
- 🎯 Configurable thresholds
- 🪝 Hooks and HOC APIs
- 📱 Production-ready with zero impact when disabled
Installation
npm install simple-react-render-tracker
yarn add simple-react-render-tracker
pnpm add simple-react-render-tracker
Quick Start
- Wrap your app with the TrackerProvider:
import { TrackerProvider } from 'simple-react-render-tracker';
function App() {
return (
<TrackerProvider options={{ threshold: 10, showHeatmap: true }}>
<YourApp />
</TrackerProvider>
);
}
- Track renders using either the hook or HOC:
import { useRenderTracker } from 'simple-react-render-tracker';
function MyComponent(props) {
useRenderTracker('MyComponent', props);
return <div>{props.content}</div>;
}
import { withRenderTracker } from 'simple-react-render-tracker';
function MyComponent(props) {
return <div>{props.content}</div>;
}
export default withRenderTracker(MyComponent);
- Add the heatmap visualization (optional):
import { RenderHeatmap } from 'simple-react-render-tracker';
function App() {
return (
<TrackerProvider options={{ showHeatmap: true }}>
<YourApp />
<RenderHeatmap />
</TrackerProvider>
);
}
Configuration Options
Option | Type | Default | Description |
---|
threshold | number | 10 | Maximum renders before triggering a warning |
showHeatmap | boolean | false | Show/hide the render heatmap |
notify | function | console.warn | Custom notification handler |
const options = {
threshold: 15,
showHeatmap: true,
notify: (message) => toast.warning(message),
};
<TrackerProvider options={options}>
<App />
</TrackerProvider>
API Reference
useRenderTracker
useRenderTracker(componentName: string, props: object)
A hook to track renders in functional components.
withRenderTracker
withRenderTracker(Component: React.ComponentType, componentName?: string)
A Higher-Order Component (HOC) to track renders in class or functional components.
RenderHeatmap
A component that visualizes render frequency using a color-coded heatmap.
TrackerProvider
The context provider that manages render tracking state and configuration.
Best Practices
- Development Only: Disable tracking in production
const showTracker = process.env.NODE_ENV === 'development';
function App() {
if (!showTracker) return <YourApp />;
return (
<TrackerProvider>
<YourApp />
</TrackerProvider>
);
}
- Custom Notifications: Integrate with your notification system
const options = {
notify: (message) => {
errorTracker.log(message);
toast.warning(message);
},
};
- Selective Tracking: Only track components you're investigating
const needsTracking = ['Header', 'UserProfile', 'Dashboard'];
function MyComponent({ name, ...props }) {
if (needsTracking.includes(name)) {
useRenderTracker(name, props);
}
}
License
MIT © Mamadou Siradiou Diallo