| name | navigation-latency |
| description | Measure time from navigation tap to screen fully loaded and interactive. Use when tracking screen transitions, deep links, or tab switches. |
| triggers | ["deep link performance","measure TTI","screen load time","slow screen navigation","tab switch latency","track screen transitions"] |
| priority | 2 |
Navigation Latency
Time from tap to destination screen interactive (TTI).
Phases
TAP → TRANSITION → VIEW_INIT → DATA_LOAD → INTERACTIVE
|_____________________________________________|
Navigation Latency
When to Use
- Tab bar taps
- List item → detail screen
- Deep link → target screen
- Any screen-to-screen transition
Key Thresholds
| Rating | Duration |
|---|
| Good | <400ms |
| Acceptable | <1s |
| Poor | >1s |
Measurement Points
onNavigationStart - user taps (source screen)
onViewAppear - destination view visible
onContentReady - data loaded, interactive
Implementation
See references/ui-performance.md (Navigation Latency section) for:
- iOS: NavigationLatencyTracker with os_signpost
- Android: Fragment/Activity lifecycle hooks
- React Native: React Navigation listeners
Common Mistakes
- Measuring only view appear (missing data load)
- Not correlating source → destination
- Ignoring warm vs cold screen loads
Related Skills
- See
skills/interaction-latency for button/tap response times (vs full screen loads)
- Combine with
skills/user-journey-tracking to correlate navigation with user intent