Screen Tracking
Web — History API
Pass screenTracking to SunglassesProvider:
<SunglassesProvider client={client} screenTracking={{ useHistoryApi: true }}>
<App />
</SunglassesProvider>
Route changes emit $screen events automatically.
UTM capture (web)
import { captureUtmParams } from '@drakkar.software/sunglasses-react';
const client = await SunglassesCore.create({ ... });
captureUtmParams(client); // call once at startup
Reads utm_* params from window.location.search and document.referrer.
React Native — Expo Router
import { useExpoRouterUtmCapture, useExpoRouterScreenTracking } from '@drakkar.software/sunglasses-react-native';
export default function RootLayout() {
const client = useSunglasses();
useExpoRouterScreenTracking(client);
useExpoRouterUtmCapture(client); // captures on mount + re-captures on new deep links
return <Stack />;
}
React Native — React Navigation
import { useNavigationScreenTracking } from '@drakkar.software/sunglasses-react-native';
function AppNavigator() {
const client = useSunglasses();
useNavigationScreenTracking(client);
return <NavigationContainer>...</NavigationContainer>;
}
React Native — plain Linking API
import { useLinkingUtmCapture } from '@drakkar.software/sunglasses-react-native';
export default function App() {
const client = useSunglasses();
useLinkingUtmCapture(client);
return <NavigationContainer>...</NavigationContainer>;
}
You can also call captureDeepLinkUtmParams(client, url) directly if you manage deep link handling yourself.
Manual screen tracking
client.screen('Settings', { tab: 'notifications' });