SDK Reference
React / Next.js
The Databuddy React SDK provides a component for script injection and hooks for custom event tracking. Works with React 18+, Next.js 13+, and other React-based frameworks.
Installation
bun add @databuddy/sdkQuick Start
Add the Databuddy component to your root layout:
import { Databuddy } from "@databuddy/sdk/react";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<Databuddy
clientId={process.env.NEXT_PUBLIC_DATABUDDY_CLIENT_ID!}
trackWebVitals
trackErrors
/>
{children}
</body>
</html>
);
}Databuddy Component
The Databuddy component injects the tracking script and configures analytics. It renders nothing to the DOM.
Props
Tracking Features
Batching & Performance
Privacy
Full Example
import { Databuddy } from "@databuddy/sdk/react";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<Databuddy
clientId={process.env.NEXT_PUBLIC_DATABUDDY_CLIENT_ID!}
trackWebVitals
trackErrors
trackOutgoingLinks
enableBatching
batchSize={20}
disabled={process.env.NODE_ENV === "development"}
skipPatterns={["/admin/**", "/internal/*"]}
maskPatterns={["/users/*", "/orders/**"]}
/>
{children}
</body>
</html>
);
}Tracking Events
Import tracker helpers to track custom events:
import { track } from "@databuddy/sdk";
function SignupButton() {
const handleClick = () => {
track("signup_clicked", {
source: "header",
plan: "pro"
});
};
return <button onClick={handleClick}>Sign Up</button>;
}Common Patterns
import { track, trackError } from "@databuddy/sdk";
// E-commerce
track("product_viewed", {
product_id: "P12345",
category: "Electronics",
price: 299.99
});
track("purchase_completed", {
order_id: "ORD-789",
revenue: 299.99,
currency: "USD"
});
// Feature usage
track("feature_used", {
feature: "export_data",
user_tier: "premium"
});
// Error tracking
try {
await riskyOperation();
} catch (error) {
trackError(error.message, {
stack: error.stack,
context: "checkout_flow"
});
}Environment Setup
NEXT_PUBLIC_DATABUDDY_CLIENT_ID=your-client-id-hereThe component auto-detects the client ID from this environment variable.
Pages Router
For Next.js Pages Router, add to _app.tsx:
import { Databuddy } from "@databuddy/sdk/react";
import type { AppProps } from "next/app";
export default function App({ Component, pageProps }: AppProps) {
return (
<>
<Databuddy
clientId={process.env.NEXT_PUBLIC_DATABUDDY_CLIENT_ID!}
trackWebVitals
/>
<Component {...pageProps} />
</>
);
}Development Mode
Disable tracking during development:
<Databuddy
clientId={process.env.NEXT_PUBLIC_DATABUDDY_CLIENT_ID!}
disabled={process.env.NODE_ENV === "development"}
/>Data Attributes
Enable automatic tracking of elements with data-track attributes:
<Databuddy
clientId={process.env.NEXT_PUBLIC_DATABUDDY_CLIENT_ID!}
trackAttributes
/>
{/* Automatically tracks button_click event */}
<button data-track="signup_clicked" data-plan="premium">
Sign Up
</button>Related
How is this guide?