SPAs report one page view
A React app loads once and then swaps views in the browser. PulsePanda tracks each in-app navigation so your analytics reflect real usage, not a single landing.
Analytics for React
PulsePanda gives your React single-page app full product analytics — events, funnels, session replay, and heatmaps — from one script tag, with client-side route changes tracked out of the box.
Why it matters
A React app loads once and then swaps views in the browser. PulsePanda tracks each in-app navigation so your analytics reflect real usage, not a single landing.
Fire custom events on the buttons and flows you care about to measure adoption of specific features and components.
Session replay captures the rendered DOM and errors so you can see the exact state that broke for a user.
Setup
PulsePanda is framework-agnostic, so the simplest install is a script tag in your HTML shell. Add it to the <head> of your entry HTML file.
Vite — index.html (or public/index.html for CRA)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<script
src="https://pulsepanda.dev/sdk.js"
data-project="YOUR_PROJECT_ID"
defer></script>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>Once loaded, call pulsepanda.track("event_name", { ...props }) from any component to record custom events and build funnels.
Workflow
Add the script once to your React project. Web analytics, autocaptured clicks, session replay, and heatmaps start collecting immediately.
Call pulsepanda.track() on key actions and pulsepanda.identify() after login to connect events, sessions, and feedback to each user.
Build funnels, watch the replays behind drop-offs, read heatmaps, and collect in-product feedback — all in one workspace.
What you get
FAQ
Yes. The SDK tracks History API navigation, so route changes from React Router, TanStack Router, or any client router are captured as page views automatically.
Both. Add the script to public/index.html for CRA or index.html for Vite. There is no build-step dependency.
After login, call pulsepanda.identify("user_id", { email, plan }) so sessions, events, and feedback connect to the same person across visits.
Related pages
Install once and connect analytics, session replay, heatmaps, funnels, and feedback in minutes.
Start for free