managarten/memoro/apps/mobile/features/analytics/hooks/useScreenTracking.ts
Till-JS e7f5f942f3 chore: initial commit - consolidate 4 projects into monorepo
Projects included:
- maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing)
- manacore (Expo mobile + SvelteKit web + Astro landing)
- manadeck (NestJS backend + Expo mobile + SvelteKit web)
- memoro (Expo mobile + SvelteKit web + Astro landing)

This commit preserves the current state before monorepo restructuring.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:38:24 +01:00

28 lines
945 B
TypeScript

import { useCallback } from 'react';
import { useFocusEffect } from '@react-navigation/native';
import { useAnalytics } from './useAnalytics';
/**
* Hook to track screen views when a screen comes into focus
* Uses React Navigation's focus effect to detect when screen is visible
*
* @param screenName - Name of the screen to track
* @param properties - Additional properties to include with the screen event
*
* @example
* // In your screen component:
* useScreenTracking('home_screen', { tab: 'home' });
*/
export const useScreenTracking = (screenName: string, properties?: Record<string, any>) => {
const { screen } = useAnalytics();
useFocusEffect(
useCallback(() => {
// Track screen view when screen comes into focus
screen(screenName, {
...properties,
focused_at: new Date().toISOString(),
});
}, [screenName, screen]) // Remove properties from dependencies to avoid loops
);
};