27 lines
809 B
TypeScript
27 lines
809 B
TypeScript
/**
|
|||
|
|
* Writes the in-app navigation trail that funnel attribution reads.
|
||
|
|
*
|
||
|
|
* Renders nothing. It exists because document.referrer cannot answer "which
|
||
|
|
* page did they come from" in an App Router app: a soft navigation creates no
|
||
|
|
* document, so the browser never updates it. See the trail comment in
|
||
|
|
* lib/analytics.ts.
|
||
|
|
*
|
||
|
|
* Mounted once in the root layout, so every route is recorded — including the
|
||
|
|
* ones that fire no event of their own, which are still somebody else's
|
||
|
|
* previous page.
|
||
|
|
*/
|
||
|
|
'use client';
|
||
|
|
|
||
|
|
import { useEffect } from 'react';
|
||
|
|
import { usePathname } from 'next/navigation';
|
||
|
|
import { recordVisitedPath } from '@/lib/analytics';
|
||
|
|
|
||
|
|
export function RouteTrail() {
|
||
|
|
const pathname = usePathname();
|
||
|
|
|
||
|
|
useEffect(() => {
|
||
|
|
recordVisitedPath(pathname);
|
||
|
|
}, [pathname]);
|
||
|
|
|
||
|
|
return null;
|
||
|
|
}
|