Tracking Recipes
Modal Tracking
Track modal interactions to understand user engagement with dialogs, settings panels, and other overlay components.
Implementation
import { track } from "@databuddy/sdk";
import { useEffect, useRef } from "react";
export function useModalTracking(modalName: string, isOpen: boolean) {
const hasTrackedOpen = useRef(false);
useEffect(() => {
if (isOpen && !hasTrackedOpen.current) {
hasTrackedOpen.current = true;
track("modal_opened", {
modal_name: modalName,
});
} else if (!isOpen && hasTrackedOpen.current) {
hasTrackedOpen.current = false;
track("modal_closed", {
modal_name: modalName,
});
}
}, [isOpen, modalName]);
}Usage
function SettingsDialog() {
const [isOpen, setIsOpen] = useState(false);
useModalTracking("settings", isOpen);
return (
<Dialog open={isOpen} onOpenChange={setIsOpen}>
{/* Dialog content */}
</Dialog>
);
}What It Tracks
Benefits
Related
How is this guide?