diff --git a/apps/web-roo-code/src/app/blog/[slug]/page.tsx b/apps/web-roo-code/src/app/blog/[slug]/page.tsx
index bc88f81ff1..2ed25ff34b 100644
--- a/apps/web-roo-code/src/app/blog/[slug]/page.tsx
+++ b/apps/web-roo-code/src/app/blog/[slug]/page.tsx
@@ -89,7 +89,6 @@ export default async function BlogPostPage({ params }: BlogPostPageProps) {
{/* PostHog Analytics */}
- >(new Set())
+ const trackedTimeSpent = useRef(false)
const startTime = useRef(Date.now())
useEffect(() => {
@@ -74,7 +74,8 @@ export function BlogPostAnalytics({ post }: BlogPostAnalyticsProps) {
// Track time spent on page when leaving
const handleVisibilityChange = () => {
- if (document.visibilityState === "hidden") {
+ if (document.visibilityState === "hidden" && !trackedTimeSpent.current) {
+ trackedTimeSpent.current = true
const timeSpent = Date.now() - effectStartTime
trackBlogPostTimeSpent(post as BlogPost, timeSpent)
}
@@ -90,9 +91,12 @@ export function BlogPostAnalytics({ post }: BlogPostAnalyticsProps) {
window.removeEventListener("scroll", handleScroll)
document.removeEventListener("visibilitychange", handleVisibilityChange)
- // Track time spent when component unmounts
- const timeSpent = Date.now() - effectStartTime
- trackBlogPostTimeSpent(post as BlogPost, timeSpent)
+ // Track time spent when component unmounts (only if not already tracked)
+ if (!trackedTimeSpent.current) {
+ trackedTimeSpent.current = true
+ const timeSpent = Date.now() - effectStartTime
+ trackBlogPostTimeSpent(post as BlogPost, timeSpent)
+ }
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [post.slug])