All files / src/components/providers RumProvider.tsx

0% Statements 0/38
100% Branches 0/0
0% Functions 0/1
0% Lines 0/38

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                                                                             
'use client';

import { useEffect } from 'react';
import { usePathname } from 'next/navigation';
import { rum } from '@/lib/observability/rum';

/**
 * RUM (Real User Monitoring) Provider
 *
 * Initializes RUM collection and tracks page views on route changes.
 * Must be placed inside a client component tree.
 *
 * RUM collects:
 * - Core Web Vitals (LCP, FID, CLS, FCP, TTFB, INP)
 * - API call performance
 * - Long tasks (>50ms)
 * - JavaScript errors
 * - Page views
 */
export function RumProvider({ children }: { children: React.ReactNode }) {
  const pathname = usePathname();

  // Initialize RUM on mount
  useEffect(() => {
    rum.init();
  }, []);

  // Track page views on route changes
  useEffect(() => {
    if (pathname) {
      rum.trackPageView(pathname);
    }
  }, [pathname]);

  return <>{children}</>;
}

export default RumProvider;