Navigation Tracking
Auto-capture screen transitions with Expo Router
Navigation Tracking
Ensora automatically captures every screen transition in your Expo Router app — no manual configuration required.
How It Works
The SDK subscribes to Expo Router's navigation state and fires a nav event on every pathname change:
{
"event": "nav",
"session_id": "uuid",
"pathname": "/profile/settings",
"previous_pathname": "/profile",
"timestamp": "2026-01-01T00:01:34Z"
}Setup
Navigation tracking is enabled by default when you wrap your root layout with EnsoraProvider:
import { EnsoraProvider } from '@ensora/react-native';
export default function RootLayout() {
return (
<EnsoraProvider
apiKey="your_api_key"
projectId="your_project_id"
>
<Stack />
</EnsoraProvider>
);
}Manual Screen Tracking
If you use a custom router or navigate programmatically, fire a nav event manually:
import { track } from '@ensora/react-native';
function navigateToCheckout() {
track('nav', { pathname: '/checkout', previous_pathname: '/cart' });
router.push('/checkout');
}Screen Flow Reports
From the dashboard Analytics tab, navigate to Screen Flows to see:
- Most visited screens
- Common entry and exit points
- Drop-off rates between screens
- Average time spent per screen
Funnel Analysis
Combine navigation events with custom events to build funnels:
/onboarding/step-1 → /onboarding/step-2 → /onboarding/complete → /homeBuild funnels from the Analytics → Funnels section of the dashboard.
Filtering by Screen
In the Sessions tab, filter sessions by Visited screen to find users who landed on a specific pathname.
Dynamic Routes
Expo Router dynamic segments (e.g. /product/[id]) are captured as-is, including the resolved value:
{ "pathname": "/product/42" }Group them by pattern in the dashboard using the wildcard filter: /product/*.
Next Steps
- Session Replay — watch navigation in context
- Custom Events — add events alongside navigation
- Heatmaps — combine with touch data per screen
Last updated on