Hook Examples
Modal Tracking
Track modal interactions to understand user engagement with dialogs, settings panels, and other overlay components.
Implementation
tsx
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
tsx
function SettingsDialog() {
const [isOpen, setIsOpen] = useState(false);
useModalTracking("settings", isOpen);
return (
<Dialog open={isOpen} onOpenChange={setIsOpen}>
{/* Dialog content */}
</Dialog>
);
}What It Tracks
- Events:
modal_opened: When a modal is openedmodal_closed: When a modal is closed
- Properties:
modal_name: Identifier for the modal/dialog
Benefits
- Engagement Metrics: Understand which modals users interact with most
- User Flow: Track modal usage patterns in your application
- Feature Discovery: Identify which features users are exploring
This hook tracks both open and close events, giving you complete visibility into modal interactions.
Related
How is this guide?