Skip to main content

Basic Usage

Get a stable function for tracking events:
Simple, clean, and efficient.

Why useTrack?

In React, functions created in components get recreated every render. This causes problems:
useTrack returns a stable function reference that never changes, preventing unnecessary re-renders.

The useCallback Explanation

In React, useCallback memoizes functions so they don’t get recreated every render:
useTrack already uses useCallback internally, so you get a stable track function automatically.

Tracking Events

Track with event name and properties:

Flush Option

Force immediate sending for critical events:

Passing to Children

Safe to pass down to child components:
Since track is stable, child components won’t re-render unnecessarily.

Common Patterns

Button Click

Form Submission

Page View

Since track is stable, this effect only runs once when the component mounts.

Feature Usage

With Template Events

Access template methods through the client:
Or use useTrack for custom events:

Performance Tips

The hook is already optimized, but here are tips for best results: 1. Don’t create track calls in render:
2. Combine with useCallback for complex handlers:

Next Steps

Event Tracking

Learn about event tracking

useGrainAnalytics

Access full client API

Template Events

Use pre-built event methods